• 締切
  • すぐに回答を!

プログレスバーで

  • 質問No.2256657
  • 閲覧数221
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 15% (25/159)

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件)

  • 回答No.5
s_husky です。

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

ベストアンサー率 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
  • 回答No.3

ベストアンサー率 45% (131/287)

プログラムをよく確認していませんでした。
DoEvents
ちゃんとLoopの前に入っていましたね。

プログレスバーはCommon Controlsを使用せず
picのWidthで経過を表示しようとしていると
考えてよろしいでしょうか。

picBar.Width = (picProgress.Width / lCount) * i

picProgressのWidthはpicBarのWidthの最大値に
なっていますか?
補足コメント
aki08102001

お礼率 15% (25/159)

はい、なっています。
投稿日時:2006/07/05 13:52
  • 回答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

お礼率 15% (25/159)

やってみましたが
「保存失敗」になってしまいます。
投稿日時:2006/07/05 13:53
  • 回答No.1

ベストアンサー率 45% (131/287)

picBar.Width = (picProgress.Width / lCount) * i
の後に
DoEvents
を入れてみてください。
補足コメント
aki08102001

お礼率 15% (25/159)

やってみましたが「保存失敗」になってしまいました。
投稿日時:2006/07/05 12:17
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ