有效地执行详细形式中使用的复杂计算

时间:2013-04-03 07:36:10

标签: performance ms-access-2007 calculated-columns

我有一个产品列表,双击产品会将您带到一个详细信息表单,其结果是“总和”,它是对几个子表单中的列进行求和以及在3个单独的价格表中查找价格的结果。简而言之,它是由四个零件清单和十几个参数构建的产品带来的利润。但是,您不必双击产品以查看利润,您甚至可以按产品列表视图中的利润进行排序。

因此,当任何表格中的价格发生变化或导入新产品定义时,产品价格表应反映所有产品的新价格。

我可以通过“叮叮当当”所有产品更新所有产品的利润,计算价目表中的利润列,使用 a)代码, b) a复杂查询,或 c),打开并保存每个产品的计算表单。

问题:哪一项最有效?

(可能,在产品列表的利润列的代码中进行实时计算会更有效 - 但如果为每个过滤的行计算“实时”,我可以使用哪种回调或类似的方法对其进行排序?)

1 个答案:

答案 0 :(得分:1)

这听起来像VBA功能可能适合的情况之一。您在Access中创建一个新模块,然后定义表单的函数

Public Function CalculateProfit(ProductID As Long) As Currency
Dim Profit As Currency
'' do your lookups, calculations, etc.
CalculateProfit = Profit  '' return value
End Function

现在您可以在查询,报告等中使用此功能,就像它是内置的VBA功能一样,例如,

SELECT [ProductID], CalculateProfit([ProductID]) AS Profit 
FROM [Products] ORDER BY 2 DESC;