サブフォームに表示するデータを簡単に切り替える方法

LINEで送る
Pocket

サブフォームに表示するデータを簡単に切り替える方法

 

みなさん、こんにちは♪つむぎです。(*^_^*)
ひさびさの更新になったので、ひさびさの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」のオプションボタンを切り替えると、表示されるデータが切り替わるようになりました♪

 

以上、「サブフォームに表示するデータを簡単に切り替える方法」のご紹介でした♪

 

LINEで送る
Pocket

PAGE TOP