1

我有一个产品列表,双击一个产品会将您带到一个详细表单,其中包含一个结果“总和”,这是对几个子表单中的列求和以及在 3 个单独的价格表中查找价格的结果。简而言之,这是由四个部件列表和十几个参数构建的产品所产生的利润。但是,您不必双击产品来查看利润,您甚至应该能够在产品列表视图中按利润排序。

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

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

问题:哪一个最有效?

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

4

1 回答 1

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;
于 2013-04-03T08:41:34.507 回答