この人頭いいなと思ったエピソード

WHERE句において、以下のように 変数=変数 という記述は出来ますでしょうか?

SQL = "SELECT ID FROM T_製品 WHERE '" & Survey & "'='" & Target & "';"
Set DB = CurrentDb
Set RS = DB.OpenRecordset(SQL)

エラーは、発生しないのですが、対象のIDがあるはずなのに、求められません。

お分かりになる方、教えて頂きますよう、お願いします。

質問者からの補足コメント

  • 解決しましたので、報告します。

    ①SQL文を直しました
    誤:~ WHERE '" & Survey & "'='" & Target & "';"
     ↓
    正:~ WHERE " & Survey & "='" & Target & "';"

    ②変数のSurveyですが、文字列が数字から始まっているのをアルファベットに直しました

    ③同じく変数のSurveyですが、一部、途中で半角の"+"を使っていたので、全角の"+"に直しました


    都合、行いたい処理ができるようになりました。

    Q:WHERE句において、以下のように 変数=変数 という記述は出来ますでしょうか? に関しては、
    A:できる。 ということが今回分かり、今後、活用していきたいと思います。

    ご回答いただいた皆様、どうもありがとうございました。
    (当方のミスが主要因のため、回答しづらい案件になり、申し訳ありませんでした)

      補足日時:2021/03/10 15:37

A 回答 (2件)

SQL = "SELECT ID FROM T_製品 WHERE '" & Survey & "'='" & Target & "';"



Survey や Target に何が入っているか確認してますか?
もし同じものが入っていれば、T_製品テーブルのすべての ID が抽出されます。
違うものであれば、1件も抽出されません。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

>Survey や Target に何が入っているか確認してますか?
はい、直前にMsgBoxで確認しています。
ですが、狙い通りの文字列になっています。


補足しますと、コードは以下のように続きます。

If RS.EOF Then
Else
MsgBox "処理を中止します"
 GoTo END
End If

<判定処理>
RS.EOF が 真 →対象のIDが無い →何もしない
RS.EOF が 偽 →対象のIDが有る →エラー処理

対象のIDがあるはずなのに、エラー処理にならない状況です。

お礼日時:2021/03/10 09:28

SEL = ... の行と Set DB = ... の行の間に


Debug.Print SQL
という行を入れて置き、変数 SQL の中身をイミディエイトウィンドウに出力し、それをコピーしてクエリを作ってみて期待通りの出力を得られるか確認してみてはどうでしょうか?
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

今まで、「Debug.Print」は使用したことが無く、今回は勉強になりました。

原因が判明し、補足コメントに入力させて頂きます。

お礼日時:2021/03/10 15:34

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A