日付型と文字列型、両方にフィルタをするには

このQ&Aのポイント
  • アクセスフォームで日付型と文字列型の両方にフィルタをする方法を教えてください。
  • 実行時エラー3075「クエリ式の構文エラー:演算子がありません。」が発生しています。
  • 質問のコードに誤りがあるようです。正しい書式でフィルタを設定する必要があります。
回答を見る
  • ベストアンサー

日付型と文字列型、両方にフィルタをするには

アクセス フォームで日付型(Between and)と文字列型、両方にフィルタをするには? Private Sub cmd_ボタン1_Click() Me.Form.Filter = _ "日付 Between #" & Me.cmb_日付1.Value & "# And #" & Me.cmb_日付2.Value & "#" & _ " and 会社名 like " & "*" & Me.cmb_会社名.Value & "*" Me.Form.FilterOn = True End Sub これのどこが変なのか教えていただけますか? 実行時エラー3075「クエリ式の構文エラー:演算子がありません。」というエラーになります。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

日付 Me.cmb_日付1.Value Me.cmb_日付2.Value Me.cmb_会社名.Value の型・値は何でしょう? "format(日付, "YYYY/MM/DD") Between '" & Me.cmb_日付1.Value & "' And '" & Me.cmb_日付2.Value & "'" & _ " and 会社名 like " & "*" & Me.cmb_会社名.Value & "*" だとどうなります?

dngewlehzym
質問者

お礼

ありがとうございました。

関連するQ&A

  • VBAで日付型とテキストでフィルタをかけるには?

    テーブルのデータは フィールド1 2012/1/1 2012/1/2 2012/1/3 2012/1/4 2012/1/5 2012/1/6 2012/1/7 2012/1/8 2012/1/9 2012/1/10 フィールド2 A A A A A B B B B B です。 このクエリをもとに票フォームを作成して、 ・txt_始まりテキスト ・txt_終わりテキスト ・txt_フィールド2テキスト を作りました。 あとコマンドボタン(cmd_抽出)も作りました。 このコマンドボタンを押して 日付とテキストを抽出したいのですがVBAでのやり方を教えてください。 クエリなら ------------------------------------------------------------ SELECT テーブル1.フィールド1, テーブル1.フィールド2 FROM テーブル1 WHERE (((テーブル1.フィールド1) Between #1/4/2012# And #1/6/2012#) AND ((テーブル1.フィールド2)="A")); でできました。 ------------------------------------------------------------ しかしVBAで ------------------------------------------------------------ Private Sub cmd_抽出_Click() Me.Form.Filter = "フィールド1 Between #" & Me.txt_始まりテキスト.Value & "# And #" & Me.txt_終わりテキスト.Value & "#" & _ "' And フィールド2 like '*" & Me.txt_フィールド2テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub ------------------------------------------------------------ をすると、 ------------------------------ 実行時エラー3075 構文エラー:演算子がありません。 ------------------------------ になります。 どうすればいいか教えてください。 結果は、 ------------------------------ フィールド1 フィールド2 2012/01/04 A 2012/01/05 A ------------------------------ です。 ご回答よろしくお願いします。

  • 両方の条件でフィルターをかけたいです

    こんにちは。 今、フォームに別々に条件を指定し、抽出するようにしております。 (1) Private Sub コマンド65_Click() DoCmd.ApplyFilter , "[会場名] like '*" & Me.テキスト63 & "*' " Me.FilterOn = True Exit Sub Err_コマンド65_Click: MsgBox Err.Description End Sub (2) Private Sub コマンド70_Click() f_status = "施工日 >= '" & 開始日 & "'" f_status = f_status & " AND 施工日 <= '" & 終了日 & "'" Me.Filter = f_status Me.FilterOn = True End Sub 今の状態では正常に動くのですが、 条件が、(1)かつ(2)という条件でフィルターをかけなければ ならない、と作成してから気づきました。 いろいろやってみたのですが、 どれもエラーになるばかりで。。。

  • アクセス Between  Andの使い方 日付型

    フォームをテーブルに紐づけて コマンドボタンを押下したら、日付にフィルタをかけたいのですが、 0件で抽出されます。 フィールド1 2013/05/19 2013/05/20 2013/05/21 というテーブルがあり、 フォーム上のコマンドボタンのクリックイベントは Private Sub コマンド1_Click() Me.Form.Filter = "フィールド1 Between " & Date & " And " & Date + 1 Me.Form.FilterOn = True End Sub です。 2013/05/19 2013/05/20 が抽出されるべきだと思うのですが、なぜ何も抽出されないのでしょうか? エラーにもなりません。

  • フィルタの情報を保存したい

    Me.Form.Filter = "" Me.Form.FilterOn = を保存したいのですがどうすればいいでしょうか? フォームにテキストのフィールドと 抽出とクリアのコマンドボタンを設置して、フィルタをかけたり解除したりしています。 途中でフォームを閉じても最後にフィルタをかけたなら、 再度フォームを開いたときに最後に検索したワードでフィルタが開く用にしたいし フォームを閉じる前にフィルタを解除したのなら、 再度フォームを開いたときはフィルタが解除された状態にしたいです。 Private Sub cmd_クリア_Click() Me.Form.Filter = "" Me.Form.FilterOn = False DoCmd.Save acForm, Me.Name End Sub Private Sub cmd_抽出_Click() Me.Form.Filter = "フィールド2 like '*" & Me.txt_フィールド2テキスト.Value & "*" & "'" Me.Form.FilterOn = True DoCmd.Save acForm, Me.Name End Sub としてるのに、フィルタの情報が保存されてません。 再度開きなおしたときは、 必ず全レコードが表示されてしまいます。 フィルタの状態を保存する方法を教えてください。ご回答よろしくお願いします。

  • 年を条件にデータを抽出するには?

    フィールド1 2012/01/01 2012/01/02 2011/01/01 2011/01/02 2010/01/01 2010/01/02 と言うデータがあり、それをもとに表形式でフォームを作りました。 フォームヘッダーにコンボボックス(名前:コンボ3)を作り、 値集合タイプ:値リスト 値集合ソース:"2012";"2011";"2010" にしました。 コンボボックスのAfterUpdateイベントでコンボ3に表示されている値を年を抽出したいのですが vbaでどうやればいいのでしょうか? クエリは作りません。 Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "# And #" & Me.コンボ3.Value & "#" & "'" Me.Form.FilterOn = True End Sub や Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "/01/01" & "# And #" & Me.コンボ3.Value & "/12/31" & "#" & "'" Me.Form.FilterOn = True End Sub にすると 実行時エラー クエリ式 <式> の <メッセージ> (エラー 3075) 入力した式が、メッセージに示されている原因によって無効です。フィールド名と区切り記号を正しく入力していることを確認してから、もう一度実行してください。 となってしまいます。 2010/01/01と2010/01/02を抽出させたいです。 ご回答よろしくお願いします。

  • 複数条件のフィルタができない

    マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが Sub フィルタ() With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With End Sub だとうまくできません。 With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' or " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With これならフィルタされるのですが、 どちらかだけになってしまいます。 .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" の文法がおかしいのだと思うのですが、どこが変ですか?

  • 複数の条件で検索したい!

    複数の条件で検索したい! 現在下記のコードでフォームのtxtBoxとcmbBoxの条件でサブフォームを絞込みしています。 これを複数の条件を満たしたレコードだけを絞込みしたいのですが、 txtBox1の条件も拾うしcmb1の条件も拾ってしまう・・・ これを txtBox1の条件を満たした中のcmb1条件も満たすのレコードで絞込みしたいのですが、 どのようにしたら良いか教えてください。よろしくお願いいたします。 Private Sub cmd検索_Click() If Not IsNull(txtBox1) Then サブフォーム.Form.Filter = "顧客コード like '*" & txtBox1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(cmb1) Then サブフォーム.Form.Filter = "顧客区分 like '" & cmb1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(txtBox2) Then サブフォーム.Form.Filter = "顧客名カナ like '*" & txtBox2.Value & "*'" サブフォーム.Form.FilterOn = True End If

  • 複数の条件を満たすレコード検索教えてください!

    複数の条件を満たすレコード検索教えてください! 現在フォームのコマンドボタンでサブフォームの絞込みを下記のコードで行っています・・・が、 ”顧客コード”と”顧客名”を同時に入力して検索すると”顧客コード”を無視して”顧客名”だけを 検索してしまいます、複数の条件を全て満たすにはどうすれば良いか教えてください。 よろしくお願いいたします。 Private Sub cmd検索_Click() If Not IsNull(txt顧客コード) Then S顧客.Form.Filter = "顧客コード like '" & txt顧客コード.Value & "'" S顧客.Form.FilterOn = True End If If Not IsNull(cmb顧客区分) Then S顧客.Form.Filter = "顧客区分 like '" & cmb顧客区分.Value & "'" S顧客.Form.FilterOn = True End If If Not IsNull(txt顧客名) Then S顧客.Form.Filter = "顧客名カナ like '*" & txt顧客名.Value & "*'" S顧客.Form.FilterOn = True End If

  • コンボボックスでの絞り込み2つはOKなのに3つ目がNGです

    Access2000で社内システムを作っています。 行き詰ってしまいました。コンボボックス3つを利用してサブフォームを開くフォームを作っています。 サブフォームは取引マスタを利用してQ_売上げというクエリを元にしています。 サブフォーム名 売上げです。レコードは い  1/1 A商店 みかん 三ケ日 100円 100個 ろ  1/2 A商店 なし  長十郎 80円  50個 は  1/3 A商店 みかん 愛媛  80円  100個  に  1/3 B商店 なし  長十郎 80円  100個 コンボ1で「A商店」を選ぶとコンボ2では「なし」と「みかん」が選べます。 フォームの動作はコンボ1を選ぶとい、ろ、は、に全部の レコードが表示されます。 コンボ1を選ぶとい、ろ、はのレコードに絞り込まれます ここまではうまくいくのですがコンボ3を開いたとき レコードい、はを表示したいのに該当なしに なってしまいます。 コードは以下の通りです。 アドバイスよろしくお願い致します。 Private Sub cmd取引先_AfterUpdate() If Me.cmd取引先 & "" = 0 Then Me.売上げ.Form.RecordSource = Q_売上げ Else Me.売上げ.Form.RecordSource = _ "SELECT * FROM Q_売上げ " & _ "WHERE 取引先 = '" & Me.cmd取引先 & "'" End If End Sub Private Sub cmd商品名_AfterUpdate() Me.売上げ.Form.FilterOn = False Me!売上げ.Form.Filter = _ "取引先='" & Me!cmd取引先 & _ "' and 商品名='" & Me!cmd商品名 & "'" Me!売上げ.Form.FilterOn = True End Sub Private Sub cmdブランド_AfterUpdate() Me.売上げ.Form.FilterOn = False Me!売上げ.Form.Filter = _ "取引先='" & Me!cmd取引先 & _ "' and 商品名='" & Me!cmd商品名 & _ "' and ブランド='" & Me!cmdブランド & "'" Me!売上げ.Form.FilterOn = True End Sub

  • フィルターの文字列を空にしたいのですが

    親フォームからサブフォームを閉じる時に、フィルターの文字列を空にしたいのですが Private Sub Form_Close() Me.Controls("F_SubMain").Form.Filter = Empty DoCmd.Save acForm, Me.Name MsgBox Me.Controls("F_SubMain").Form.Filter DoCmd.ShowToolbar "Ribbon", acToolbarYes End Sub としても、フィルターの文字が残ってしまいます。 親フォームにサブフォームに入れてるので、 そのサブフォームのフィルタの文字列を空白にしたいのですが DoCmd.Save acForm, Me.Name で保存できないようなのですが DoCmd.Save acForm, Me.Controls("F_SubMain").Form もエラーになりました。 こういうことをやりたい場合、どうすればいいでしょうか?

専門家に質問してみよう