Vb.net VB窗体运行时错误,向数据表中添加列

Vb.net VB窗体运行时错误,向数据表中添加列,vb.net,ms-access,runtime-error,Vb.net,Ms Access,Runtime Error,您好,我目前正在学校做一个订购系统项目,我对VB表单相当陌生 我有一个名为tblMenuInfo的访问表,其列为ItemNo,DishName,DishPrice 我正在尝试向数据表中添加一列,名为SubTotal和Quantity。但是我得到了下面的错误消息 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim it

您好,我目前正在学校做一个订购系统项目,我对VB表单相当陌生

我有一个名为tblMenuInfo的访问表,其列为
ItemNo
DishName
DishPrice

我正在尝试向数据表中添加一列,名为Sub
Total
Quantity
。但是我得到了下面的错误消息

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

    Dim itemno As String
    Dim quantity, count As Integer
    count = count + 1

    itemno = TextBox5.Text
    Quantity = TextBox6.Text
    sql = ("SELECT ItemNo ,DishName, DishPrice FROM tblMenuInfo WHERE ItemNo = """ & itemno & """")
    da = New OleDb.OleDbDataAdapter(sql, Conn)
    da.Fill(dsorder, "OrderInfo")
    If count = 1 Then
        dsorder.Tables("OrderInfo").Columns.Add("Quantity")
        dsorder.Tables("OrderInfo").Columns.Add("Sub total")

    End If
        DataGridView1.DataSource = dsorder.Tables("OrderInfo")

        DataGridView1.AutoResizeColumns()


End Sub
(很抱歉,我无法提供打印屏幕,我使用的是学校电脑)

我的程序只在第二次单击时崩溃


提前谢谢

第一次单击后,datatable包含以下列

 {"A column named 'Quantity' already belongs to this DataTable."}
如果第二次单击,datatable仍然包含这些列

ItemNo|Dishname|Dishprice|Total|Quantity 
当代码达到以下点时:

ItemNo|Dishname|Dishprice|Total|Quantity 
编译器说:“嘿,我不能添加该列!该列已存在于数据表中”

您实际需要做的是:检查列是否已经存在,或者清除该数据集的datatable

解决方案1:单击后清除数据表

    dsorder.Tables("OrderInfo").Columns.Add("Quantity")
解决方案1的注意事项:ds包含的所有数据都将丢失

解决方案2:检查该列是否存在

 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Dim itemno As String
Dim quantity, count As Integer
dsorder.Tables.Clear()

dsorder在哪里定义?单击该按钮时,会将该列添加到表中。第二次单击时,该列从第一次单击时就已存在。您可能应该在单击按钮的内部本地定义dsorder。或者至少,清除按钮click开头的列。dsorder是一个公共数据集,但我现在将其设置为本地数据集。谢谢,干杯,伙计!玩得高兴
'Check if datatable exists
If (dsorder.Tables("OrderInfo") IsNot Nothing) Then
     'Check if column exists
     If Not dsorder.Tables("OrderInfo").Columns.Contains("Quantity") Then
         dsorder.Tables("OrderInfo").Columns.Add("Quantity")
         dsorder.Tables("OrderInfo").Columns.Add("Sub total")

     End If
End If