アクセスの知識

日付の範囲を指定してデータを抽出【アクセス】

アクセスでデータを管理していると、日付の範囲を指定してデータを抽出したい!というケースは非常に多いと思います。

日付抽出の一例

  • 2020年1月1日~1月31日に来店した顧客を検索
  • 2020年1月~2020年4月の売上データを抽出
  • 最もカンタンは方法は、抽出用のクエリを作成。

    クエリの抽出条件に直接日付を入力する方法になりますが、今回はアクセスを使い慣れていない人でも抽出ができるように、専用のフォームを作成。

    フォームに配置した「登録日FROM」、「登録日TO」に入力された日付を元にデータを抽出するサンプルを作成してみました。

    フォームに入力した日付をもとに、ボタンひとつでデータの検索が可能です。

    一度仕組みを作ってしまえば、誰でもカンタンに希望のデータが取り出すことができますよ!

    無料サンプルをダウンロード!

    日付の範囲を指定してデータを抽出する手順

    今回作成したサンプルは、次のオブジェクトで構成されています。

    オブジェクト名 説明
    顧客TBL 顧客情報を格納しているテーブル
    F_データ抽出 抽出する日付を設定するフォーム
    F_顧客一覧1 登録年月日(YYYYMMDD)で抽出した結果を表示するフォーム
    F_顧客一覧2 登録年月(YYYYMM)で抽出した結果を表示するフォーム
    Q_顧客一覧1 F_顧客一覧1の作成元となるクエリ
    Q_顧客一覧2 F_顧客一覧2の作成元となるクエリ

    各種フォームの起動やエラー処理などの制御は全てVBAで記述しています。

    顧客TBLを作成する

    今回作成した顧客TBLのレイアウトと格納したデータは次の通りです。

    このテーブルに保持している「登録日」をキーとしてデータの抽出を行います。

    データ抽出用のフォームを作成する

    メニューの作成→空白のフォームをクリックして、新規フォームを作成。

    抽出条件となる「登録日(FROM)」と「登録日(TO)」のテキストボックスを配置します。

    今回のサンプルでは、年月日(YYYY/MM/DD)と年月(YYYY/MM)の2つのパターンで抽出可能としているため、全部で4つのテキストボックスを配置しています。

    日付を入力するテキストボックスは、フォーム起動時に本日の日付を表示させると親切ですね。

    これはVBAではなく、テキストボックスのプロパティシートの設定だけで実現できます。

    年月日を初期表示

  • 書式を「日付(標準)」に変更
  • 規定値に「=DATE()」を設定
  • 年月を初期表示

  • 書式は空白
  • 規定値に「Format(Date(),"yyyy/mm")」を設定
  • テキストボックスの設定が終わったら、抽出を実行する為のボタンを2つ設置。

    それぞれのボタンのクリックイベントに以下のVBAを記述します。

    完成したフォームはこちらです!

    抽出結果を表示するフォームを作成する

    データ抽出用のフォームに入力された日付にてデータ抽出を行うためには、抽出対象となる「登録日」を含んだクエリを作成し、そのクエリを元にフォームを作成する必要があります。

    step
    1
    年月日抽出のクエリ(Q_顧客一覧1)を作成

    「登録日」の抽出条件に、以下を記述します。

    Between [Forms]![F_データ抽出]![登録日FROM1] And [Forms]![F_データ抽出]![登録日TO1]

    step
    2
    年月抽出のクエリ(Q_顧客一覧2)を作成

    「日付: Format([登録日],"yyyy/mm")」の抽出条件に、以下を記述します。

    Between [Forms]![F_データ抽出]![登録日FROM2] And [Forms]![F_データ抽出]![登録日TO2]

    ココがポイント

    クエリの抽出条件には、Between関数を使用。
    抽出条件にフォーム上に配置された日付のテキストボックスを指定しています。
    Q_顧客一覧2のクエリは「年月(YYYY/MM)」で抽出するため、「登録日(YYYY/MM/DD)」を「日付(YYYY/MM)」にフォーマット変換。
    この「日付」に対してBetween関数を使用します。

    2つのクエリを作成したら、作成→フォームウィザードより「Q_顧客一覧1」を選択。
    全ての項目を選択してフォームを作成します。

    同様に「Q_顧客一覧2」でもフォームを作成します。

    これで必要なオブジェクトの作成は終了です。

    F_顧客一覧1
    F_顧客一覧2

    ツールの動作確認を実施する

    顧客テーブルにテスト用のデータを格納して、実際に日付範囲を指定して検索を実行してみて下さい。

    年月日、年月ともに対象範囲のデータが抽出され、検索結果のフォームに表示されればOKです。

    無料サンプルをダウンロード!

    日付のチェックやエラーメッセージの表示を変更する

    最後の仕上げとして、日付項目の未入力チェックや、抽出対象のデータが存在しなかった時のエラー処理など、ツールを使いやすくする処理をVBAで追加しましょう。

    step
    1
    日付の未入力チェック

    日付が空白の時に検索を実行すると、エラーメッセージが表示されます。

    VBAのコード

    step
    2
    日付の範囲チェック

    「登録日TO」より「登録日FROM」が大きい時にエラーメッセージが表示されます。

    VBAのコード

    step
    3
    日付の属性チェック

    日付形式以外の文字を入力した場合に、エラーメッセージが表示されます。

    VBAのコード

    step
    4
    抽出対象データなしのチェック

    指定日付のデータが存在しなかった場合にエラーメッセージを表示、検索結果画面に遷移させません。

    VBAのコード

    「IsDate関数」や「MID関数」、「LEN関数」「Dcount関数」などを駆使してこれらの処理を実装しています。

    サンプルデータのダウンロード

    今回作成したサンプルデータは、無料でダウンロードできるようにしました!

    作成するのが面倒な人や、実際のVBAを知りたい人は、こちらからダウンロードしてみて下さい。

    無料サンプルをダウンロード!

    人気の投稿

    1

    会員制のサイトにログインするために必要なパスワード、どうやって管理していますか?エクセルやメモ帳などよりも便利で使いやすいソフトを作成しました。

    2

    自営業の人や個人事業主の人は、顧客管理をエクセルで行っている人も多いかと思います。 エクセルで顧客管理のメリット パソコンにエクセルが入っていれば費用ゼロで使え ...

    顧客管理 3

    ちょっとした顧客管理や請求書などの作成にエクセルを利用している会社は多いと思います。 特に自営業や個人事業を営んでいる人、まだ顧客数が少ない中小企業などでは、導 ...

    -アクセスの知識
    -

    Copyright© ビジツールラボ , 2020 All Rights Reserved.