简化VB.NET上的INSERTION语法

时间:2018-03-22 03:00:14

标签: vb.net

我有这样的形式 PO form 在表单的第二部分,用户可以输入最多一到八个数据,这里是我的插入代码:

Sub input_item1()
    If TB_Item1.Text <> "" Then
        With cmd2a
            con.Open()
            .CommandText = "INSERT INTO po_details (po_number, date, item_name, quantity, unit, price, discount, total_price) VALUES (@numb, @date, @item, @qty, @unit, @price, @disc, @total)"
            .Parameters.AddWithValue("@numb", (TB_PoNumb.Text).ToUpper)
            .Parameters.AddWithValue("@date", DT1.Value)
            .Parameters.AddWithValue("@item", (TB_Item1.Text).ToUpper)
            .Parameters.AddWithValue("@qty", TB_qty1.Text)
            .Parameters.AddWithValue("@unit", (TB_unit1.Text).ToUpper)
            .Parameters.AddWithValue("@price", (TB_Price1.Text).ToUpper)
            .Parameters.AddWithValue("@disc", (TB_Disc1.Text).ToUpper)
            .Parameters.AddWithValue("@total", (TB_total1.Text).ToUpper)
            .ExecuteNonQuery()
            .Dispose()
            con.Close()
        End With
    End If
End Sub

项目编号2

Sub input_item2()
    If TB_Item2.Text <> "" Then
        With cmd2b
            con.Open()
            .CommandText = "INSERT INTO po_details (po_number, date, item_name, quantity, unit, price, discount, total_price) VALUES (@numb, @date, @item, @qty, @unit, @price, @disc, @total)"
            .Parameters.AddWithValue("@numb", (TB_PoNumb.Text).ToUpper)
            .Parameters.AddWithValue("@date", DT1.Value)
            .Parameters.AddWithValue("@item", (TB_Item2.Text).ToUpper)
            .Parameters.AddWithValue("@qty", TB_qty2.Text)
            .Parameters.AddWithValue("@unit", (TB_unit2.Text).ToUpper)
            .Parameters.AddWithValue("@price", (TB_Price2.Text).ToUpper)
            .Parameters.AddWithValue("@disc", (TB_Disc2.Text).ToUpper)
            .Parameters.AddWithValue("@total", (TB_total2.Text).ToUpper)
            .ExecuteNonQuery()
            .Dispose()
            con.Close()
        End With
    End If
End Sub

并且我保持重写代码8次匹配最大项目的数量,是否有简化这个? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

即使有更好的方法来处理这个问题,正如评论中所建议的那样,我认为我会提出问题的答案,因为这个原则可能与其他场合有关。要做的是将公共代码提取到自己的方法中,将不同的部分提取为参数,例如

Sub input_item(cmd As SqlCommand, TB_Item As TextBox)
    If TB_Item.Text <> "" Then
        With cmd
            con.Open()
            .CommandText = "INSERT INTO po_details (po_number, date, item_name, quantity, unit, price, discount, total_price) VALUES (@numb, @date, @item, @qty, @unit, @price, @disc, @total)"
            .Parameters.AddWithValue("@numb", (TB_PoNumb.Text).ToUpper)
            .Parameters.AddWithValue("@date", DT1.Value)
            .Parameters.AddWithValue("@item", (TB_Item.Text).ToUpper)
            .Parameters.AddWithValue("@qty", TB_qty2.Text)
            .Parameters.AddWithValue("@unit", (TB_unit2.Text).ToUpper)
            .Parameters.AddWithValue("@price", (TB_Price2.Text).ToUpper)
            .Parameters.AddWithValue("@disc", (TB_Disc2.Text).ToUpper)
            .Parameters.AddWithValue("@total", (TB_total2.Text).ToUpper)
            .ExecuteNonQuery()
            .Dispose()
            con.Close()
        End With
    End If
End Sub

然后调用该方法并根据需要传递适当的参数。