dポイントプレゼントキャンペーン実施中!

アクセスでいま3種類の検索をかけて絞込みをしています。
テキスト型と数値型と日付で検索をかけてるのですが
日付の部分を一致だけではなくいつからいつまでという風にも絞り込みたいといわれたのですが
いまいちやり方がわかりません。。。
クエリでしたら簡単なのですがすでにフォームを作成して運用していっていますので
下記にプラスして出来るようにご教授お願い致します。
今現在のコードです。

Private Sub 検索ボタン_Click()

Dim L1 As String

If Nz(Me.品名検索, "") <> "" Then
L1 = L1 & " AND 品名 Like '*" & Me.品名検索 & "*'"
End If

If Nz(Me.採取日検索, "") <> "" Then
L1 = L1 & " AND 採取日 = #" & Me.採取日検索 & "#"
End If

If Nz(Me.数値検索, "") <> "" Then
L1 = L1 & " AND 数値 = " & Me.数値検索
End If

If L1 <> "" Then
L1 = Mid(L1, 6)
Me.Filter = L1
Me.FilterOn = True
Else
Me.Filter = L1
Me.FilterOn = False
End If
End Sub

採取日を範囲指定で検索したいです。
範囲指定だけではなくその日だけ検索というのも可能ならばお願いします。
Between andでするというのだけは分かるのですが。。。

A 回答 (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

以下変更なし

この回答への補足

ありがとうございます。

If IsNull(Me.採取日検索終了)
の部分が赤くなりコンパイルエラー:
修正候補:Then または GoTo
となったのでThenとしましたがどうちがうのでしょうか?
問題なく検索はされますがGoToの場合はどうなるのか分からないので。。。

補足日時:2012/10/09 10:13
    • good
    • 0
この回答へのお礼

ありがとうございました。問題なくしたいことが出来ました。
助かりました。

お礼日時:2012/10/11 11:28

> If IsNull(Me.採取日検索終了)


> の部分が赤くなりコンパイルエラー:

タイプミスです。すみませんでした。

> 修正候補:Then または GoTo
> となったのでThenとしましたがどうちがうのでしょうか?

この場合は、Thenで正解です。

GoTo は別の場所に記述してあるコードを処理するというステートメントですが、
今回のそのようなものはないです。

詳細はヘルプに載ってますので調べてみてください。
    • good
    • 0

>クエリでしたら簡単なのですが


>すでにフォームを作成して運用していっていますので

フォームで使用しているテーブル(orクエリー)をもとにフォームだけの
クエリーを生成でき これに抽出条件を追加なさっては
元のフォームを別名でコピペしてこれを加工なさっては

1.フォーム内でクエリの生成
・フォームのデザインビューに入るとフォームのプロパティが表示されます
・データタグのレコードソース右端の[…]を起動するとクエリービルダの起動です
・ここで使用する抽出条件の開始日、終了日等の値はフォームを開く前に
..確定していなければなりません
..自分は前段階のフォームを「メニュー」という名称にしています。
..ここへ開始日、終了日、フォーム、レポートを開くテイストボックスを配置しています。
・メニュー上のボックスは次のフォームでは [forms]![メニュー]![開始日]とします。

補足 ファイルを開いたときに最初に表示するフォームをメニューにしています。
「アクセスの複数検索で日付の絞込みの仕方」の回答画像1

この回答への補足

現状に使用しているフォームとクエリを作成したフォームを
合体させるという事でしょうか?

補足日時:2012/10/09 10:16
    • good
    • 0

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