我在 MS Access 2007 中有一个包含 4 个字段的表。
- 人工成本
- 劳动时间
- 增值税
- 全部的
如何将“工时”乘以“劳动力成本”加上“增值税”并在“总计”中显示答案
我会将任何公式放在哪里?,在表格或查询或表格中?
非常感谢您的帮助
斯科特
我在 MS Access 2007 中有一个包含 4 个字段的表。
如何将“工时”乘以“劳动力成本”加上“增值税”并在“总计”中显示答案
我会将任何公式放在哪里?,在表格或查询或表格中?
非常感谢您的帮助
斯科特
也有假人(即不是 SQL)的方法来做到这一点:首先从你的表中删除你的总列,并在这个练习中假装你的表的名称是 "Labour" 。
现在创建一个新查询并在设计视图中查看它,从您的劳动力表中添加所有字段(以便您可以检查一切是否正常),选择一个空字段,右键单击并从下拉列表中选择“构建”。您现在应该有一个 Expression Builder 窗口。
输入计算字段的名称,例如 labourTotal,后跟冒号“:”,然后从 Expression Builder 窗口左下方的表中选择要添加的字段名称,然后双击每个字段名称。每个字段都将出现在“总计:”之后的表达式构建器中。现在用“+”替换每个“«Expr»”。您应该在表达式构建器中看到这一点:“labourTotal: [Labour]![Labour Cost] + [Labour]![Labour Hours] + [Labour]![Vat]”。单击确定并运行查询 - 如果一切正常,总列将显示结果。
您完全不需要“总计”列。
您的查询或报告可能类似于以下内容:
SELECT [Total] = [Labour Cost] * [Labour Hours] + [VAT]
您可以在表单或报表的控件中使用相同类型的公式。
如果确实需要更新 Total 列中的数据:
UPDATE YourTableName SET [Total] = [Labour Hours] * [Labour Cost] + [VAT]
但是,更好的方法是从表中完全删除 Total 列并创建一个查询:
SELECT [Labour Cost],
[Labour Hours],
[VAT],
[Labour Hours] * [Labour Cost] + [VAT] AS [Total]
FROM YourTableName
首选此方法的原因是因为它可以防止您不小心将错误信息放入“总计”列。一般来说,如果你不小心,数据很容易被破坏,而且修复起来会很痛苦(如果不是不可能的话)。我建议你谷歌“数据库规范化”并阅读一下它 - 这将对你有很大帮助。
关于您的增值税百分比,我希望我不是在说显而易见的,但您应该输入小数,例如 0.175 是 17.5%
您不能只添加一个百分比,它必须乘以某个值。并且您必须包括原始金额的 100%。所以如果要加17.5%,就需要乘以1.175。因此,假设:i) 您希望自动包含 100%(即您只需要输入 .175)并且 ii) 增值税应添加到整个金额中,并且 iii) 通过“指定”您的意思是您每次运行查询时都希望被提示输入增值税;那么你的公式应该是:
总计:([一般费用]![人工成本]*[一般费用]![工时]+[材料成本])*(1+[输入增值税为十进制金额?])
创建一个新查询。
添加你的表
将您的三个非总计字段添加到查询中
在新的字段类型中:
total: [VAT] + [Labour Hours] * [Labour Cost]
运行查询
斯科特说:
基本上只是想进行计算,以便我可以在屏幕和报告中显示总数。
正如一些人建议的那样,您可以在保存的查询中进行计算,并将其用作报告和表单的记录源。
但我建议你不要那样做。我建议您在最晚的时间进行计算。对于报告,这意味着您可以控制您的报告,该报告将您想要执行的计算作为其控制源。这样,它只对在页面格式化时打印的行执行。
除非您想对总字段进行排序或过滤,否则我建议对表单进行相同的操作。表单上的计算字段不能用于排序/过滤,并且在某些情况下它们显示的速度可能很烦人。在这种情况下,您会忽略我的建议以避免将它们放入查询/记录源中,因为您有充分的理由在实际显示数据之前为所有行计算它。
但一般来说,不要将计算放在您不会作为一个组(过滤、排序、分组)进行操作的记录源中。
您可以将其作为计算字段放入查询或表单中。只要有意义,就很简单,并且具有适当的可重用性。如果计算特定于数据的表单或视图,请在此处或查询中进行。
在这种情况下,您可以预见总计将是一个经常使用的值并在逻辑上应用于该行,因此将其设为计算字段是合适的。计算字段的优点是(在大多数系统中,不确定 MSAccess)它们可以设置为仅在数据更改时重新计算。
如果您正在计算数量与交货提前期的比率,那将是我在查询特定表格/报告中的更多内容,因为它永远不会被重复使用,并且可能是一个更繁重的计算。
我通常会选择在查询中进行计算,除非它依赖于另一个计算的结果,然后在查询中进行可能会有点混乱,所以在表单/代码中进行。
总而言之,只要适合该计算。