#database #vb.net #ms-access #error-handling
Вопрос:
Я пытаюсь писать в базу данных Access из текстовых полей в моей основной форме. Но когда я запускаю свою программу, я получаю эту ошибку для текстового поля «Промежуточный итог», хотя я пытался изменить тип данных.
Тип данных в моей базе данных access для этого поля: Число > Децима.
Я не уверен, что делаю что-то не так.
Dim str = "Insert into Orders(OrderNo, Subtotal, VAT, FullAmount, Discount, CustomerID, Employees) Values (@OrderNo, @SubTotal, @VAT, @FullAmount, @Discount, @CustomerID, @Employees);"
Using connection As New OleDbConnection(builder.ConnectionString),
cmd As OleDbCommand = New OleDbCommand(str, connection)
With cmd.Parameters
.Add("@OrderNo", OleDbType.Integer).Value = Convert.ToInt32(txtorderno.Text)
.Add("@SubTotal", OleDbType.Decimal).Value = Convert.ToDecimal(txtsubtotal.Text)
.Add("@VAT", OleDbType.Integer).Value = Convert.ToInt32(txtvat.Text)
.Add("@FullAmount", OleDbType.Integer).Value = Convert.ToInt32(txttotal.Text)
.Add("@Discount", OleDbType.Integer).Value = Convert.ToInt32(txtdiscount.Text)
.Add("@CustomerID", OleDbType.VarChar).Value = (ComboBox2.Text)
.Add("@Employees", OleDbType.VarChar).Value = ComboBox1.Text
End With
connection.Open()
cmd.ExecuteNonQuery()
Комментарии:
1. Скорее всего, это ошибка из
Convert.ToInt32
илиConvert.ToDecimal
. ИспользуйтеInt32.TryParse
иDecimal.TryParse
вместо этого.2. Что именно представляет собой содержимое txtsubtotal.Text. У вас есть какое-то неожиданное форматирование и/или символы валюты? И немного не по теме, кажется странным, промежуточный итог-десятичный, но НДС, полная сумма и скидка-все целые числа.
3. @user9938 Операция не может просто заменить
TryParse
методы.TryParse
возвращает логическое значение, которое не будет желаемым результатом.4. @Mary: Я никогда не заявлял и не намекал, что другие изменения кода не потребуются-я просто предложил их использовать. Не предоставляя дополнительной информации, я намеревался, чтобы ОП изучила документацию о том, как использовать каждый из них.
5. @user9938 Извините, я неправильно понял.