アプリ版:「スタンプのみでお礼する」機能のリリースについて

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 を使用してます。

A 回答 (2件)

たとえば、クエリのフィールドにパラメータを


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

[WWW] Or [XXX]

と設定し、コードで

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

とすれば、カレントレコードがない、という
エラーは出なくなると思いますが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/09/25 08:14

(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 23:46
    • good
    • 0

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