- ベストアンサー
アクセスの複数検索で日付の絞込みの仕方
- アクセスの複数検索で日付の絞込みの仕方を教えてください。
- 現在、テキスト型・数値型・日付で検索をかけていますが、日付の部分を一致だけではなく範囲指定もできるようにしたいです。
- フォームを作成して運用しているため、クエリではなくVBAコードでの対応方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 下記にプラスして出来るようにご教授お願い致します。 > 今現在のコードです。 テキストボックス名 「採取日検索開始」「採取日検索終了」とします。 「採取日検索終了」が空白の場合は、「採取日検索開始」に入力された日付のみ抽出するとします。 なお、日付の場合は、IsDate関数で日付として正しいかどうかチェックした方がいいでしょう。 (例えば 2012/09/31 などとあり得ない日付を入力するとエラーになるので) Dim L1 As String If Nz(Me.品名検索, "") <> "" Then L1 = L1 & " AND 品名 Like '*" & Me.品名検索 & "*'" End If If IsDate(Me.採取日検索開始) Then If IsNull(Me.採取日検索終了) L1 = L1 & " AND 採取日 = #" & Me.採取日検索開始 & "#" Else L1 = L1 & " AND 採取日 >= #" & Me.採取日検索開始 & "#" End If ElseIf Not IsNull(Me.採取日検索開始) Then MsgBox "正しい日付を入力してください。" Me.採取日検索開始.SetFocus Exit Sub End If If IsDate(Me.採取日検索終了) Then L1 = L1 & " AND 採取日 <= #" & Me.採取日検索終了 & "#" ElseIf Not IsNull(Me.採取日検索終了) Then MsgBox "正しい日付を入力してください。" Me.採取日検索終了.SetFocus Exit Sub End If If Nz(Me.数値検索, "") <> "" Then L1 = L1 & " AND 数値 = " & Me.数値検索 End If 以下変更なし
その他の回答 (2)
- hatena1989
- ベストアンサー率87% (378/433)
> If IsNull(Me.採取日検索終了) > の部分が赤くなりコンパイルエラー: タイプミスです。すみませんでした。 > 修正候補:Then または GoTo > となったのでThenとしましたがどうちがうのでしょうか? この場合は、Thenで正解です。 GoTo は別の場所に記述してあるコードを処理するというステートメントですが、 今回のそのようなものはないです。 詳細はヘルプに載ってますので調べてみてください。
- chayamati
- ベストアンサー率41% (260/624)
>クエリでしたら簡単なのですが >すでにフォームを作成して運用していっていますので フォームで使用しているテーブル(orクエリー)をもとにフォームだけの クエリーを生成でき これに抽出条件を追加なさっては 元のフォームを別名でコピペしてこれを加工なさっては 1.フォーム内でクエリの生成 ・フォームのデザインビューに入るとフォームのプロパティが表示されます ・データタグのレコードソース右端の[…]を起動するとクエリービルダの起動です ・ここで使用する抽出条件の開始日、終了日等の値はフォームを開く前に ..確定していなければなりません ..自分は前段階のフォームを「メニュー」という名称にしています。 ..ここへ開始日、終了日、フォーム、レポートを開くテイストボックスを配置しています。 ・メニュー上のボックスは次のフォームでは [forms]![メニュー]![開始日]とします。 補足 ファイルを開いたときに最初に表示するフォームをメニューにしています。
補足
現状に使用しているフォームとクエリを作成したフォームを 合体させるという事でしょうか?
お礼
ありがとうございました。問題なくしたいことが出来ました。 助かりました。
補足
ありがとうございます。 If IsNull(Me.採取日検索終了) の部分が赤くなりコンパイルエラー: 修正候補:Then または GoTo となったのでThenとしましたがどうちがうのでしょうか? 問題なく検索はされますがGoToの場合はどうなるのか分からないので。。。