- 締切済み
プログレスバーで
VB6.0 SQL SERVER WinXPです。 UPDATEの処理の時に進行状況を表示したいのですが うまく動かずバーが真っ白のままです。 教えてください。 lCount = pbAdo.RsRecordCount(rc) With pvBase If rc.EOF = False Then picBar.Width = 0 labCount.Caption = "" labCount.Visible = True End If If rc.RecordCount Then rc.MoveFirst Do While Not rc.EOF sSQL = " UPDATE m_zaiko SET " sSQL = sSQL & " 実在庫数=" & .CvtSQL(dblZaikoSuu, CVT_DBL) sSQL = sSQL & " WHERE " sSQL = sSQL & " 品番=" & .CvtSQL(strHinban, CVT_STR) sSQL, lRet, adExecuteNoRecords + adCmdText picBar.Width = (picProgress.Width / lCount) * i labCount.Caption = CStr(i) & "/" & CStr(lCount) rc.MoveNext i = i + 1 DoEvents Loop Set rc = Nothing End With
- みんなの回答 (5)
- 専門家の回答
みんなの回答
s_husky です。 SQL文と実行文については、全く、私は理解できませんでした。 ????と書いている理由です。 「保存できない」は、その辺りかもです。
- o_chi_chi
- ベストアンサー率45% (131/287)
保存失敗はSQL文に問題があるのではないでしょうか。 まず下記のようにしてプログレスバーの部分のみ テストしてはどうでしょう。 --- lngRC = rc.RecordCount For i = 1 To lngRC picBar.Width = (picProgress.Width / lCount) * i labCount.Caption = CStr(i) & "/" & CStr(lCount) DoEvents Next
- o_chi_chi
- ベストアンサー率45% (131/287)
プログラムをよく確認していませんでした。 DoEvents ちゃんとLoopの前に入っていましたね。 プログレスバーはCommon Controlsを使用せず picのWidthで経過を表示しようとしていると 考えてよろしいでしょうか。 picBar.Width = (picProgress.Width / lCount) * i picProgressのWidthはpicBarのWidthの最大値に なっていますか?
スーツのデザイナーでプログラマではありません。 よって、チクーッと書き換えて検討してみました。 ・DoEvent は、一応、存在するので picBar.Width の値設定が臭いと思います。 ・picBar.Refresh は、必要ないと思いますが。(試していないので確信はありません!) ・ループの回数が決まっているので For-Next 文が確実かと! ・エラートラップが無さそうなのが気になります。 lCount = pbAdo.RsRecordCount(rc) bWidth = picProgress.Width / lCount ' ************************************* Debug.print bWidth ’ bWidthの確認 ' ************************************* picBar.Width = 0 labCount.Caption = "" labCount.Visible = True If lCount > 0 Then ' ========== ’ Brgin With ' ---------- With pvBase rc.MoveFirst For I = 1 To lCount sSQL = " UPDATE m_zaiko SET " & _ " 実在庫数=" & .CvtSQL(dblZaikoSuu, CVT_DBL) & _ " WHERE " " 品番=" & .CvtSQL(strHinban, CVT_STR) ????? sSQL, lRet, adExecuteNoRecords + adCmdText ' ' picBar 更新 ' picBar.Width = bWidth * I labCount.Caption = CStr(I) & "/" & CStr(lCount) DoEvents rc.MoveNext Next I ' --------- ’ End With ' ========= End If
補足
やってみましたが 「保存失敗」になってしまいます。
- o_chi_chi
- ベストアンサー率45% (131/287)
picBar.Width = (picProgress.Width / lCount) * i の後に DoEvents を入れてみてください。
補足
やってみましたが「保存失敗」になってしまいました。
補足
はい、なっています。