- ベストアンサー
Access+VB フィルターの使い方
フィールドの値をXとします。 このXが 1~3 または 6~9 の時フィルターで取出したい場合 Filter = ST FilterOn = True フィルターを ST="( X>=1 AND X<=3 ) OR ( X>=6 AND X<=9 )" では、ダメなんですね。 どんな記述のしかたをしたらよろしいでしょうか?
- situmonnsya
- お礼率70% (374/532)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
http://www.nurs.or.jp/~ppoy/access/access/acM015.html ここにヒントはないですか? ADOを使ったときに何か制約があるようです。
その他の回答 (2)
前のページの結論は、次のようでしたね。なので、今回は後者であり、うまくいくはずでした。 もしかして、Xのフィールドは文字列じゃないですか? そうしたら、 ST="( X>='1' AND X<='3' ) OR ( X>='6' AND X<='9' )" このように書かないといけないですね。 そもそも、ダメとは、どうダメだったのでしょうか? 思った値が取得できない? 何らかのエラーが発生している? <<結論>> ADO を使用した Recordset オブジェクトの Filter プロパティでは、 「Or 結合」 した句をさらに 「And 結合」 することはできません。 但し 「And 結合」 した句を 「Or」 で結合することはできます。
お礼
はい、うまくいくはずなんですが、エラーがでます。 結局、教えて頂いたサイトを参考に組んでみました。 結果オーライで、うまくいってます。 ありがとうございます でもまた、問題がおきて新しい質問を投稿します。 よろしくお願いします。
VBA でしょうか? ADO で接続されているなら、 rst.filter = ST そのままできると思いますが、 前後は、どのような記述をされているのでしょうか?
補足
ん~~ん。 データベースは初心者なもので・・・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を使っています。 なぜでしょうか?
- ベストアンサー
- その他MS Office製品
- フィルタでワイルドカードは使えない?
アクセスのフォームにフィルタを掛けたいのですが 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 & "'" の文法がおかしいのだと思うのですが、どこが変ですか?
- ベストアンサー
- その他(データベース)
補足
参考になりました・・・・が。 少し私には難解です。 ありがとうございます。