プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (5件)

s_husky です。



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

保存失敗はSQL文に問題があるのではないでしょうか。


まず下記のようにしてプログレスバーの部分のみ
テストしてはどうでしょう。
---
lngRC = rc.RecordCount
For i = 1 To lngRC
picBar.Width = (picProgress.Width / lCount) * i
labCount.Caption = CStr(i) & "/" & CStr(lCount)
DoEvents
Next
    • good
    • 0

プログラムをよく確認していませんでした。


DoEvents
ちゃんとLoopの前に入っていましたね。

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

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

picProgressのWidthはpicBarのWidthの最大値に
なっていますか?

この回答への補足

はい、なっています。

補足日時:2006/07/05 13:52
    • good
    • 0

スーツのデザイナーでプログラマではありません。


よって、チクーッと書き換えて検討してみました。

・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

この回答への補足

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

補足日時:2006/07/05 13:53
    • good
    • 0

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


の後に
DoEvents
を入れてみてください。

この回答への補足

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

補足日時:2006/07/05 12:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!