こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS VBA Parametersで or演算子を使用するには

ACCESS VBA Parametersで or演算子を使用するには?
抽出クエリを作成して、抽出条件欄に"[WWW]"を設定してます。
このクエリを使用して下記のコードを実行した所、カレントレコード無しとの
メッセージがでました。レコードは確かにいます。(1)の記述が悪いのでしょうか?

Sub 処理()
Dim DB As Database
Dim 情報 As Recordset
Dim Qdf As QueryDef

'db
Set DB = CurrentDb
Set Qdf = DB.QueryDefs("情報")
Qdf.Parameters("WWW") = " 01" OR "02" → (1)
Set 情報 = Qdf.OpenRecordset()

情報.MoveFirst  → デバックでとまるところ
Do Until 情報.EOF
MsgBox (情報!情報2)
情報.MoveNext
Loop

情報.Close
DB.Close
End Sub

ORをなくし"01"だけだとうまくいきます。
どうしても、このロジックを通したいのですが
教えてください。
ACCESS2000、XPPro を使用してます。

投稿日時 - 2010-09-24 21:23:26

QNo.6205537

すぐに回答ほしいです

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

たとえば、クエリのフィールドにパラメータを
複数設定するとして、[WWW]だけを設定すれば
クエリを開いたときにパラメータの入力は一回
しか表示されません。二回表示させようと思えば
[WWW] Or [XXX]とする必要があります。つまり
質問の要望ははやや「暖簾に腕押し」のような感じで、
上記のように、一つのフィールドの抽出条件に

[WWW] Or [XXX]

と設定し、コードで

Qdf.Parameters("[WWW]") = "01"
Qdf.Parameters("[XXX]") = "02"

とすれば、カレントレコードがない、という
エラーは出なくなると思いますが。

投稿日時 - 2010-09-25 02:37:43

お礼

なるほど!上手く出来ました
ありがとうございました。
これからも宜しくお願いいたします。

投稿日時 - 2010-09-25 08:14:59

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

(1)の箇所(Qdf.Parameters("WWW") = " 01" OR "02")は、
日本語にすると、"01" と "02"でor処理(ビット演算)して、WWWのパラメータに代入となります。

ですので、WWWに入るのは、3 (2進数で 01 と 10 で or処理をすると 11 となる。10進数で言うと3)になります。

(1)を、下記のようにすれば、イイんではないでしょうか?
Qdf.Parameters("WWW") = "'01' Or '02'"

投稿日時 - 2010-09-24 21:47:17

補足

早々に、ご回答ありがとうございます。
しかしながら結果は同じでした。
「カレントレコードがありません~」というメッセージが表示されます。

投稿日時 - 2010-09-24 23:46:34

あなたにオススメの質問