我在数据库中有一个批处理表,该表有名为Quantity,Sold_qty和Left_qty的列。假设我在表中有此数据。
Quantity||Sold_qty||Left_qty
20 || 15 || 5
然后我想做的是,当我更新它们时,假设如果我用更少的数量更新了sold_qty,然后已经存储在数据库中,那么它应该更新库存,并应该减少出售数量并增加剩余数量。
-例如,如果我为Sold_qty提供10,则为10 <15,则15-10 = 5,则应减少Sold_qty中的5个项目,并将它们5添加到Left_qty中。因此,它在下面变成这样。
Quantity||Sold_qty||Left_qty
20 || 10 || 10
我有数据存储在Datagrid中。 datagrid中有多行。我已经写了这段代码。任何帮助,将不胜感激。
int difference = Convert.ToInt32(textBox3.Text)-ordr_qty;
textBox9.Text = difference.ToString();
for (int i = 0; i < newDt.Rows.Count; i++)
{
SqlCommand command = new SqlCommand("update batch set sold_qty=sold_qty-@soldqty2 where id=@id2", con);
command.Parameters.AddWithValue("@soldqty2", Convert.ToInt32(newDt.Rows[i]["qty"]));
command.Parameters.AddWithValue("@id2", Convert.ToInt32(newDt.Rows[i]["batch_num"]));
rexe = command.ExecuteNonQuery();
SqlCommand command3 = new SqlCommand("update batch set left_qty=(select sum(quantity+sold_qty) from batch where id=@id3) where id=@id3", con);
command3.Parameters.AddWithValue("@id3", Convert.ToInt32(newDt.Rows[i]["batch_num"]));
command3.ExecuteNonQuery();
}
答案 0 :(得分:1)
假设在DB列名称为Quantity
,并且在DataGrid.Cell(newDt.Rows [i])中,您为Sold_Qty
设置了新值:
for (int i = 0; i < newDt.Rows.Count; i++)
{
var soldQty = Convert.ToInt32(newDt.Rows[i]["qty"]);
var batchId = Convert.ToInt32(newDt.Rows[i]["batch_num"]);
SqlCommand command = new SqlCommand("update batch set sold_qty=@soldqty2, left_qty = Quantiy - @soldqty2 where id=@id2", con);
command.Parameters.AddWithValue("@soldqty2", soldQty);
command.Parameters.AddWithValue("@id2", batchId );
rexe = command.ExecuteNonQuery();
}