NonSoft

ACCESS(アクセス)のフォームとクエリを使用し
期間抽出するサンプル


 ち〜な〜み〜に〜
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

ACCESS(アクセス)データベースを使用し、フォームとクエリにより期間でデータを抽出(日付のFROM〜TOで絞込)するサンプルです。
プログラム初心者には難しいVBAは1行だけ「リストボックス名.Requery」覚えてください。
DAO版はこちらです。SQLサーバーとも接続出来ます。
ADO版はこちらです。SQLサーバーとも接続出来ます。

実行結果はこんな感じです。2007/06/01〜2007/08/31までの受注担当者と受注金額の一覧です。
日付絞込み実行結果

(1)まずサンプルのテーブルを作成します。テーブルのデザインビューはこんな感じです。
   テーブル名は「受注テーブル」にしてください。
   受注番号(テキスト型)、受注日(日付/時刻型)、受注担当(テキスト型)、受注金額(数値型)
   主キー(鍵のマーク)も付けましょう。主キーは重複出来ません。
テーブルのデザインビュー

(2)サンプルのテーブルにデータを入力します。データシートビューはこんな感じです。
   抽出(絞込)が上手くいったかどうか判断出来るように日付を散りばめて。
データシートビュー

(3)次にデータ抽出するクエリを作成します。SQLビューはこんな感じです。
   「受注テーブル.*」は「*」で良いです。「forms!」は固定で「フォーム1!date1」や「フォーム1!date2」はフォームで指定する名前です。
    SELECT * FROM 受注テーブル WHERE
    iif(isnull(forms!フォーム1!date1),True,受注日>=forms!フォーム1!date1) And
    iif(isnull(forms!フォーム1!date2),True,受注日<=forms!フォーム1!date2);
SQLビュー

(4)フォームを作成します。
   テキストボックス(date1、date2と命名)とリストボックス(list1と命名)を追加します。
   date1、date2、list1はラベル名では無く変数名なので注意してください。プロパティで開いた時の名前です。
   フォームのデザインビューはこんな感じです。
フォームのデザインビュー

(5)フォームのリストボックス(list1)のプロパティはこんな感じです。
   「値集合タイプ=テーブル/クエリ」と「値集合ソース=クエリ1」に注目!!
リストボックスのプロパティ
   (イメージ画像はありませんが、date1とdate2のIME入力モードをオフにした方が使いやすいです)
   (また、フォームのフォーム(詳細では無い)のプロパティの移動ボタンはいいえにした方がよいでしょう。
   (また、フォームのフォーム(詳細では無い)のプロパティのレコードセレクタはいいえにした方がよいでしょう。

(6)フォームをデザインビューで開いて、受注日Fromを右クリックし「イベントのビルド」を選択します。
   「コードビルダ」を選択し、以下のVBAコードを入力します。
    Private Sub date1_BeforeUpdate(Cancel As Integer)
        list1.Requery
    End Sub
    Private Sub date2_BeforeUpdate(Cancel As Integer)
        list1.Requery
    End Sub
VBAコード

(7)完成です。

ACCESS(アクセス)のフォームとクエリを使用し期間抽出するサンプル
プログラム初心者には難しいVBAは1行だけ「リストボックス名.Requery」・・・

ACCESS(アクセス)のフォームとDAOを使用し期間抽出するサンプル
DAOというライブラリを使ったVBAプログラムに挑戦してみましょう・・・SQLサーバーも・・・

ACCESS(アクセス)のフォームとADOを使用し期間抽出するサンプル
ADOというライブラリを使ったVBAプログラムに挑戦してみましょう・・・SQLサーバーも・・・

ACCESS(アクセス)のテーブルとEXCEL(エクセル)を使用し期間抽出するサンプル1
ACCESS(アクセス)の抽出データをEXCEL(エクセル)のシートに取り込むサンプル・・・

ACCESS(アクセス)のテーブルとEXCEL(エクセル)を使用し期間抽出するサンプル2
ACCESS(アクセス)の抽出データをEXCEL(エクセル)のシートに取り込むサンプル・・・

今まで色々なソフトウェアの勉強をして来ましたがACCESSの勉強をした事は有りませんでした。VBもVBAも似たようなものだと思っていました。 ある時、ACCESSのデータを期間抽出する事になったのですが、意外と難しい事に気付きました。なぜ今、ACCESSなのか?と思いつつ経験不足 を否定出来ませんでした。そこで、「ACCESS(アクセス)のフォームとクエリを使用し期間抽出するサンプル」を作ろうと思いました。初心者は プログラムに恐怖心を持っているかもしれないので、「プログラム初心者には難しいVBAは1行だけ」というフレーズを付けてみました・・・ しかしACCESSデータベースを使っていてVBAを避けて通れるとは思えないのでDAO、ADOのサンプルも用意しました。ADOが必要だと思った理由は、 今はACCESSで充分でも将来的にはSQL SERVERやORACLEの存在が無視出来ないと思うからです。業務分野としては、想像しやすいストーリーとして 受注業務(営業業務)を採用しました。受注テーブルの日付カラムをFROM〜TOの期間でデータ抽出(検索と言うべきか絞込と言うべきか)し、 抽出した受注番号、受注日、担当、金額を表示するという仕様にしました。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜