Ошибка «Входная строка была не в правильном формате» VB

#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 Извините, я неправильно понял.