将新数据添加到一个表并从其他表中删除计数

时间:2017-07-07 08:22:29

标签: c# sql datagridview

我有2个表,(tableProducts,tableSpent) 我想做“当我在tableSpent添加新的废产品时,NumberofTotal = NumberofTotal - SpentProductnumber”

enter image description here

例如,总产品上的3种产品

SEQDSD-PENCIL-15

QWEWQD-BOOK-10

ASGAGG-SHARPENER-45

我将在SpentProduct表中添加这些信息

ASGAGG - SHARPENER -20 - 为学校

我想从TotalProducts删除这个号码(20) 所以Total Products必须看起来像

SEQDSD-PENCIL-15

QWEWQD-BOOK-10

ASGAGG-SHARPENER-25

这是我在Spent表中添加已用产品的代码 但Idk如何从Products Products表中删除此计数 当我点击button1时,它必须在SpentTable中添加4个文本框的数据 它必须从TotalProducts名称

中删除该号码

我该怎么做?

这是我的添加代码.//名称和行数是不同的翻译原因:)

        if (conn.State == ConnectionState.Closed)
            conn.Open();

        string kayit = "insert into projeSarfBase(urunKodu,urunAdi,sarfAdet,projeKodu,projeAdi) values (@urunKodu,@urunAdi,@sarfAdet,@projeKodu,@projeAdi)";


        SqlCommand komut = new SqlCommand(kayit, conn);

        komut.Parameters.AddWithValue("@urunKodu", textBox1.Text);
        komut.Parameters.AddWithValue("@urunAdi", textBox2.Text);

        komut.Parameters.AddWithValue("@sarfAdet", textBox3.Text);
        komut.Parameters.AddWithValue("@projeKodu", textBox4.Text);
        komut.Parameters.AddWithValue("@projeAdi", textBox5.Text);


        komut.ExecuteNonQuery();

        conn.Close();

1 个答案:

答案 0 :(得分:0)

商业产品处理此问题的方式如下:

创建一个'交易'表。如下

Create Table InventTransactions (
ID int IDENTITY(1,1) PRIMARY KEY,
ProductID NVarChar(25),
Reference NVarchar(25),
TransactionDate datetime,
Quantity int)

如果要记录购买产品,请将数量设置为正值

insert into InventTransactions (ProductID,Reference,TransactionDate,Quantity)
Values ('SHARPENER','Purchase Order #1',getDate(),45);

当你'花费'产品,你发布负数

insert into InventTransactions (ProductID,Reference,TransactionDate,Quantity)
Values ('SHARPENER','ForSchool',getDate(),-20);

在任何时候,您只需将所有数量相加即可获得结果

产品总数:

Select ProductID, sum(quantity) from InventTransactions group by ProductID
Having SUM(Quantity)>0

这种方法可以提高性能(您只需要为每个事务标记一个条目),并为您提供库存来源及其去向的永久记录。它还允许您询问有关数据的更多有趣问题,例如" X日期的库存是什么"或者'我每周使用多少这个项目" (通过过滤日期)。