我有这样的形式 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次匹配最大项目的数量,是否有简化这个? 提前谢谢。
答案 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
然后调用该方法并根据需要传递适当的参数。