• ベストアンサー

Access filterにて

フィルターする時、オプションボタンやトグルボタンを使用し、Select Caseで分岐させてフィルターするやり方でなく、下記のようにすることはできますか? ************************************************************** 「Me.検索項目」はコンボボックス(集合体ソースには、検索するフィールド名を用意) 「Me.日付入力」は日付だけを入力するテキストボックス Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.FilterOn = True ************************************************************** 検索するフィールド名をいちいち記述しなくて済むのでは?と思いましたが、結果が得られませんでした。 どこがおかしいのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

> Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.Filter = Me.検索項目 & " = " & "#" & Me.日付入力 & "#" とか?

PearlJam69
質問者

お礼

ありがとうございます。 目的のものが出来ました。 基本を知らないとこういうことになるんですかね・・・

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

フィルタにセットする文字列が出来ていないですよ Me.・・・には値がセットされますから アップされたものでは ' フィールド名 ' = # yyyy/mm/dd # にしかなりません 'フィールド名 = # yyyy/mm/dd #' となるように書いてください

PearlJam69
質問者

お礼

ありがとうございます。 目的のものが出来ました。 基本を知らないとこういうことになるんですかね・・・

関連するQ&A

  • Access2007 サブフォームでフィルタリングする方法

    お世話になっております。 フォーム上に関連性のないサブフォームがあります。 フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。 このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。 Me.FilterOn = True Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')" サブフォームでフィルタリングできる方法を教えていただければ幸いです。 よろしくお願いいたします。

  • アクセスで期間抽出

    お尋ねします アクセスで納品書のデータベースがあります   納品書データFormには 伝票番号、日付、客先名、数量のフィールドのフォームで テキストボックス1:始めの日 テキストボックス2:終了日 コマンドボタン1:期間で抽出 が配置しています テキストボックス1,2に日付、記入後、コマンドボタン1をクリックして 所要期間でフィルターで抽出するのですがうまく行きません コマンドボタン1クリック時のコード Private Sub コマンド1_Click() Me.Filter = "日付= 'Between" & Me![テキスト1] & "And" & Me![テキスト2] & "'" Me.FilterOn = True End Sub のコードで抽出してくれません、不都合をご指摘下さい なお 指定日での抽出は以下で出来ました。 Private Sub コマンド1_Click()  Me.Filter = "日付= '" & Me![テキスト1] & "'" Me.FilterOn = True End Sub エクセルのモジュールは少しかじったのですがアクセスは 始めたばかりでなかなか要領を得ません 宜しくお教え下さい。

  • ACCESSでfilterとorderbyについて

    ACCESS2000でfilterとorderbyを同時に指定する場合について教えてください。 ACCESS2000とwindows7を使用しております。 あるフォームにテキストボックスとコマンドボタンを用意しております。 テキストに入力した文字を元にfilterをかけております。 Me.filteron=true Me.filter=カラム名 like ~~ filterをした後に特定のカラムでソート(降順)したいと考えております。 上記に記載したfilterの後に Me.OrderByOn = True Me.OrderBy = カラム名 を追加したのですがfilterはするのですが、ソートはしてくれません。 上記以外になにか指定するものがあるのでしょうか。 お手数ですが、お力添えお願い致します。

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

    フィールド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を抽出させたいです。 ご回答よろしくお願いします。

  • アクセス 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 としてるのに、フィルタの情報が保存されてません。 再度開きなおしたときは、 必ず全レコードが表示されてしまいます。 フィルタの状態を保存する方法を教えてください。ご回答よろしくお願いします。

  • ACCESSのFILTERについて教えてください。

    いつも、お世話になっております。 以下について教えてください。 会社内のシステムのデータからACCESSでリンクを張って、日付(テキスト型)の絞り込み機能を作りたいと思い、以下のようにPGをくんだのですが、「直前の操作は取り消されました」と出て原因がわかりません。 (ちなみにYYYYMMDDの形で入力します。) Me.Filter = "[日付] >= " & Me.txt_開始 & "And" & "[日付] <= " & Me.txt_終了 Me.FilterOn = True BETWEENでやってみても同じでうまくいきませんでした。 すみませんが、原因とうまく行く対処法を教えてください。 お願いします。

  • アクセス 通貨型 ワイルドカード

    アクセスでフィルタをかける時に、フィールドが通貨型でワイルドカードを使いたいのですが Private Sub Form_Load() Me.Form.Filter = "フィールド1 like *" Me.Form.FilterOn = True End Sub だと構文エラーになるのですが、すべての金額を対象にするにはどうすればいいですか?

  • アクセス2000で2回目の検索ができなくなります

    アクセス2000で、サンプルを見ながらVBAをみようみまねで書いている超初心者です(難しいことは理解できていません)。次のようなところで行き詰っています。ヘルプお願いします。 一つのフォームに、(1)コンボボックス2つで、2段階の絞り込みをするクエリ(全体から「種類」フィールドのAを抽出し、さらに「名前」フィールドからBに絞り込む) と、(2)オプショングループのフレームの中で五十音で検索するトグルボタン(「かな」フィールドからあ行、か行等を抽出) のふたつのフィルタを設置しています。 コンボボックスのほうには、絞り込みの解除のボタン(ここでは「再表示」とします)を設置しており、クリック時のイベントに Private Sub コマンド1_click() me.コンボ1=null me.コンボ2=null DoCmd.Requery End Sub と記述し、「再表示」ボタンを押すことで、何度もやり直しができています。 しかし、五十音検索を一度でも行うと、その後はコンボボックスの絞り込みが動かなくなってしまうのです。 そこで、こちらにも「全表示」ボタンをつくって、以下のような記述をしてみたのですが、いずれもコンボボックスによる絞り込みを復活させることができないでいます。どこが足りないのかわかりません。 1) Private Sub コマンド2_click() me.フレーム1=null me.フレーム2=null DoCmd.Requery End Sub これでトグルの選択は解除されますが、コンボボックスは動きません。よって3行目以降が間違っていると思い、 2)上記の3行目以降を DoCmd.ShowAllRecords や Me.FilterOn=false  など、またそれらとReQueryなどを組み合わせてみたり、 3)コンボボックスの方に1)や2)のような記述を追加してみたりと、いろいろトライしていますが、どうしてもコンボボックスの動作が復活しないのです。 いったんフォームを閉じるとまたできるようになるのですが・・・どうすればよいか、ご教示をお願いいたします。 ps.VBAのお作法はほとんどわかっていません。なるべくわかりやすくお願いいたします。   ちなみに、MSのサイトで[ACC2000]フィルタが設定されたフォームで2回目以降のフィルタが実行されない というヘルプは参照したのですが、意味が分かりませんでした(泣)  また、なぜこの時代にアクセス2000なのか、ですが、いまだに会社のバージョンがこれなのです(苦笑)

  • accessvba 複数条件でFilterをしたい

    テーブル1 --------------------------------------- ID フィールド1 フィールド2 1 あ A 2 い B 3 う C 4 え D 5 お E --------------------------------------- を作成し、そのテーブルをもとに、帳票フォームを作成しました。 そのフォームに非連結のテキストボックス ID_テキスト フィールド1_テキスト フィールド2_テキスト 3つを設置しました。 行いたい事をクエリ(SQL文)で例えると、 --------------------------------------- SELECT テーブル1.ID, テーブル1.フィールド1, テーブル1.フィールド2 FROM テーブル1 WHERE (((テーブル1.ID) Like "*" & Forms!テーブル1!ID_テキスト & "*") And ((テーブル1.フィールド1) Like "*" & Forms!テーブル1!フィールド1_テキスト & "*") And ((テーブル1.フィールド2) Like "*" & Forms!テーブル1!フィールド2_テキスト & "*")); --------------------------------------- なのですが、 これをクエリを作成せずに、VBAで行いたいです。 各非連結のテキストボックスには、 更新後処理:[イベント プロシージャ] としています。 --------------------------------------- Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub --------------------------------------- は、問題なくできるのですが、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" and & _ "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub にすると、エラーになります。 andの繋げ方が良くないと思うのですが、どうすればいいでしょうか? 最終的には、 Private Sub ID_テキスト_AfterUpdate() Me.Form.Filter = _ "ID like '" & "*" & Me.ID_テキスト.Value & "*" & "'" "フィールド1 like '" & "*" & Me.フィールド1_テキスト.Value & "*" & "'" "フィールド2 like '" & "*" & Me.フィールド2_テキスト.Value & "*" & "'" Me.Form.FilterOn = True End Sub のような感じにしたいです。 ご回答よろしくお願いします。

専門家に質問してみよう