Access '13 - 无法识别字段名称错误,交叉表报告问题
Access '13 - Does not recognize field name Error, Crosstab to Report Issue
背景
每个月我 运行 一个交叉表查询,然后 "spruced up" 和一个访问报告。
交叉 SQL:
TRANSFORM Sum(myTable.Field1) AS SumOfField1
SELECT myTable.Date, Sum(myTable.Field1) AS [Daily Totals]
FROM myTable
GROUP BY myTable.Date
PIVOT myTable.Field2;
其中 Field1 是 $ Amount,而 Field2(对于此示例)将是 "Option1"、"Option2" 或 "Option3"。
典型的交叉表结果:
Date Option1 Option2 Option3
----- -------- -------- --------
Day1 .00 -.37
Day2 .15
Day3 .22
我的问题
因为 100 次中有 99 次我将在给定月份的每个 "option" 中获得数据,所以我创建了一个报告,以 "pretty" 格式清理交叉表结果。然而,这个月,我的原始数据没有任何 "Option3" 值。因此,Option3 的交叉表列没有出现在我的查询结果中。然后,由于报告直接从交叉表中提取并按名称查找每个选项列,这导致我的报告中断并给出错误:
The Microsoft Access database engine does not recognize '[Option3]' as
a valid field name or expression.
疑难解答
我已经尝试了一些有关故障排除的方法:
- =Nz(Sum(myTable.Field1),0) 在 SQL... 但是这只会产生 0,其中字段 2 的 existing 值为 NULL - 因此 "Option3" 不会显示为全 0 的列。
- =Nz([Option3],0) in the report...仍然出现上面的错误(字段无法识别)
- =IIf(IsError(Option3),0,(Option3)) 在报告中...得到错误:
The expression you entered contains invalid syntax
- =IIf(IsEmpty(Option3),0,(Option3)) in report...同上
- =IIf(IsMissing(Option3),0,(Option3)) in report...同上
此时,我不知道如何将我现有的报告发送到 运行(只显示 "Option3" 的一列 0)。
Specify column headings 在 PIVOT
子句中有一个 IN
列表。
PIVOT myTable.Field2 IN ('Option1', 'Option2', 'Option3');
然后,无论源数据是否包含具有这些值的任何行,这些列标题都将包含在查询结果集中(按列出的顺序)。
副作用是,如果交叉表数据源可能包含 Option4,它不会包含在结果列中。这对您的报告来说很好,因为它的设计目的不是要有 Option4 列。但如果您在其他地方使用交叉表查询,这可能是一个问题。
在报告中,您可以使用 Nz()
将选项列中的空值替换为零。
背景
每个月我 运行 一个交叉表查询,然后 "spruced up" 和一个访问报告。
交叉 SQL:
TRANSFORM Sum(myTable.Field1) AS SumOfField1
SELECT myTable.Date, Sum(myTable.Field1) AS [Daily Totals]
FROM myTable
GROUP BY myTable.Date
PIVOT myTable.Field2;
其中 Field1 是 $ Amount,而 Field2(对于此示例)将是 "Option1"、"Option2" 或 "Option3"。
典型的交叉表结果:
Date Option1 Option2 Option3
----- -------- -------- --------
Day1 .00 -.37
Day2 .15
Day3 .22
我的问题
因为 100 次中有 99 次我将在给定月份的每个 "option" 中获得数据,所以我创建了一个报告,以 "pretty" 格式清理交叉表结果。然而,这个月,我的原始数据没有任何 "Option3" 值。因此,Option3 的交叉表列没有出现在我的查询结果中。然后,由于报告直接从交叉表中提取并按名称查找每个选项列,这导致我的报告中断并给出错误:
The Microsoft Access database engine does not recognize '[Option3]' as a valid field name or expression.
疑难解答
我已经尝试了一些有关故障排除的方法:
- =Nz(Sum(myTable.Field1),0) 在 SQL... 但是这只会产生 0,其中字段 2 的 existing 值为 NULL - 因此 "Option3" 不会显示为全 0 的列。
- =Nz([Option3],0) in the report...仍然出现上面的错误(字段无法识别)
- =IIf(IsError(Option3),0,(Option3)) 在报告中...得到错误:
The expression you entered contains invalid syntax
- =IIf(IsEmpty(Option3),0,(Option3)) in report...同上
- =IIf(IsMissing(Option3),0,(Option3)) in report...同上
此时,我不知道如何将我现有的报告发送到 运行(只显示 "Option3" 的一列 0)。
Specify column headings 在 PIVOT
子句中有一个 IN
列表。
PIVOT myTable.Field2 IN ('Option1', 'Option2', 'Option3');
然后,无论源数据是否包含具有这些值的任何行,这些列标题都将包含在查询结果集中(按列出的顺序)。
副作用是,如果交叉表数据源可能包含 Option4,它不会包含在结果列中。这对您的报告来说很好,因为它的设计目的不是要有 Option4 列。但如果您在其他地方使用交叉表查询,这可能是一个问题。
在报告中,您可以使用 Nz()
将选项列中的空值替换为零。