#12 受取金額欄の追加とフォーカスの移動

これはパソコンレジならではの機能追加です。売上金額に対して顧客が実際に出した金額を入力するための欄を追加します。

まず、次のような手順で、受取金額入力用のテキストボックスをフォームに追加します。

  1. 「frm売上伝票入力_sub」フォームのデザインビューを開きます。

  2. フォームの「フォームヘッダ」セクションにラベルとテキストボックスコントロールを挿入します。
    ここではスペースの都合上、「原価合計」と「粗利額合計」の欄を削除し、その他のコントロールの位置も調整していますが、もし必要であればフォーム幅を広げるなどしてそのスペースを確保してください。また、コントロールの新規挿入ではなく、既存の「原価合計」を流用したり複製したりすることもできます。

  3. いっしょに挿入されたラベルコントロールの「標題」プロパティを"受取金額"とします。
    受取金額入力用のコントロールを挿入

  4. その受取金額入力用のテキストボックスにいくつかの設定を行います。
    • 名前: txt受取金額
    • 書式: \\#,##0;"-\"#,##0
    • 既存コントロールを複製した場合には、使用可能→"はい"、編集ロック→"いいえ"

  5. 最後にフォームを保存します。

このテキストボックスに関しては、とりあえず金額を入力できればよいわけですが(おつりの計算はあとで説明します)、これまでの考え方通り、マウスなどを使わずにフォーカスを移動させるようにしなければなりません。そこで、#11で作成した、全商品入力完了の「F3」キーにそのフォーカス移動も含めるようにします。フォームのキークリック時イベントプロシージャを次のように変更します。太字部分が今回追加したコードです。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'フォームのキークリック時

  If KeyCode = vbKeyF3 Then
    '[F3]キーが押されたとき
    '編集中のレコードを強制的に書き込む
    DoCmd.RunCommand acCmdSaveRecord
    '受取金額欄にフォーカスを移動
    Me!txt受取金額.SetFocus
  End If

  (以下は#10と同様)

End Sub

F3キーを押したときの状態
F3キーを押したときの状態


ここでもう1点、変更すべきところがあります。メインフォームである「frm売上伝票入力」のモジュールにある「cbfInitData」プロシージャに「受取金額」テキストボックスの初期化処理を追加しなければなりません。このテキストボックスは非連結ですので、次伝票に移ってテーブルが空になっても、前に入力された値が残ってしまいます。そこで、全体の初期化処理を行うcbfInitDataプロシージャに1行のコードを追加し、その値をクリアするようにします。

そのコードは次のようになります(一部抜粋)。

  'サブフォームの商品コードにフォーカスを初期移動
  With Me!frm売上伝票入力_sub
    .SetFocus
    !商品コード.SetFocus
    '受取金額をクリア
    !txt受取金額 = Null
  End With
  
  DoCmd.Echo True

Exit_Here:
  On Error Resume Next

※もし必要であれば、受取金額をテーブルのフィールドとして追加し、データベースに保存してもよいでしょう。その場合にはこの初期化処理は不要ですが、別途テーブルや関連クエリも変更する必要があります。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved