我正在计算从支票中扣除的税款以及净付款。
在表单上输入了4个税率,我使用这些百分比乘以总额(支付或奖励)。当我尝试单独使用税额时,我会在运行查询时在字段中收到#Error。
公式如下:
FICATax: Format(IIf([MCR_EarningsCode]='LTF',
[MCR_AwardGross]*[Forms]![AstProfileFrm]![FicaTaxTxt],
[MCR_PytAmt]*[Forms]![AstProfileFrm]![FicaTaxTxt]),"Currency")
LocalTax: Format(IIf([MCR_EarningsCode]='LTF',
[MCR_AwardGross]*[Forms]![AstProfileFrm]![LocalTaxTxt],
[MCR_PytAmt]*[Forms]![AstProfileFrm]![LocalTaxTxt]),"Currency")
现在,当我尝试在我的网络支付计算中使用这两个字段时,我会收到#Error。
净支付公式:
NetPayment: Format(Round(IIf([MCR_EarningsCode]='LTF',
[FICATax]+[LocalTax], <-- Error
[MCR_PytAmt]-[FederalTax]-[StateTax]-[FICATax]-[LocalTax]),2),"Currency") <-- This works
示例数据:
+---------------+--------------+------------+------------+----------+---------+----------+
| MCR_AwardGross| EarningsCode | MCR_PytAmt | FederalTax | StateTax | FICATax | LocalTax |
+---------------+--------------+------------+------------+----------+---------+----------+
|#1) $34,000 | LTF | | | | $340.00 | $340.00 |
+---------------+--------------+------------+------------+----------+---------+----------+
|#2) | LTR | $11,500.00 | $2,875.01 | $402.50 | $115.00 | $115.00 |
+---------------+--------------+------------+------------+----------+---------+----------+
|#3) | LTR | $8,341.60 | $2,085.40 | $291.96 | $83.42 | $83.42 |
+---------------+--------------+------------+------------+----------+---------+----------+
净付款的结果将是:
[FICATax]+[LocalTax]
[MCR_PytAmt]-[FederalTax]-[StateTax]-[FICATax]-[LocalTax]
[MCR_PytAmt]-[FederalTax]-[StateTax]-[FICATax]-[LocalTax]
就个人而言,我不知道Null
值是如何出现问题的,因为在任何计算中都不会有Null
值。在运行时处理这些字段是否存在问题?
注意:我通过在计算前添加0
来实现它。
0-[FICATax]-[LocalTax]
..但是,我很好奇为什么它不会添加这两个'字段?'
答案 0 :(得分:2)
我怀疑问题源于Format()
函数将数字转换为字符串这一事实。在某些情况下,如果我们尝试使用它们执行数学运算,Access会自动将字符串转换回数字。但是,在您看似失败的更复杂的情况下。添加“0-”前缀可以作为结果应为数字的提示。
另一种可能的解决方法是将字符串(由Format()
生成)显式转换回CCur()
的货币值。但是,您可能还会重新考虑是否确实要格式化这些值,尤其是在后续计算中使用它们时。我总是建议在查询中将数字保存为数字(和日期作为日期)。如果您需要特殊格式,则可以始终在演示文稿级别应用它,例如,在报告上的文本框控件的.Format
属性中。