错误:从字符串“x”到类型Integer的转换无效。如何将整数转换为字符串?

时间:2017-12-07 08:46:14

标签: vb.net

所以我正在制作一个程序,您可以从组合框中选择产品,选择数量,它将返回列表框中的价格和数量以及总价格。然后,它将列表框中的数据输入到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

2 个答案:

答案 0 :(得分:1)

不幸的是,GalenPages.js方法没有按照您的想法执行。

从链接:

  

返回一个新字符串,其中当前实例中从指定位置开始并持续到最后一个位置的所有字符都已被删除

“x”无法转换为整数。

答案 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