• ベストアンサー

Access+VB フィルターの使い方

フィールドの値をXとします。 このXが 1~3 または 6~9 の時フィルターで取出したい場合 Filter = ST FilterOn = True フィルターを ST="( X>=1 AND X<=3 ) OR ( X>=6 AND X<=9 )" では、ダメなんですね。 どんな記述のしかたをしたらよろしいでしょうか?

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

  • ベストアンサー
noname#27115
noname#27115
回答No.1

http://www.nurs.or.jp/~ppoy/access/access/acM015.html ここにヒントはないですか? ADOを使ったときに何か制約があるようです。

situmonnsya
質問者

補足

参考になりました・・・・が。 少し私には難解です。 ありがとうございます。

その他の回答 (2)

noname#27115
noname#27115
回答No.3

前のページの結論は、次のようでしたね。なので、今回は後者であり、うまくいくはずでした。 もしかして、Xのフィールドは文字列じゃないですか? そうしたら、 ST="( X>='1' AND X<='3' ) OR ( X>='6' AND X<='9' )" このように書かないといけないですね。 そもそも、ダメとは、どうダメだったのでしょうか? 思った値が取得できない? 何らかのエラーが発生している? <<結論>> ADO を使用した Recordset オブジェクトの Filter プロパティでは、 「Or 結合」 した句をさらに 「And 結合」 することはできません。 但し 「And 結合」 した句を 「Or」 で結合することはできます。

situmonnsya
質問者

お礼

はい、うまくいくはずなんですが、エラーがでます。 結局、教えて頂いたサイトを参考に組んでみました。 結果オーライで、うまくいってます。 ありがとうございます でもまた、問題がおきて新しい質問を投稿します。 よろしくお願いします。

noname#60992
noname#60992
回答No.2

VBA でしょうか? ADO で接続されているなら、 rst.filter = ST そのままできると思いますが、 前後は、どのような記述をされているのでしょうか?

situmonnsya
質問者

補足

ん~~ん。 データベースは初心者なもので・・・ADO接続とかDAOとか特別意識したことがありません。 テーブルつくって、クエリやって、それをフォームでVBAやってます。 フォーム.プロパテイのFilterをいじってるだけなのですが。 少し勉強してみます。

関連するQ&A

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

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

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

  • サブフォームにフィルタをかけたい

    サブフォームにフィルタをかけたいのですが エラーになってしまいます。 下記がエラー内容です。 ---------------------------------------------------------- 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ---------------------------------------------------------- 細かい概要は テーブル1にフィールドがあり、 レコードには「あああ」と入力されています。 テーブル1がレコードソースとされている「フォーム(2)」をサブフォームとして 親フォーム(フォーム名:フォーム(1))に乗せました。 フォーム(1)を開いた時にフォーム(2)にフィルタをかけたいのですが うまくいきません。 オブジェクト名にカッコを付けているため、 Form_フォーム・・・・ というコードは書けないので ---------------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Forms("フォーム(1)").Controls("フォーム(2)").Form.Filter = "フィールド = '" & "*あ*" & "'" Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True End Sub ---------------------------------------------------------- としています。 Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True でエラーになりますが、 この行をなくしたら、フィルタがかかりません。 どうすればサブフォームにフィルタをかける事が出来るのでしょうか? ご教示よろしくお願い致します。

  • アクセス フォーム複数条件でのフィルタエラーになる

    アクセスのフォームにたいして Private Sub Form_Load() With Me.Form .Filter = "分類 = '" & "クレジットカード" & "' and " _ & "退会済YesNo = '-1'" .FilterOn = True End With End Sub とすると、 抽出条件でデータ型が一致しません。(エラー 3464) と言うエラーになってしまいますが、 分類フィールドの値がクレジットカードで、なおかつ退会済YesNoフィールドの値が-1(もしくはTrue)を抽出するにはどうすればいいですか? あと、エラーになる原因も教えていただければ幸いです。 ご回答よろしくお願いします。

  • 同じテーブルなのにフィルタの条件によって時間が全然

    アクセス2010で、テーブルのデータが210000件あるのですが 同じテーブルなのにフィルタの条件によって時間が全然違います。 Aフィールドにフィルタをかける時は2秒ぐらいで結果が表示されるのに Bフィールドだと6秒くらいかかります。 フィルタはVBAでFilterOn = Trueを使っています。 なぜでしょうか?

  • フィルタでワイルドカードは使えない?

    アクセスのフォームにフィルタを掛けたいのですが Form_F映画.Filter = "タイトル = '" & "*イングロリアス*" & "'" Form_F映画.FilterOn = True Form_F映画.Requery だとひっかかりませんが、 Form_F映画.Filter = "タイトル = '" & "イングロリアス・バスターズ(字幕)" & "'" だとひっかかります。 フィルタでワイルドカードを使う方法を教えてください!!

  • 実行時エラー '3464': 抽出条件でデータ型が

    フォームにフィルタをかけようとすると 実行時エラー '3464': 抽出条件でデータ型が一致しません。 になります。 Private Sub Form_Load() Me.Form.Filter = "フィールド1 =200" Me.Form.FilterOn = True End Sub コードはこれです。 フィールド1はテキスト型です。 何がダメなのでしょう?

  • Access 2003 でフォームフィルターがかかりません。

    Access 2003 でフォームフィルターがかかりません。 どなたか助けてください。 アクセス初心者です。 フォームの詳細欄にチェックボックス(フィールド名:伝票チェック)を配置しております。 チェックの入っていないものを表示させたいです。 フォームヘッダーのオプショングループ(フレーム67)に オプションボタン0-オプション値0と オプションボタン2-オプション値2 の2個のオプションボタンを配置してあります。 クリック時のイベントプロシージャに以下のコードを書きました。 Private Sub フレーム67_Click() If Me!フレーム67 = 0 Then Me.Filter = 伝票チェック = 0 Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = True End If End Sub 実行時エラーは出ませんが、データが何も表示されません。 どうすればいいのでしょう??? どなたかお願いします。

  • アクセス レポートにフィルタをかけたい

    testと言う名のレポートに数値と言うコントロールが詳細の上にあるのですが レポートを開いてる状態の時に標準モジュールから Sub Sample() With Reports("test") .Filter = "数値 > 0" .FilterOn = True End With End Sub を実行すると、 実行時エラー 3070 数値を有効なフィールド名、または式として認識できません。 となります。 フィルタをかける方法を教えてください。ご教授よろしくお願いします。

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

    マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが 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 & "'" の文法がおかしいのだと思うのですが、どこが変ですか?

専門家に質問してみよう