- ベストアンサー
列名が無効です
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 では正しく実行されます。 宜しくお願いします。
- みんなの回答 (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
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
言語が何かわかりませんが、hcntをリテラル中に書いても勝手に展開はされないと思います。 cmd.CommandText = "SELECT sum(sisitu_db) FROM syosai " & "WHERE hno_db = " & hcnt & ・・・ とかでは?
お礼
早速有難うございます 言語はSqlseverです やはり出来ないのでしょうか?
お礼
有難うございました。 hcntが単なる文字列になってしまうのですね。 理解していませんでした。 デバックの方法も有難うございました。