今日はマイクロソフト・アクセスのネタです。
アクセスのすごいところって、大量のレコードをほぼ一瞬で処理してしまうところですよね。
しかし、めっちゃ大量のレコードを更新するときなど、どうしても時間がかかってしまうときがあります。
こんなとき、処理の進み具合が気になりませんか?
「待つ」という動作は、意外とエネルギーがいるものです。あと何分待てば良いかどうかが分かるか分からないかで、心の持ちようが変わってきます。
特に自分が書いたコードは、ちゃんと進んでいるのか、止まっているのか不安になります。
そこで和休は、時間のかかる処理を行うコードを書くときは、進み具合が分かるようにしています。
テキストボックスを使う方法
最初に紹介する方法は、テキストボックスを使う方法です。
こんなフォームを用意しました。
ボタンが一つと、テキストボックスが一つです。
ボタンの名前は、「btn_実行」、テキストボックスの名前は、「txt_進行状況」です。
ボタンを押すと、テキストボックスに進み具合を表示する仕組みです。
名前 | txt_進行状況 |
書式 | 0% |
幅 | 14cm |
高さ | 0.5cm |
使用可能 | いいえ |
編集ロック | はい |
では、btn_実行のクリック時イベントに、次のコードを割り当ててください。
Private Sub btn_実行_Click() Dim syori As Long '現在処理した件数を格納 Dim kensu As Long '処理する件数を格納 '処理件数を50件と仮定 kensu = 50 For syori = 1 To kensu 'txt_進行状況に処理した件数を代入 Me.txt_進行状況 = syori / kensu MsgBox syori Next syori Me.txt_進行状況 = Null End Sub
実行ボタンを押して、コードを実行してみましょう。
50回メッセージボックスが表示され、テキストボックスには、メッセージボックスが表示された回数÷50回の割合をパーセント表示します。
メッセージボックスにループ回数が表示され、テキストボックスに2%が表示されました。
10回繰り返したところです。
メッセージボックスに10が表示され、テキストボックスに20%が表示されました。
50回繰り返したところです。
メッセージボックスに50が表示され、テキストボックスに100%が表示されました。
こんな感じで進行状況を表現します。
バーグラフを組み合わせる
でも%表示だけでは味気ないですね。
では、ウィンドウズのファイルコピーなんかでおなじみの、バーグラフを組み合わせてみましょう。
先ほどのフォームに、ボックスオブジェクトを配置します。
名前 | box_進行状況 |
可視 | いいえ |
幅 | 13.7cm |
高さ | 0.4cm |
背景スタイル | 普通 |
背景色 | #C0504D |
境界線スタイル | 透明 |
テキストボックス「txt_進行状況」についても、プロパティに一部変更を加えます。
背景スタイル | 透明 |
「txt_進行状況」と「box_進行状況」を重ねます。
「txt_進行状況」を選択し、順序を「最前面へ移動」を押してください。
順序とは、オブジェクトの重なる順番のことです。「最前面へ移動」を押すと、その名の通り最前面にオブジェクトが配置されます。
つまり、「box_進行状況」の上に「txt_進行状況」が乗っかっている状態です。
では、btn_実行のクリック時イベントに、次のコードを割り当ててください。
Private Sub btn_実行_Click() Dim syori As Long '現在処理した件数を格納 Dim kensu As Long '処理する件数を格納 Dim boxwidth As Long '処理件数を50件と仮定 kensu = 50 'box_進行状況の幅を設定する '現在の幅を取得し、変数 boxwidth に格納 boxwidth = Me.box_進行状況.Width 'box_進行状況の幅を0にする Me.box_進行状況.Width = 0 'box_進行状況を表示する Me.box_進行状況.Visible = True For syori = 1 To kensu 'txt_進行状況に処理した件数を代入 Me.txt_進行状況 = syori / kensu ''box_進行状況の幅を増やす Me.box_進行状況.Width = boxwidth * syori / kensu MsgBox syori Next syori Me.txt_進行状況 = Null 'box_進行状況を非表示 Me.box_進行状況.Visible = False End Sub
フォームビューに切り替えて、実行ボタンを押してください。
メッセージボックスにループ回数が表示され、テキストボックスに2%が表示されるところは先ほどと同様。さらにバーグラフが表示されました。
10回繰り返したところです。
メッセージボックスに10が表示され、テキストボックスに20%が表示されました。
50回繰り返したところです。
メッセージボックスに50が表示され、テキストボックスに100%が表示されました。
バーグラフはいっぱいまで伸びています。
これなら処理の進み具合が分かりますね。
(b^ー°)
次回、アクセスの機能を使って、ステータスバー領域へのメッセージの表示と進行状況メーターの使い方をご紹介します。
コメントをどうぞ!