Можем ли мы использовать и Вставить и Обновить в одной и той же операции кнопки? - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть имя таблицы в качестве продаж, а другое - баланс.Я хочу использовать команду вставки в продажах и обновления для таблицы баланса.Что я могу сделать?

     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()

Отображается ошибка как Преобразование из строки «UPDATE BALANCE SET OBBALANCE =» в тип «Integer» недопустимо .

Ответы [ 3 ]

3 голосов
/ 27 апреля 2011

Вы можете добавить точку с запятой в конце оператора INSERT, чтобы разделить их на два отдельных оператора.Но ваша ошибка в том, что вы устанавливаете свой CommandType в строку, и это перечисление: Перечисление CommandType

1 голос
/ 27 апреля 2011

CommandType - это перечисление, которое сообщает, что представляет собой значение в CommandText: запрос, имя таблицы и т. Д.

Вы не можете поместить туда текст запроса.

Вместо этого вам следует выполнить одно из следующих действий (от лучшего к худшему):

  1. Поместить обе команды в сохраненный процесс на стороне сервера и вызвать сохраненный процесс.Это было бы лучше.

  2. Добавьте команду UPDATE к команде INSERT.

  3. Создайте еще один экземпляр ADO.Command и запустите его снова в той же транзакции.

0 голосов
/ 27 апреля 2011

Вы можете отправить оба на сервер, используя ;:

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

Это также, как вы вернете используемое значение идентификатора, вы добавите ;select @@identity после insert.

Другие рассказали, почему CommandType - это неправильное свойство, к которому нужно прикасаться, поэтому я оставлю это здесь.

...