- ベストアンサー
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の指定だけだと抽出できます。 なぜでしょうか。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
同じようにやってみましたが、私は普通にレコードが取得できます。 レコードセットを開く直前に、QSQLをmsgboxか何かに出力して 意図したsqlになっているか再確認してみてはいかがでしょうか。
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
回答No.1
OR条件を加えるとゼロ件って不思議ですね。。。 原因はわかりませんが、以下の場合はどうなりますか? QSQL = QSQL & " WHERE TNO IN ('" & PTNO & "', '" & PSPC & "')"
質問者
お礼
ありがとうございました!
質問者
補足
一緒でした。TNOがPTNOの場合のみデータが取れました。
お礼
前述の構文のすぐ前にあるLeft join が原因でした。 存在しないデータをLeft joinしようとした場合ゼロ件(?)になってしまうようでした。 MSGBOXで見てたらわかりました。ありがとうございました!
補足
ちゃんとなってました,,,