プロが教えるわが家の防犯対策術!

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 では正しく実行されます。
宜しくお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

有難うございました。
hcntが単なる文字列になってしまうのですね。
理解していませんでした。 
デバックの方法も有難うございました。

お礼日時:2008/02/14 20:58

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



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

とかでは?
    • good
    • 0
この回答へのお礼

早速有難うございます 言語はSqlseverです
やはり出来ないのでしょうか?

お礼日時:2008/02/11 14:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!