データを帳票フォームで縦方向に入力する。
投稿日: 
更新日:
こちらは、Accessで作成した、入力用のフォームサンプルです。サブフォームに明細データを入力するようにしていますが、今回は、3つあるテキストボックスをそれぞれ縦方向に入力していけるように設定していきます。例えば、先に「担当ID」を10件、縦に入力して、その次に「金額」を縦に10件入力していくというときなどです。
例えば、毎月送られてくる、運送会社の請求書をもとに、担当者や地域分類などを請求運賃に割り当てて、データ管理するときなど、シンプルだけど、量の多い入力をしていくときなどに有効なフォームです。
作成の流れ
デザインビュー
こちらが、そのフォームをデザインビューで開いたところです。
メインフォーム
- フォームヘッダーに、各ラベルを配置しています。
- 詳細セクションの最上部に各テキストボックスを配置しています。それぞれのコントロールソースにメインテーブルのフィールドを充てています。
- その下にサブフォームを配置しています。
- 詳細セクションの最下部に各コマンドボタンを配置しています。
サブフォーム
- フォームヘッダーに、入力するフィールドに対応するコマンドボタンを配置しています。
- その下に各ラベルを配置しています。
- 詳細セクション各テキストボックスを配置しています。それぞれのコントロールソースにサブテーブルのフィールドを充てています。
- フォームフッターに金額の合計を表示するテキストボックスとラベルを配置しています。
コードの記述
では、サブフォームのコマンドボタンクリック時イベントにコードを書いていきます。
- コマンドボタン[cmd担当]のクリック時にコードを書きます。
- テキストボックス[txt担当]のタブストップをtrueにします。
- それ以外のテキストボックスのタブストップはFalseにします。
- SetFocusメソッドで、[txt担当]にカーソルを合わせるようにします。最初のレコードにカーソルを合わせます。
- DoCmd.GoToRecordメソッドで、最初のレコードにカーソルを合わせます。
Private Sub cmd担当_Click()
Me.txt担当.TabStop = True
Me.txt金額.TabStop = False
Me.txt地域.TabStop = False
Me.txt担当.SetFocus
DoCmd.GoToRecord , , acFirst
End Sub
同様に、コマンドボタン[cmd金額]と[cmd地域]にもコードを書きます。
Private Sub cmd金額_Click()
Me.txt担当.TabStop = False
Me.txt金額.TabStop = True
Me.txt地域.TabStop = False
Me.txt金額.SetFocus
DoCmd.GoToRecord , , acFirst
End Sub
Private Sub cmd地域_Click()
Me.txt担当.TabStop = False
Me.txt金額.TabStop = False
Me.txt地域.TabStop = True
Me.txt地域.SetFocus
DoCmd.GoToRecord , , acFirst
End Sub
メインフォーム読み込み時に、新しいレコードに移動するようにコードを書きます。
- DoCmd.GoToRecordメソッドで、新規のレコードに移動します。
- SetFocusメソッドで、最初に入力するコンボボックス[業者ID]にカーソルを合わせます。
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
Me.業者ID.SetFocus
End Sub
テキストボックス[txt日付]の入力を終えたら、サブフォームに移動します。(フォーカス喪失後イベント)
- サブフォームコントロール[sub]にフォーカスを合わせます。
- [cmd担当]にカーソルを合わせます。
Private Sub txt日付_LostFocus()
Me.sub.SetFocus
Me.sub.Form.cmd担当.SetFocus
End Sub
使い方
サブフォームの明細を入力するときは、それぞれのコマンドボタンをクリックしてから、入力するようにします。
コメントフィード
トラックバックURL : https://gyoumuka.cyou/wp-trackback.php?p=2855