都道府県穴埋めゲーム

クエリの抽出条件でLIKE "*" と >"12345"を切替て使いたいのですが、どう表現して良いか

IIF(DS = 1, "< " & dt(), "Like " & "'*'")

のようにしたのですが、通用しません。

わかる方、ご教示下さい。

A 回答 (5件)

抽出条件の行を2行、使用する


たぶん DS はテーブルの項目に有るものだと
思うので
IIF(DS = 1, "< " & dt(), "Like " & "'*'")
の意味があまり詳しくは理解できませんが
以下の方法

DSのフィールド 対象のフィールド

=1         >12345
<>1       LIKE("*")

そもそも LIKE("*") なら 全件抽出となるので
2行目は指定不要かもしれませんが・・・

この回答への補足

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

補足日時:2007/11/20 09:44
    • good
    • 0

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 を使うべきケースだと思います。

この回答への補足

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

補足日時:2007/11/20 09:48
    • good
    • 0

DSはなんでしょう? ユーザー定義関数?



レコードごとに抽出条件が違うっていうのは
意味がわからないので何かconstなどで固定されたパラメーターや
フラグなんでしょうね。

であればいっそ抽出条件の違うクエリを二つ作って
それを切り替えて使う方向で考えてはいかがでしょうか。

この回答への補足

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

補足日時:2007/11/21 16:22
    • good
    • 0

クエリのデザイン(フィールド名など)が基本的に同じであれば


同じフォームから切り替えて使えます。

フォームのレコードソースをフォームを開くときに設定してあげれば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


みたいなかんじ。
ちょっと難しいですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/22 07:42

すいません間違えました



>Str = "抽出したいフィールド名 LIKE '" & * & "'"


Str = "抽出したいフィールド名 LIKE '*'"

ですね。しかしながらLIKE * であればWhere条件を設定するまでもない?!
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!