ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3765487 列名が無効です
質問者:tenikiti03 For hcnt = 1 To 18
w1_kin = 0
cmd.CommandText = "SELECT sum(sisitu_db) FROM syosai " _
& "WHERE hno_db = hcnt "

w1_kin = cmd.ExecuteScalar() + w1_kin
省略
NEXT
テーブルの列hno_dbにあるコード1から18毎の金額合計を求める
のですが、上記の式(コード1の場合)では「hcntは列名の無効」となります。
hno_db = 1 では正しく実行されます。
宜しくお願いします。
困り度:
  • すぐに回答を!
質問投稿日時:
08/02/11 14:07
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.2 >言語はSqlseverです
「Sqlserver」という言語はありません。
きっと「Visual Basic」ですね。

すでに shimix さんから的確なアドバイスが付いていますが、
意味が分かっていないようです。

>For hcnt = 1 To 18
としているので、「hcnt」は変数です。
それをダブルクォーテーション「"」で囲ってしまっては
単なる文字列になってしまい、変数「hcnt」の「内容」は
取り出せませんよ。

フォームにコマンドボタンを1個配置し、次のコード(3行目から4行目を入力)を実行してみると、何が起こっているかわかるはずです。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hcnt As Integer = 1
MessageBox.Show("hcnt=" & hcnt)
End Sub
回答者:dbohunger
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
08/02/14 20:24
この回答へのお礼有難うございました。
hcntが単なる文字列になってしまうのですね。
理解していませんでした。 
デバックの方法も有難うございました。

回答良回答10pt

ANo.1 言語が何かわかりませんが、hcntをリテラル中に書いても勝手に展開はされないと思います。

  cmd.CommandText = "SELECT sum(sisitu_db) FROM syosai " & "WHERE hno_db = " & hcnt & ・・・

とかでは?
回答者:shimix
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/02/11 14:36
この回答へのお礼早速有難うございます 言語はSqlseverです
やはり出来ないのでしょうか?