如果列的总和是< = 0那么

时间:2012-01-23 01:32:30

标签: sql ms-access vba

我正在为访问项目制作一个直到系统,我已经遇到了障碍。

背景 按钮中包含多种形式。单击按钮可将数据添加到表(TblCurSale),包括项目的描述和价格。每个表单还有一个“总计”按钮,可以将您发送到付款屏幕,这样做可以将数据从TblCurSale复制到另一个表(TblCalc)

TblCalc有列SaleID,Item(项目名称),SalePrice。报告自动添加销售价格列

总表格有两个子报告,TBLCurSale和TblCalc。

在整个屏幕上有一个文本文件,其中用户输入金钱,然后按下付款,将该数字输入TblCalc作为负数,然后刷新页面以便新的总数出现。在子报告的底部。

问题 我需要一个IF vba代码,以便我可以把它放在SalePrice列的总数< = 0时,我可以运行几行代码。我到目前为止的内容如下,所以任何帮助都会受到高度赞赏。

Private Sub Pay_Click()

Dim SQLPay As String
Dim SQLToTable As String
Dim SQLMoney As Variant

SQLPay = "INSERT INTO TblCalc(SalePriceTotal) VALUES (-'" & TxtPayment & "')"
SQLToTable = "INSERT INTO TblTotalSale (CurrentSaleID, SalePrice, Item) SELECT CurrentSaleID, SalePrice, Item FROM TblCurrentSale"
SQLMoney = "IF (SUM(SalePriceTotal) FROM TblCalc) <= 0 SELECT '1' ELSE '0'"

DoCmd.SetWarnings False
DoCmd.RunSQL SQLPay
DoCmd.RunSQL SQLMoney

If SQLMoney = 1 Then
DoCmd.RunSQL SQLToTable
Me.TxtPayment = ""
Me.Refresh
DoCmd.OpenReport "rptCalc"

Else

Me.TxtPayment = ""
Me.Refresh
Me.Refresh
End If

DoCmd.SetWarnings True

End Sub

1 个答案:

答案 0 :(得分:1)

我认为你最好像交易表那样构建它。因此,不是将付款插入单独的表中,而是将另一行添加到TblTotalSale,其中项目描述为“Payment”,值为负数。然后,您可以简单地将SalePrice列相加,以便为您提供未结余额。它还允许您针对一次销售记录多笔付款。

对于负面销售,我认为您应该在表单上放置一些验证码以防止用户输入负面商品价格(在表单上的beforeInsert和beforeUpdate事件中)