2016-01-25 7 views
0

Я пишу код для обновления, чтобы уменьшить некоторое значение из текстового поля как этот 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 
+2

Возможно, это связано с вашими типами данных. 'OleDbType.SmallInt' сопоставляется с Int16, так что ИД находится на грани его переполнения. Кроме того, использование Val возвращает double, поэтому у вас есть преобразование данных. Кроме того, избавиться от пустого Try/Catch - вы проглатываете все ошибки, которые может сообщить код – Plutonix

ответ

0

Возможно, существует еще одно соединение, блокирующее запись в вашу базу данных.

Убедитесь, что любой процесс, который может иметь открытое соединение с базой данных, будет закрыт.

Смежные вопросы