みなさん、こんにちは♪つむぎです。(*^_^*)
ひさびさの更新になったので、ひさびさのAccessネタなどを。
ある案件で請求データを一覧で確認し、条件ごとにデータを切り替えて「請求書&納品書発行」「請求書(控)発行」「請求書データをExcelに出力」する機能を作りました。
かなり使える機能になったので、少しずつご紹介していきたいと思います。
まずは、Accessで「サブフォームに表示するデータを簡単に切り替える方法」をご紹介します。
[前提条件]
・請求書データ(「請求テーブル」など)が、すでに登録されているものとします。
・「請求データ一覧」フォームは、非連結フォームで作成されているものとします。
・[表示データ]の「すべて」を選んだ時は、サブフォームに「請求書データすべてを表示」、「A請求書」~「F請求書」を選んだ時は「請求書データ内のそれぞれの条件にあったデータを表示」します。
[作業手順]
①「すべて」と「A請求書」~「F請求書」の元データになるクエリを作成してください。
「すべて」と「A請求書」~「F請求書」の元データになるクエリに出力される項目は、すべて同じ項目を出力します。
※出力される項目を一致させておかないと、データを切り替えた時、対応できない項目が「#NAME?」と表示されてしまいます。
わたしはこんな感じで、クエリの名前をつけました。
「すべて」用→qry_請求ALL
「A請求書」用→qry_請求A
「B請求書」用→qry_請求B
「C請求書」用→qry_請求C
「D請求書」用→qry_請求D
「E請求書」用→qry_請求E
「F請求書」用→qry_請求F
②「すべて」用→qry_請求ALLをもとにしたフォームを作成し、「請求データ一覧」フォームにサブフォームとして配置します。
サブフォーム制作時のフォームのレイアウトは、「データシート」にしておくと便利です。
サブフォームの名前は、「請求明細」としました。
③データを切り替えるときに使う連結オブジェクトフレームの名前は、「frmDataMode」としました。
「frmDataMode」内の「すべて」と「A請求書」~「F請求書」のオプションボタンのオプション値は、0から6の値が設定されています。
※「すべて」→オプション値は0
④「請求データ一覧」フォームの「開く時イベント」に、下記のプログラムを記述します。
’「請求データ一覧」フォームを開いた時、表示データで「すべて」が選ばれている状態にする Private Sub Form_Open(Cancel As Integer) Me.frmDataMode = 0 End Sub
⑤連結オブジェクトフレーム「frmDataMode」の「更新後処理イベント」に、下記のプログラムを記述します。
Private Sub frmDataMode_AfterUpdate() 'レコードソースを切り替え(レコードソースはSQLを記述してもOK!) Select Case Me.frmDataMode Case 0 Me.請求明細.Form.RecordSource = "qry_請求ALL" Case 1 Me.請求明細.Form.RecordSource = "qry_請求A" Case 2 Me.請求明細.Form.RecordSource = "qry_請求B" Case 3 Me.請求明細.Form.RecordSource = "qry_請求C" Case 4 Me.請求明細.Form.RecordSource = "qry_請求D" Case 5 Me.請求明細.Form.RecordSource = "qry_請求E" Case 6 Me.請求明細.Form.RecordSource = "qry_請求F" End Select End Sub
⑥連結オブジェクトフレーム「frmDataMode」のオプションボタンを切り替えると、表示されるデータが切り替わるようになりました♪
以上、「サブフォームに表示するデータを簡単に切り替える方法」のご紹介でした♪