所以我正在制作一个程序,您可以从组合框中选择产品,选择数量,它将返回列表框中的价格和数量以及总价格。然后,它将列表框中的数据输入到Microsoft Access数据库中。
当我点击按钮btnOrderProducts时,收到错误信息:
错误:从字符串“x”到类型Integer的转换无效
我不确定此错误的含义以及如何找出解决方案。将访问数据库数据类型从整数更改为短文本并没有解决它,因此它与代码有关。
Here is an image of the form for reference
以下是代码:
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("x"))
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("@Quanity").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
答案 0 :(得分:1)
答案 1 :(得分:1)
此行不会删除" x"来自字符串
Dim prod_quantity = Integer.Parse(prod_list.ElementAt(0).Remove("x"))
应该是:
Dim prod_quantity = Integer.Parse(prod_list.ElementAt(0).Remove(0,1))
但我不建议将items-properties连接到字符串,然后拆分字符串以获取items-properties。 给我前一个问题的答案一个机会。所以你不会遇到这些问题。
此外,我建议在项目属性中将Option Strict
设置为On
。