自动从库存中的数量中减去销售数量并在C#中的数据网格中显示

时间:2017-07-20 11:43:01

标签: c# mysql datagridview

一直在尝试这个,但我还没有找到解决方案。我正在尝试实施一个POS。所以我有2个数据库表,一个是tblproducts,用于存储超市中的产品,并具有以下字段:productId,ProductName,ProductCategory,Quantity,MinimumQuantity,UnitPrice,Manufacturer。第二个表是tblsales,用于存储已售出的产品,并具有以下字段:ProductId,ProductName,Qty,Unitprice,amount,QuantityRemaining。有关tblsales的信息显示在datagridview中。

现在我遇到了一个问题,即我希望系统自动扣除客户从tblproducts中的总数量中购买的数量,并显示在数据网格中。并检查是否达到最小数量.. 任何Mysql都会向某人提供帮助。

1 个答案:

答案 0 :(得分:0)

如果您不需要特定的仓库数量,我会让tblProducts维持可供出售的实际数量。

tblSales中的数量是实际销售的销售数量。

顺便说一下,没有销售ID来分组tblSales中的行吗?

如何处理问题:

如果要为产品插入新的销售,您可以创建交易并从tblProduct中扣除销售数量,并将新销售插入同一交易中的tblSales。

这样,tblProducts将始终反映卡住的当前数量。

您可以使用这样的隐式事务作用域来包装SqlConnection

string connectionString = "";
int productId = 0;
int soldQuantity = 1;
using (TransactionScope scope = new TransactionScope())
{
    using (var sqlCon = new SqlConnection(connectionString))
    {
        var insertSaleCmd = new SqlCommand("INSERT INTO tblsales(Pid,Description,Qty,UnitPrice‌​) VALUES(@ProductId, @Description, @SoldQuantity, @UnitPrice)", sqlCon);
        insertSaleCmd.Parameters.AddWithValue("@ProductId", productId);
        insertSaleCmd.Parameters.AddWithValue("@SoldQuantity", soldQuantity);
        insertSaleCmd.Parameters.AddWithValue("@Description", "ENTER PRODUCT DESCRIPTION");
        insertSaleCmd.Parameters.AddWithValue("@UnitPrice", 1234.00);
        insertSaleCmd.ExecuteNonQuery();

        var updateProductCmd = new SqlCommand("UPDATE tblproducts Set Quantity=Quantity-@SoldQuantity WHERE productId=@ProductId", sqlCon);
        updateProductCmd.Parameters.AddWithValue("@ProductId", productId);
        updateProductCmd.Parameters.AddWithValue("@SoldQuantity", soldQuantity);
        updateProductCmd.ExecuteNonQuery();

    }
    scope.Complete();
}

这只是一个简单的解决方案,但有很多方法可以实现这一点。