テーブルからデータを取得するには?

解決


 2008-02-28 10:04:07  No: 144477  IP: 192.*.*.*

お世話になっています。

テーブルからのデータ取得処理について原因のわからないエラーが出てしまい、お力をお借りしたいと思います。
環境はVB2005になります。

入力された番号を元にデータを取得するのですが、「ORA-00904: "店コ": 無効な識別子です。」というエラーが出てしまいます。
途中で項目名が途切れてしまっているように見えますが、なぜこうなるのかがわかりません。もっと長い項目名(漢字8文字)は問題なかったので、項目の文字列長が原因とも思えないのですが、解決方法がお分かりの方がいらっしゃいましたらご教授ください。

よろしくお願いします。


##以下コード

    cmd.Connection = connection
    cmd.CommandText = Nothing

    cmd.CommandText = "SELECT 店コード FROM A000 " & _
                      "WHERE 顧客番号 = '" & strKokyakuNum & "' " & _
                      "AND 顧客番号枝番 = '" & strKokyakuEda & "'"
    connection.Open()
    reader = cmd.ExecuteReader()        ←ここでエラー

編集 削除
YuO  2008-02-28 10:18:46  No: 144478  IP: 192.*.*.*

Oracleのエラーが出ているのですよね。
まずは,同一のSQLをOracle付属のソフトで流してみてください。
同様のエラーが出ると思います。
# つまりは,VBの問題ではなく,Oracleの問題ではないか,ということ。

ちょっとgoogleで調べた感じでは,列名を二重引用符でくくれば解決しそうですが。

編集 削除
魔界の仮面弁士  2008-02-28 10:39:19  No: 144479  IP: 192.*.*.*

YuOさんも書かれていますが、Oracle では、『ー』は、そのままでは使えないはずです。
他には、『No.』(実際は漢字一文字)なども駄目だったかと。

SELECT 店コード FROM 〜 ではなく、
SELECT "店コード" FROM 〜 にしてみてください。

プログラムでいえば、
  cmd.CommandText = "SELECT ""店コード"" FROM A000 " &
のような構文になります。


それと…今回の問題とは別件ですが、strKokyakuNum 内に
「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?

編集 削除
 2008-02-28 11:41:27  No: 144480  IP: 192.*.*.*

早速のご返答ありがとうございました。

ご協力いただきまして、なんとか解決することができました。

>それと…今回の問題とは別件ですが、strKokyakuNum 内に
>「'」の文字が含まれていた場合のエスケープ処理は行ってありますか?
先頭に「0」がくることがあるためstring型で宣言しておりますが、運用上数字以外の文字列がテーブルに存在することがありえないため、入力チェックでNumeric、Length等の確認を行い排他してあります。
ご心配いただきましてありがとうございました。

編集 削除
 2008-02-28 11:42:44  No: 144481  IP: 192.*.*.*

申し訳ありません。
解決のチェックを入れ忘れました。

編集 削除