#11 | 合計金額の集計表示 | ||
購入したすべての商品の合計金額は、これまでも自動的に計算・表示されるようになっています。 ただし、今回注意しなければならないのは、その集計表示のタイミングです。 Accessの仕様として、レコード(ここでは商品ごとのレコード)に対して保存操作が行われたときにはじめて、そこで入力された値が確定します。見た目には計算可能な状態ではあっても、編集中のレコードが確定するまでは、複数レコード間を通しての合計値などの計算は行われません。 レコードの保存操作には、
そこでここでは、すべての商品の入力が完了したことを知らせるため、その時点で『ファンクションキーを押してもらう』という仕様にすることにします。 次のようなコードをフォーム「frm売上伝票入力_sub」のモジュールに追加します。これによってファンクションキー「F3」を押すことでカレントレコードが強制的に保存され、それに連動して「合計金額」が再計算されます。ファクションキーは基本的には何でもよいのですが、Accessの機能がすでに割り当てられているキーは動作が不確実なため、それ以外のファンクションキーを割り当てるようにします。また、実際にはこのファンクションキーが画面上のどこにカーソルがある状態で押されるか分からないのですが、Accessの性質上、メインフォーム上のコントロールにフォーカスがある状態ではすでにサブフォームのレコードは必ず保存されているので、ここではメインフォームではなくサブフォームにコードを書くことで機能を満たすことができます。なおこのプログラムの動作には、#10でも説明した「キーイベント取得」プロパティが"はい"になっていることが前提となります。 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'フォームのキークリック時 If KeyCode = vbKeyF3 Then '[F3]キーが押されたとき '編集中のレコードを強制的に書き込む DoCmd.RunCommand acCmdSaveRecord End If (以下は#10と同様) End Sub 商品コード入力直後の状態(合計は未計算) ファンクションキーを押した後の状態(レコードが保存され合計が再計算されています) |
|||
|
Copyright © T'sWare All rights reserved |