【问题标题】:Trying to Decrement the Sold quantity of Stock in Database试图减少数据库中库存的已售数量
【发布时间】:2018-11-29 17:36:18
【问题描述】:

我在数据库中有一个批处理表,其中包含名为 Quantity、Sold_qty 和 Left_qty 的列。假设我在表中有这些数据。

 Quantity||Sold_qty||Left_qty
  20     ||    15   ||  5

然后我想做的是,当我更新它们时,假设我更新已售出的数量少于已存储在数据库中的数量,那么它应该更新库存并应该减少已售数量并增加剩余数量。

--例如,如果我为 Sold_qty 提供 10,则为 10

Quantity||Sold_qty||Left_qty
  20     ||    10   ||  10

我将数据存储在 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();

            }

【问题讨论】:

  • Quantity = Sold_qty + Left_Qty?总是?然后只需读取数量,将新值存储在 Sold_qty 中,并在 Left_qty 中计算值“(数量-Sold_qty)”。无论如何,这个问题与 wpf 没有任何关系,更可能是 sql
  • 没有预定义数量值。我已经存储了 Quantity 的预定义值
  • 我没说你应该改变数量。只有另外两个值。并且在一个 SqlCommand 中更好(否则更好地使用 TransactionScope)
  • 有一个只有QuantitySold_qty 的表,然后是一个也计算(Quantity - Sold_qty) as Left_qty 的视图?

标签: c# sql data-binding datatable datagrid


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2012-01-10
    • 2017-10-17
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2012-03-06
    • 2014-05-04
    相关资源
    最近更新 更多