0

テーブルを削除して挿入している間、進行状況バーをユーザーに表示したいと思います。このコード ブロックを使用していますが、フォームにプログレスバーが表示されません。この問題を解決するのを手伝ってくれませんか?

SysCmd acSysCmdInitMeter, "Updating: ", 1000
For Counter = 1 To 1000
    SysCmd acSysCmdUpdateMeter, Counter

    On Error GoTo PROC_ERR
  Set db = CurrentDb
   ssql = "DELETE FROM Test_Table"
   db.Execute ssql, dbFailOnError

  ssql = "INSERT INTO Test_Table SELECT DISTINCT tb_KonzeptDaten.DFCC,  " _
  & "tb_KonzeptDaten.OBD_Code AS Konzept_Obd,tb_KonzeptDaten.DFC " _
  & "FROM tb_KonzeptDaten"
  db.Execute ssql, dbFailOnError
  Msgbox "Die Tabelle wurde erfolgreich aktualisiert"
ExitSub:
'Clean  Up Code
Exit Sub
PROC_ERR:
Msgbox Err.Description
GoTo ExitSub:

Next Counter
SysCmd acSysCmdRemoveMeter

ありがとうございました

編集: 質問をもっと簡単にするべきだと思います。ステータスバーにプログレスバーを表示したいので、テスト用にこのコードブロックを書きました:

Private Sub Befehl80_Click()
 Dim Progress_Amount As Integer, RetVal As Variant
  RetVal = SysCmd(acSysCmdInitMeter, "Reading Data...", 2000)
  For Progress_Amount = 1 To 2000
  RetVal = SysCmd(acSysCmdUpdateMeter, Progress_Amount)
  Next Progress_Amount 
End Sub

このボタンをクリックするとステータスバーが表示されますが、残念ながらこのボタンをクリックしても表示されませんが、このアクセスプロジェクトを閉じると、このステータスバーが表示されます。この問題を解決するアイデアはありますか?

4

1 に答える 1

1

これは画面のリフレッシュの問題です。コードの実行が完了するまで、画面は更新されません。これを修正するには、DoEvents コマンドを使用して、コードの実行中に画面を更新できるようにする必要があります。

SysCmd acSysCmdInitMeter, "Updating: ", 1000
For Counter = 1 To 1000
    SysCmd acSysCmdUpdateMeter, Counter

    ' Put your DoEvents here, so the screen has time to refresh
    DoEvents

    On Error GoTo PROC_ERR
  Set db = CurrentDb
   ssql = "DELETE FROM Test_Table"
   db.Execute ssql, dbFailOnError

  ssql = "INSERT INTO Test_Table SELECT DISTINCT tb_KonzeptDaten.DFCC,  " _
  & "tb_KonzeptDaten.OBD_Code AS Konzept_Obd,tb_KonzeptDaten.DFC " _
  & "FROM tb_KonzeptDaten"
  db.Execute ssql, dbFailOnError
  Msgbox "Die Tabelle wurde erfolgreich aktualisiert"
ExitSub:
'Clean  Up Code
Exit Sub
PROC_ERR:
Msgbox Err.Description
GoTo ExitSub:

Next Counter
SysCmd acSysCmdRemoveMeter
于 2016-03-22T18:25:22.340 に答える