期間抽出方法-条件設定フォームとクエリによる抽出-

TIPSメインへ戻る

概要

日付型フィールド(契約日など)を持っているフォームにおいて、特定期間のレコードのみを抽出する方法です。
期間設定には専用フォームを設け、 入力された条件に合うレコードのクエリを作成し、フォームのレコードソースを切り換えて抽出します。
次の図は仕組みのイメージです。

    (ポイント)
  • 条件設定フォームを使う。
  • 抽出条件を入れたクエリを作成し、メインフォームのレコードソースにする。
  • レコードソースの入れ替えをする。

作成手順

備品管理のシステムをモデルにした使用例です。

  1. メインとなるリストフォーム
    ・フォームの名前:[F_備品リスト]  レコードソース:[T_備品マスタ]
    ・表示フィールドは[code番号][品名][型番][取得日]の4フィールドとなっています。
    ・抽出は[取得日]の特定期間(オレンジ枠)にします。

    ・フッタ部にコマンドボタン「抽出」1と「抽出解除」2を設置します。
    「抽出」ボタンの名前:[Cmd_抽出]
    「抽出解除」ボタンの名前:[Cmd_抽出解除]

  2. 期間設定用のフォームの作成
    ①非連結フォームを作成します。フォーム上に二つのテキストボックスと二つのコマンドボタンを設置し、それぞれ次の名前にします。
    テキストボックス1 名前:[Txt_開始日付] 書式:日付 (S)
    テキストボックス2 名前:[Txt_終了日付] 書式:日付 (S)
     コマンドボタン3 名前:[Cmd_実行]
     コマンドボタン4 名前:[Cmd_閉じる]

    ④フォーム名:[F_期間設定]にして保存します。


  3. クエリーの作成
    抽出用のクエリを作成します。メインフォームのレコードソースとして使用するものです。
    ①テーブル[T_備品マスタ]から[code番号][品名][型番][取得日]の4フィールドを取り出します。
    ②抽出フィールドに期間設定フォームの日付を参照する式を入れます。
    式(オレンジ枠)の内容

    Between [forms]![F_期間設定]![txt_開始日付] And [forms]![F_期間設定]![txt_終了日付]


    ③クエリの名前を[Q_期間抽出]として保存します。
  4. コマンドボタンのプロシージャ割り当て
    ①メインフォームのコマンドボタン[Cmd_抽出]
    役割は期間設定用フォームの表示です。また、レコードソースを[Q_期間抽出]に切り替えも行わせます。イベントはクリック時。
    プロシージャの内容

    Private Sub Cmd_抽出_Click()
     DoCmd.OpenForm "F_期間設定"
     Me.RecordSource = "Q_期間抽出"
    End Sub

    ②メインフォームのコマンドボタン[Cmd_抽出解除]
    役割は、レコードソースを元の[T_備品マスタ]に切り替えることです。イベントはクリック時。
    プロシージャの内容

    Private Sub Cmd_抽出解除_Click()
     Me.RecordSource = "T_備品マスタ"
    End Sub

    ③期間設定用フォームのコマンドボタン[Cmd_実行]
    役割は、メインフォームのレコードソースをメインフォームの再クエリです。イベントはクリック時。
    プロシージャの内容

    Private Sub Cmd_実行_Click()
    Forms!F_備品リスト.Requery
    End Sub

    ④期間設定用フォームのコマンドボタン[Cmd_閉じる]
    役割は、フォームの閉じることです。イベントはクリック時。
    プロシージャの内容

    Private Sub Cmd_閉じる_Click()
     DoCmd.Close
    End Sub

実施結果

[F_備品リスト]の[抽出ボタン]をクリックします。[F_期間設定]フォームが 表示されます。開始日付と終了日付を入力して実行ボタンをクリックします。


該当期間のレコードのみが表示されています。


(この項終わり)