アクセスでいま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でするというのだけは分かるのですが。。。
No.2ベストアンサー
- 回答日時:
> 下記にプラスして出来るようにご教授お願い致します。
> 今現在のコードです。
テキストボックス名 「採取日検索開始」「採取日検索終了」とします。
「採取日検索終了」が空白の場合は、「採取日検索開始」に入力された日付のみ抽出するとします。
なお、日付の場合は、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の場合はどうなるのか分からないので。。。
No.3
- 回答日時:
> If IsNull(Me.採取日検索終了)
> の部分が赤くなりコンパイルエラー:
タイプミスです。すみませんでした。
> 修正候補:Then または GoTo
> となったのでThenとしましたがどうちがうのでしょうか?
この場合は、Thenで正解です。
GoTo は別の場所に記述してあるコードを処理するというステートメントですが、
今回のそのようなものはないです。
詳細はヘルプに載ってますので調べてみてください。
No.1
- 回答日時:
>クエリでしたら簡単なのですが
>すでにフォームを作成して運用していっていますので
フォームで使用しているテーブル(orクエリー)をもとにフォームだけの
クエリーを生成でき これに抽出条件を追加なさっては
元のフォームを別名でコピペしてこれを加工なさっては
1.フォーム内でクエリの生成
・フォームのデザインビューに入るとフォームのプロパティが表示されます
・データタグのレコードソース右端の[…]を起動するとクエリービルダの起動です
・ここで使用する抽出条件の開始日、終了日等の値はフォームを開く前に
..確定していなければなりません
..自分は前段階のフォームを「メニュー」という名称にしています。
..ここへ開始日、終了日、フォーム、レポートを開くテイストボックスを配置しています。
・メニュー上のボックスは次のフォームでは [forms]![メニュー]![開始日]とします。
補足 ファイルを開いたときに最初に表示するフォームをメニューにしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) VBA チェックボックスの設定について 1 2022/10/24 10:27
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- Visual Basic(VBA) VBAチェックボックスで有効無効切り替えできるように 5 2022/10/21 16:13
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAからクエリのパラメータを設...
-
SQL*Loader
-
年月日を持つテーブルから年月...
-
検索フォームで空白を抽出したい
-
AccessのデータをExcelテンプレ...
-
フォームの入力ができなくなる...
-
アクセス マクロのメッセージ...
-
複数条件検索について
-
ACCESS2003 でクエリの抽出条件...
-
Access2000で文字列中の半角ス...
-
アクセスのフォームにカンマ区...
-
Access2007のサブフォームのReq...
-
Access2000で複数の検索項目を...
-
ACCESSのフォームを使っての住...
-
パススルークエリの動的パラメ...
-
Access レポート印刷するときに...
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
YahooのIDがロックされてしまい...
-
アクセスでフォームビューがみ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
年月日を持つテーブルから年月...
-
SQL*Loader
-
検索フォームで空白を抽出したい
-
Accessのフォームで、空欄のレ...
-
アクセスのフォームにカンマ区...
-
ACCESS2003 でクエリの抽出条件...
-
VBAからクエリのパラメータを設...
-
AccessにてExcelファイル名にパ...
-
アクセス マクロのメッセージ...
-
access 検索フォームで検索が...
-
Accessの検索フォームで。
-
ACCESSのフォーム上で複数検索...
-
Access2000で文字列中の半角ス...
-
複数条件検索について
-
Access2007のサブフォームのReq...
-
パススルークエリの動的パラメ...
-
ACCESS マクロで検索に...
-
Access テキストボックスとlik...
-
Accessでパラメータークエリの...
-
Accessで検索画面を作る方法
おすすめ情報