• 締切済み

プログレスバーで

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

みんなの回答

noname#22222
noname#22222
回答No.5

s_husky です。 SQL文と実行文については、全く、私は理解できませんでした。 ????と書いている理由です。 「保存できない」は、その辺りかもです。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.4

保存失敗は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)
回答No.3

プログラムをよく確認していませんでした。 DoEvents ちゃんとLoopの前に入っていましたね。 プログレスバーはCommon Controlsを使用せず picのWidthで経過を表示しようとしていると 考えてよろしいでしょうか。 picBar.Width = (picProgress.Width / lCount) * i picProgressのWidthはpicBarのWidthの最大値に なっていますか?

aki08102001
質問者

補足

はい、なっています。

noname#22222
noname#22222
回答No.2

スーツのデザイナーでプログラマではありません。 よって、チクーッと書き換えて検討してみました。 ・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

aki08102001
質問者

補足

やってみましたが 「保存失敗」になってしまいます。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

picBar.Width = (picProgress.Width / lCount) * i の後に DoEvents を入れてみてください。

aki08102001
質問者

補足

やってみましたが「保存失敗」になってしまいました。