DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQL文の発行について

環境/言語:[開発環境 xp .NetFramework 2.0]
分類:[.NET]

いつもお世話になります。

今回SQL文を発行しようと以下のようにコーディングしています。

dr = Dataset.Tables(0).NewRow()
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
strSQL = "SELECT * FROM XHEADT WHERE CODE= dr.Item(3).Text"
      Dim cm As New SqlCommand(strSQL, clsDB.objConn)
Dim dt As New DataTable
Dim da As New SqlDataAdapter(cm)
da.Fill(dt)

da.Fill(dt)のところで、エラーがでてしまい、SQL文が実行されません。

エラー内容が、System.Data.SqlClient.SqlClient.SqlException:列"dr"、ユーザー定義関数、または集計
"dr.Item"のいずれかが見つかりません。または名前があいまいです。

sqlserverから、上記sql文を手動で動かすとうまく動きます。
もしかすると、変数を文字列と解読しているのでしょうか?
■No23016に返信(KYOUさんの記事)
変数を文字列として記述していますよね。
どこが文字列なのかは違う色で表示されませんか?
正しくは
"SELECT * FROM XHEADT WHERE CODE= " & dr.Item(3).Text
でしょう。

>sqlserverから、上記sql文を手動で動かすとうまく動きます。
これはウソです。
"SELECT * FROM XHEADT WHERE CODE= dr.Item(3).Text"
をデータベースに処理させたなら同じエラーメッセージが出るはずです。
dr は VB で宣言された変数であり、データベースに理解できるはずが
ありません。
■No23018に返信(るしぇさんの記事)
> ■No23016に返信(KYOUさんの記事)
> 変数を文字列として記述していますよね。
> どこが文字列なのかは違う色で表示されませんか?
> 正しくは
> "SELECT * FROM XHEADT WHERE CODE= " & dr.Item(3).Text
> でしょう。
>
> >sqlserverから、上記sql文を手動で動かすとうまく動きます。
> これはウソです。
> "SELECT * FROM XHEADT WHERE CODE= dr.Item(3).Text"
> をデータベースに処理させたなら同じエラーメッセージが出るはずです。
> dr は VB で宣言された変数であり、データベースに理解できるはずが
> ありません。

るしぇさん回答ありがとうございます。

すみません。確かにsqlserverで動かしたときは、変数ではなく実際のデータを
入れていました。

なんとかsql文動きました。

ありがとうございます。
■No23019に返信(KYOUさんの記事)
> ■No23018に返信(るしぇさんの記事)
>>■No23016に返信(KYOUさんの記事)
>>変数を文字列として記述していますよね。
>>どこが文字列なのかは違う色で表示されませんか?
>>正しくは
>>"SELECT * FROM XHEADT WHERE CODE= " & dr.Item(3).Text
>>でしょう。
>>
>>>sqlserverから、上記sql文を手動で動かすとうまく動きます。
>>これはウソです。
>>"SELECT * FROM XHEADT WHERE CODE= dr.Item(3).Text"
>>をデータベースに処理させたなら同じエラーメッセージが出るはずです。
>>dr は VB で宣言された変数であり、データベースに理解できるはずが
>>ありません。
>
> るしぇさん回答ありがとうございます。
>
> すみません。確かにsqlserverで動かしたときは、変数ではなく実際のデータを
> 入れていました。
>
> なんとかsql文動きました。
>
> ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板