从数据库中的多表计算结果

时间:2013-06-23 18:35:16

标签: vb.net ms-access calculated-field

我的VB.NET POS开发中有一个问题,我自己找不到解决方案。我目前正在使用VS2010MS Access作为我的数据库。

我有两个数据库表,如下所示:

SalesReceipt(#Receipt_ID, Sales_Date, Receipt_Number, Customer_ID, Sales_BDiscount, Sales_ADiscount, Sales_Payment)

Customer(#Customer_ID, Customer_Name, Customer_Contact, Customer_Debt)

注意:BDiscount =折扣前/ ADiscount =折扣后

在我的系统中,一个客户可以拥有许多SalesReceipt。现在我的问题是如何为客户更新正确的Customer_Debt?我的逻辑是通过循环Customer_Debt中的每一行来更新相应客户的SalesReceipt并通过执行以下操作来计算债务:

totalDebt = totalDebt + (Sales_Payment - Sales_ADiscount)

但我不确定如何确保它仅循环并仅计算所选客户的结果。我怎样才能在.NET中正确实现这一点?

2 个答案:

答案 0 :(得分:1)

如果您想为每位客户计算totalDebt,可以使用查询

SELECT Customer_ID, sum(Sales_Payment - Sales_ADiscount) as totalDebt FROM SalesReceipt
 GROUP BY Customer_ID

结果包含由Customer_ID聚合的totalDebts,可用于更新Customer(所有循环和计算均由数据库引擎完成)。

查询也可以更新更复杂,甚至可以为您更新。

答案 1 :(得分:0)

难道你不能在Access数据库中编写一个查询,在按CustomerID分组的SalesReceipt表上执行计算(Sales_Payment - Sales_ADiscount)吗?