• ベストアンサー

抽出条件の表現方法(アクセス2000)

クエリの抽出条件でLIKE "*" と >"12345"を切替て使いたいのですが、どう表現して良いか IIF(DS = 1, "< " & dt(), "Like " & "'*'") のようにしたのですが、通用しません。 わかる方、ご教示下さい。

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

  • ベストアンサー
  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.4

クエリのデザイン(フィールド名など)が基本的に同じであれば 同じフォームから切り替えて使えます。 フォームのレコードソースをフォームを開くときに設定してあげればOKです。 Private Sub Form_Open(Cancel As Integer) If DS = 1 then Me.RecordSource = "SELECT * FROM クエリ1" Else Me.RecordSource = "SELECT * FROM クエリ2" End If End Sub と言った感じです。 そもそもここまでくればクエリでなくレコードソースを SQL文にしてしまえばいいかもしれません。 たとえば Private Sub Form_Open(Cancel As Integer) Dim Str as String Str="" If DS = 1 then Str = "抽出したいフィールド名 ='" & dt() & "'" Else Str = "抽出したいフィールド名 LIKE '" & * & "'" End If Me.RecordSource = "SELECT * FROM テーブル名 Where " & Str End Sub みたいなかんじ。 ちょっと難しいですか?

tach_ei
質問者

お礼

クエリの抽出条件定義にこだわらない方がいいですね。この方法で実現できそうです。本当にありがとうございました。

その他の回答 (4)

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.5

すいません間違えました >Str = "抽出したいフィールド名 LIKE '" & * & "'" Str = "抽出したいフィールド名 LIKE '*'" ですね。しかしながらLIKE * であればWhere条件を設定するまでもない?!

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.3

DSはなんでしょう? ユーザー定義関数? レコードごとに抽出条件が違うっていうのは 意味がわからないので何かconstなどで固定されたパラメーターや フラグなんでしょうね。 であればいっそ抽出条件の違うクエリを二つ作って それを切り替えて使う方向で考えてはいかがでしょうか。

tach_ei
質問者

補足

DSはおっしゃるとおりです。今はコメントいただいたように2つのフォームを切り替えて使用しています。1つのフォームで実現するために1つのクエリで実現できないか調べています。やはりだめなんでしょうか。

noname#140971
noname#140971
回答No.2

tab1: ID_field_1_field_2 1________1_12345 2________1_123456 3________2_1111111 クエリ1: ID_field_1_field_2 3________2_1111111 2________1_123456 SELECT * FROM tab1 WHERE (Field_1=1 And Field_2>"12345") Or (Field_1<>1); 普通に Or を使うべきケースだと思います。

tach_ei
質問者

補足

DSはフィールドではないです。IIFではなく、関数でも記述方法があればそれでもいいのですが、・・・

  • ttk11
  • ベストアンサー率25% (40/154)
回答No.1

抽出条件の行を2行、使用する たぶん DS はテーブルの項目に有るものだと 思うので IIF(DS = 1, "< " & dt(), "Like " & "'*'") の意味があまり詳しくは理解できませんが 以下の方法 DSのフィールド 対象のフィールド ↓ =1         >12345 <>1       LIKE("*") そもそも LIKE("*") なら 全件抽出となるので 2行目は指定不要かもしれませんが・・・

tach_ei
質問者

補足

回答ありがとうございます。しかし、DSはフィールドではありません。テーブルに関係ない条件です。

関連するQ&A