質問

質問者: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
質問番号:3765487
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:dbohunger >言語は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
種類:回答
どんな人:経験者
自信:自信あり
回答日時:08/02/14 20:24
回答番号:No.2
この回答へのお礼有難うございました。
hcntが単なる文字列になってしまうのですね。
理解していませんでした。 
デバックの方法も有難うございました。

回答

良回答10pt

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

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

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