• ベストアンサー

iserease のDB2 UDBに対してODBC接続のVBAでSQL

iserease のDB2 UDBに対してODBC接続のVBAでSQLを書いています。 下の構文のWHERE句に対しOR条件を加えると 読むレコードがゼロ件になってしまいました。 QSQL = QSQL & " WHERE TNO='" & PTNO & "'" QSQL = QSQL & " OR TNO='" & PSPC & "'" 1行目のPTNOの指定だけだと抽出できます。 なぜでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

同じようにやってみましたが、私は普通にレコードが取得できます。 レコードセットを開く直前に、QSQLをmsgboxか何かに出力して 意図したsqlになっているか再確認してみてはいかがでしょうか。

hokaktei
質問者

お礼

前述の構文のすぐ前にあるLeft join が原因でした。 存在しないデータをLeft joinしようとした場合ゼロ件(?)になってしまうようでした。 MSGBOXで見てたらわかりました。ありがとうございました!

hokaktei
質問者

補足

ちゃんとなってました,,,

その他の回答 (1)

回答No.1

OR条件を加えるとゼロ件って不思議ですね。。。 原因はわかりませんが、以下の場合はどうなりますか? QSQL = QSQL & " WHERE TNO IN ('" & PTNO & "', '" & PSPC & "')"

hokaktei
質問者

お礼

ありがとうございました!

hokaktei
質問者

補足

一緒でした。TNOがPTNOの場合のみデータが取れました。