Я пишу код для обновления, чтобы уменьшить некоторое значение из текстового поля как этот Textbox4.Text with value = "5"
уменьшить PRO_BALANCE
поля в таблице Combobox2.Text with value = "30000"
Это соответствует PRO_ID
поля в таблицеAccess SQL Update запрос не обновить таблицу
Try
Dim constr As String = ConfigurationManager.ConnectionStrings("WindowsApplication1.My.MySettings.DatabaseMobileConnectionString").ConnectionString
'Dim con As New OleDbConnection(constr)
'Dim cmd As OleDbCommand
Dim cmdtext As String = "UPDATE PRODUCT" & _
" SET PRO_BALANCE = PRO_BALANCE -?" & _
" WHERE (PRO_ID = ?)"
Using con As New OleDbConnection(constr)
Using cmd As New OleDbCommand(cmdtext, con)
cmd.CommandType = CommandType.Text
cmd.Parameters.Add("@pro_Balance", OleDbType.SmallInt).Value = Val(TextBox4.Text)
cmd.Parameters.Add("@Pro_ID", OleDbType.SmallInt).Value = Val(ComboBox2.Text)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
Catch ex As Exception
End Try
это ничего не произошло поле PRO_BALANCE остается тем же не убывает
PRO_ID PRO_BALANCE
30000 50
было бы
PRO_ID PRO_BALANCE
30000 45
Возможно, это связано с вашими типами данных. 'OleDbType.SmallInt' сопоставляется с Int16, так что ИД находится на грани его переполнения. Кроме того, использование Val возвращает double, поэтому у вас есть преобразование данных. Кроме того, избавиться от пустого Try/Catch - вы проглатываете все ошибки, которые может сообщить код – Plutonix