プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000で複数の条件を入力し、該当するデータを抽出するフォームを作成しています。どんな方法がありますか?簡単に出来る方法をお教えください。
具体的には、売上明細データを検索します。あらかじめ
テーブル:売上明細データ をいろいろなマスタを参照している
クエリ:売上明細クエリ を元に抽出します
条件は売上日付の日付1と日付2の項目と、伝票区分の項目です。
フォームの頭にテキストボックスを3つ作成し、日付1~日付2までの売上日付で
入力された伝票区分のもののみを表示させたいのです。
検索というコンボボタンを配置し、クリック時にその下にクエリからの必要な表示項目を売上明細クエリから配置しています。
抽出する方法(条件の与え方)を教えてください。よろしくお願いいたします。

A 回答 (4件)

売上明細:


ID___売上日付______明細区分___伝票番号
1____2007/10/25_____________0___2007100001
2____2007/10/26_____________0___2007100002
3____2007/10/27_____________1___2007100003

売上明細 クエリ:
SELECT Month([売上日付]) AS 月次, *
FROM 売上明細
WHERE (((Month([売上日付]))=10));

Private Sub コマンド_抽出実行_Click()
  Dim dteSHiduke As Date
  Dim dteEHiduke As Date
  Dim intKubun  As Integer
  Dim strWhere  As String
  
  dteSHiduke = Nz(Me.抽出開始日, "1999/12/31")
  dteEHiduke = Nz(Me.抽出終了日, "1999/01/01")
  intKubun = NZ(Me.抽出区分, 0)
  If dteSHiduke <= dteEHiduke Then
    strWhere = "明細区分=" & intKubun & _
          " AND 売上日付>=#" & dteSHiduke & "# AND 売上日付<=#" & dteEHiduke & "#"
    Me.RecordSource = "SELECT * FROM [売上明細 クエリ] WHERE " & strWhere
    Me.Requery
  Else
    MsgBox "抽出する日付が定かではありませんので中止します!"
  End If
End Sub

  ・・・・・
  If dteSHiduke <= dteEHiduke Then
    Me.FilterOn = False
    Me.Filter = "明細区分=" & intKubun & _
          " AND 売上日付 BETWEEN #" & dteSHiduke & "# AND #" & dteEHiduke & "#"
    Me.FilterOn = True
  Else
  ・・・・・

どっちでもOKです。
ただし、もしかしたら、ネットワークが混雑しないのは後者かもです。
    • good
    • 0
この回答へのお礼

いつもご丁寧な回答ありがとうございます!!
只今VBA特訓中で、とっても参考になりました。Private Sub以降の記述を何とか読解中です!でもSQLがまだこれからと言うところなので、十分に理解が出来てはいませんが、少しつかめてきたと思います。本当に詳しく解説いただき感謝感激です!これからもよろしくお願いします!

お礼日時:2007/10/30 15:02

クエリの日付抽出条件欄に



Between Nz(Forms!フォーム名!日付1,#1900/1/1#) and Nz(Forms!フォーム名!日付2,#2900/12/31#)

伝票区分の抽出条件欄に

=Forms!フォーム名!伝票区分 or Forms!フォーム名!伝票区分 is null

ボタンでフォームを再クエリします

この回答への補足

実際記述していただいたとおり設定をしたところ抽出できました!
本当にありがとうございます。
ところで次の問題がでてきました。検索ボタンと検索解除ボタンを設定しているのです。クエリで条件指定した場合、その条件の取り消しはどうすればよいのでしょうか。マクロの全レコードの表示も効かないし、マクロでフォームの日付1・日付2・伝票区分に値は代入できませんよね。どうすれば条件解除できるのでしょうか?重ね重ねよろしくお願いいたします!すみません初歩的な質問で・・・

補足日時:2007/10/29 16:13
    • good
    • 0

>マクロでフォームの日付1・日付2・伝票区分に値は代入できませんよね。


値じゃなくNullを代入してから再クエリします

この回答への補足

もちろんNullを代入して再クエリをかけましたが解除できませんでした・・・
マクロのアクションの値の代入で Forms!フォーム名!日付1 is Null
で同じく日付2、伝票区分を設定しました。その後再クエリをかけました。違うのでしょうか?重ねてすみません・・・

補足日時:2007/10/29 16:56
    • good
    • 0

>Forms!フォーム名!日付1 is Null


これを代入したのですか?
これの値は日付1に何か入っているときにはFalseです

そうじゃなくNullを代入するのですよ
    • good
    • 0
この回答へのお礼

ありがとうございました。少し勘違いしていたようです・・・
無事解決しました。出来の悪い質問者ですみません!
本当にありがとうございました!これからもよろしくお願いいたします!

お礼日時:2007/10/30 15:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す