繁体   English   中英

如何在C#和SQL Server中使用条件实现FIFO?

[英]How to implement fifo with conditions in C# and SQL Server?

我选择了多个具有相同产品名称,价格和数量的数据行,并根据它们在数据表中的主键值对其进行了排序。 但是当我减少库存数量时,所有行的数量都减少。 我希望我的代码根据在文本框中输入的用户数量检查库存数量,并仅从第一行减少库存。 到目前为止,这是我能够做到的。 预先为格式错误而道歉我是编程和stackoverflow的新手。

数据表具有列

Item_Name, Item_Quantity, Item_Price.

码:

private void btn_save_Click(object sender, EventArgs e)
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select * from stock_recieve where Item_Name like'" + comboBoxitem.Text + "'order by [Bill No] asc";

    cmd.ExecuteNonQuery();

    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);

    foreach (DataRow dr in dt.Rows)
    {
        // DataRow row = dt.Select("Item_Quantity").FirstOrDefault();
        dt.Rows[0]["Item_Quantity"]=;

        int qty = 0;
        string pname = "";

        qty = Convert.ToInt32(dr["Item_Quantity"].ToString());
        qty = Convert.ToInt32(textBoxqty.Text);

        pname = dr["Item_Name"].ToString();

        SqlCommand cmd6 = con.CreateCommand();
        cmd6.CommandType = CommandType.Text;
        cmd6.CommandText = "update stock_recieve set Item_Quantity=Item_Quantity-" + qty + "where Item_Name ='" + pname.ToString() + "'";

        cmd6.ExecuteNonQuery();
    }

    //MessageBox.Show("Record inserted successfully");
}

只需在您选择的查询中使用top 1 另外,使用SQL参数也非常重要。 试试:

...
cmd.CommandText = "select TOP 1 * from stock_recieve where Item_Name like @name order by [Bill No] asc";
cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value =comboBoxitem.Text;
cmd.ExecuteNonQuery();
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM