我编写了一个包含一些计算字段的查询(这些值是财务的,每个字段都与一年中的一个月相关)例如:
Period 1 ALS: [Period 1]-[Period 1 Retention]
Period 2 ALS: [Period 2]-[Period 2 Retention]
Period 3 ALS: [Period 3]-[Period 3 Retention]
...依此类推,直到第 12 期。
然后我有一个最后一列,它将所有这些“Period X ALS”列加起来形成一个“TotalALS”列。[期间 1 ALS]+[期间 2 ALS]+[期间 3 ALS] ...等等。
我的想法是,我会将“>0”放在“TotalALS”列的条件中,因此最终会得到一个查询,该查询会过滤掉所有没有计算出钱的记录。
问题是,只要我将条件 >0 放在“TotalALS”字段中,Access 就会要求我在查询运行之前创建的每个“Period X ALS”列的参数值。
据我了解,Access 在找不到查询中引用的内容时会要求提供参数。我不确定这是怎么回事,因为当我没有指定任何条件时查询运行良好。
我还读到这可能与 Access 误读字段格式有关。所有源字段都是数字(即[Period 1] 和[Period 1 Retention]),所以我假设计算的字段将遵循相同的数字格式。
我在这个查询上运行了 Database Documenter,有趣的是,它在报告的 Query Paramenters 组下列出了我的计算字段,每个字段的类型为“Text”。不确定它如何认为这些字段是文本。
为了看看这是否是我试图明确声明我所谓的“参数”的问题,即将它放在 SQL 的顶部:
PARAMETERS [Period 1 ALS] IEEEDouble, [Period 2 ALS] IEEEDouble, etc...
尽管 Database Dcoumenter 报告将这些字段中的每一个都显示为我现在指定的数字格式,但当我实际尝试运行查询时,我仍然收到“输入参数值”弹出窗口。
略简写的 SQL:
SELECT
[T_FM45_PeriodConversion03-ALS].[Period 1],
[Period 1]*[Partner Rate]) AS [Period 1 Retention],
[Period 1]-[Period 1 Retention] AS [Period 1 ALS],
上述 3 个字段在一年的 2 至 12 期间重复。然后我的 TotalALS 字段:
[Period 1 ALS]+[Period 2 ALS]+[Period 3 ALS]+[Period 4 ALS]+[Period 5 ALS]+[Period 6 ALS]+[Period 7 ALS]+[Period 8 ALS]+[Period 9 ALS]+[Period 10 ALS]+[Period 11 ALS]+[Period 12 ALS] AS TotalALS,
INTO [T_FM45_PeriodConversion04-ALS]
FROM [T_FM45_PeriodConversion03-ALS] LEFT JOIN Partners ON [T_FM45_PeriodConversion03-ALS].PartnerAbbr = Partners.Abbreviation
WHERE ((([Period 1 ALS]+[Period 2 ALS]+[Period 3 ALS]+[Period 4 ALS]+[Period 5 ALS]+[Period 6 ALS]+[Period 7 ALS]+[Period 8 ALS]+[Period 9 ALS]+[Period 10 ALS]+[Period 11 ALS]+[Period 12 ALS])>0));