AccessからSQLServerへ数千件の追加処理に数分かかっています。
この時進捗状況もわからず、時間の経過によりアプリケーションは応答なしの表示になってしまいます。
これを回避させる為、進捗状況がわかるように表示機能を追加しました。
不具合や今後のメンテナンスの事を考慮し、プログレスバーのコントロールを使用せずに単純に処理件数のカウントアップのみとしました。
搭載方法
例えば、以下のように1000件のデータを追加するとします。
For i = 1 To 1000
ラベル.Caption = i
str_SQL = “INSERT INTO Aテーブル・・・”
db.Execute str_SQLNext i
上記のコードで実行するとラベル.Captionは1~1000まで変化しますが、画面表示は1000件の追加が完了するまで画面更新されず、処理完了後に【1000】が表示されます。
解決策は強制的に画面更新を行う為、以下のようにDoEventsを入れてイベント発生させます。
For i = 1 To 1000
ラベル.Caption = i
DoEvents
str_SQL = “INSERT INTO Aテーブル・・・”
db.Execute str_SQLNext i
まとめ
以上で追加処理の進捗具合の表示ができるようになりました。
時間の長い処理については、このように画面表示で伝える方法は比較的有効で、応用すると他にもいろいろな見せ方に使えると思います。
コメント