0

テーブル名は sales で、もう 1 つは balance です。収支表の販売と更新で挿入コマンドを使用したい。私に何ができる?

     cmd.CommandText = " INSERT INTO SALES VALUES('" & ComboBox1.Text & " ' , " & SILVER & " ," & GOLD & ",'" & ComboBox2.Text & "'," & KILO.Text & ", " & TOUCH.Text & " ," & TOTKILO.Text & "," & TextBox3.Text & "," & TextBox8.Text & "," & KGOLD & "," & KSILVER & "," & TextBox9.Text & " ," & TextBox10.Text & "," & TextBox11.Text & "," & TextBox12.Text & " , " & TextBox13.Text & " )"
     Dim NB As Double
    NB = TextBox11.Text
    ST = ComboBox1.SelectedValue.ToString
    cmd.CommandType = " UPDATE BALANCE SET OBBALANCE = " & " " & NB & " " & " WHERE         CUSTOMERNAME =  " & " '" & ST & "'" & " "
    cmd.Connection = con
    cmd.ExecuteNonQuery()
    con.Close()

Conversion from string "UPDATE BALANCE SET OBBALANCE = " to type 'Integer' is not validとしてエラーが表示されます。

4

3 に答える 3

3

INSERT ステートメントの最後にセミコロンを追加して、それらを 2 つの別個のステートメントに分割できます。しかし、あなたのエラーは、あなたが CommandType を文字列に設定していて、これが列挙型であることです: CommandType Enumeration

于 2011-04-27T15:35:57.877 に答える
1

CommandTypeの値が何であるかを示す列挙型CommandTextです: クエリ、テーブル名など。

そこにクエリ テキストを配置することはできません。

代わりに、次のいずれかを実行する必要があります (最良のものから順に)。

  1. 両方のコマンドをサーバー側のストアド プロシージャに入れ、ストアド プロシージャを呼び出します。これはより良い方法です。

  2. UPDATEコマンドにコマンドを追加しINSERTます。

  3. の別のインスタンスを作成ADO.Commandし、同じトランザクションで再度実行してください。

于 2011-04-27T15:34:16.877 に答える
0

次を使用して両方をサーバーに送信できます;

cmd.CommandText="insert into ...(...) values(...); update ... set ..."
cmd.Connection=con
cmd.ExecuteNonQuery()

これは、使用した ID 値を取得する方法でもあり、. の;select @@identity後にa を追加しますinsert

CommandType他の人は、触れるのが間違ったプロパティである理由を説明したので、そのままにしておきます。

于 2011-04-27T15:38:27.693 に答える