Что такое несоответствие типов данных в выражении критериев? Как устранить ошибку?

Ethan Payne спросил: 27 ноября 2017 в 05:57 в: vb.net

Я работаю над оценкой разработки программного обеспечения, которая требует от меня создания формы, в которой пользователь может приобретать продукты. Приобретенные продукты затем вводятся в базу данных Microsoft Access.

Вот некоторые изображения формы и таблицы базы данных:

Тем не менее, когда я нажимаю" data ", в сообщении появляется сообщение" btn ": несоответствие в критериях выражения." Эта проблема возникает только тогда, когда cmboxProduct представляет собой "чехол для iPad", что странно и смущает меня.

Ниже приведен код для визуальной базовой формы:

Imports System.Data.OleDb
Public Class frmOrderProduct
    Dim iPadCasePrice As String
    Dim iPad2Price As String
    Dim prod_list As List(Of String)
    Dim Total As Decimal    Private Sub frmOrderProduct_Load(sender As Object, e As EventArgs) Handles MyBase.Load        Call connection()        cmboxProduct.Items.Add("iPad Case")
        cmboxProduct.Items.Add("iPad 2")        iPadCasePrice = "$20.00"
        iPad2Price = "$200.00"        txtUsername.Text = frmLogin.txtUsername.Text    End Sub    Private Sub btnAddToCart_Click(sender As Object, e As EventArgs) Handles btnAddToCart.Click        If cmboxProduct.SelectedItem = "" Or txtQuantity.Text = "" Then
            MsgBox("Please fill out all required fields", MsgBoxStyle.OkOnly, "Invalid entered data")
        Else
            ListBoxCart.Items.Add("x" & txtQuantity.Text & " " & cmboxProduct.SelectedItem & " " & txtPriceEach.Text)            Dim q = Decimal.Parse(txtQuantity.Text)
            Dim p = Decimal.Parse(txtPriceEach.Text.Remove(0, 1)) 'need to remove the $ before parse
            Total += p * q
            txtTotalPrice.Text = String.Format("${0}", Total)            'txtShoppingCart.AppendText("x" & txtQuantity.Text & " " & Product1 & Environment.NewLine)
        End If
    End Sub    Private Sub txtQuantity_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles txtQuantity.KeyPress        If Asc(e.KeyChar) <> 8 Then
            If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                e.Handled = True
            End If
        End If    End Sub    Private Sub btnOrderProducts_Click(sender As Object, e As EventArgs) Handles btnOrderProducts.Click        Dim numberOfItems = ListBoxCart.Items.Count
        For Each item As String In ListBoxCart.Items            Try                cm = New OleDbCommand
                With cm
                    .Connection = cn
                    .CommandType = CommandType.Text
                    .CommandText = "INSERT INTO tblOrders ([ProductName],[Quantity],[PriceEach],[TotalPrice],[Username]) VALUES (@ProductName,@Quantity,@PriceEach,@TotalPrice,@Username)"                    prod_list = item.Split(" ").ToList
                    Dim prod_name = prod_list.ElementAt(1)
                    Dim prod_quantity = Integer.Parse(prod_list.ElementAt(0).Remove(0, 1))
                    Dim price_each = prod_list.ElementAt(2)                    .Parameters.Add(New OleDbParameter("@ProductName", OleDbType.VarChar, 255, prod_name))
                    .Parameters.Add(New OleDbParameter("@Quantity", OleDbType.VarChar, 255, prod_quantity))
                    .Parameters.Add(New OleDbParameter("@PriceEach", OleDbType.VarChar, 255, price_each))
                    .Parameters.Add(New OleDbParameter("@TotalPrice", OleDbType.VarChar, 255, Total))
                    .Parameters.Add(New OleDbParameter("@Username", OleDbType.VarChar, 255, txtUsername.Text))
                    prod_list = New List(Of String)                    cm.Parameters("@ProductName").Value = prod_name
                    cm.Parameters("@Quantity").Value = prod_quantity
                    cm.Parameters("@PriceEach").Value = price_each
                    cm.Parameters("@TotalPrice").Value = Total
                    cm.Parameters("@Username").Value = txtUsername.Text                    cm.ExecuteNonQuery()
                    MsgBox("Record saved.", MsgBoxStyle.Information)
                    cmboxProduct.SelectedItem = ""
                    txtQuantity.Text = ListBoxCart.Text = ""
                    txtTotalPrice.Text = ""                    Exit Sub
                End With
            Catch ex As Exception
                MsgBox(ex.Message, MsgBoxStyle.Critical)
            End Try        Next    End Sub    Private Sub btnClearCart_Click(sender As Object, e As EventArgs) Handles btnClearCart.Click        ListBoxCart.Items.Clear()
        Total = 0
        txtTotalPrice.Text = String.Empty    End Sub    Private Sub cmboxProduct_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmboxProduct.SelectedIndexChanged        If cmboxProduct.SelectedItem = "iPad Case" Then
            txtPriceEach.Text = iPadCasePrice
        End If        If cmboxProduct.SelectedItem = "iPad 2" Then
            txtPriceEach.Text = iPad2Price
        End If    End Sub
End Class

Any помощь и совет будет принята с благодарностью, большое спасибо за чтение этого далеко, если у вас есть. Спасибо!! ^ _ ^ Р>

0 ответов