【发布时间】:2019-01-09 06:51:43
【问题描述】:
我对 Access 报告有一个奇怪的问题。即,当使用报表时,它会编辑其源查询的代码,并中断查询。基础查询开头为:
select b.Cont_staff, b.tot_success, c.tot_fail
from
(select Cont_staff, count(Cont_staff) as tot_success
from
(SELECT Cont_date, Cont_result, Cont_staff
FROM dbo_UIH_contacts
where dbo_UIH_contacts.Cont_result = 'Successful')
group by Cont_staff) as b
left join
(select Cont_staff, count(Cont_staff) as tot_fail
from
(SELECT Cont_date, Cont_result, Cont_staff
FROM dbo_UIH_contacts
where dbo_UIH_contacts.Cont_result = 'Unsuccessful')
group by Cont_staff) as c
on b.cont_staff = c.cont_staff
报表非常简单,报表Detail中Cont_staff、tot_success和tot_fail各有一个字段。报表Header中有静态标签。
查询在首次创建时正确运行,报表在首次打开时正确运行。但是如果您关闭报表并重新打开它,它会将查询代码更改为:
SELECT b.Cont_staff, b.tot_success, c.tot_fail
FROM
(SELECT Cont_staff, count(Cont_staff) AS tot_success
FROM
[SELECT Cont_date, Cont_result, Cont_staff FROM dbo_UIH_contacts where dbo_UIH_contacts].[Cont_result = 'Successful']
AS [%$##@_Alias]
GROUP BY Cont_staff) AS b
LEFT JOIN
(SELECT Cont_staff, count(Cont_staff) AS tot_fail
FROM
[SELECT Cont_date, Cont_result, Cont_staff FROM dbo_UIH_contacts where dbo_UIH_contacts].[Cont_result = 'Unsuccessful']
AS [%$##@_Alias]
GROUP BY Cont_staff) AS c
ON b.cont_staff = c.cont_staff
在 Access 中,它是一个没有换行符的文本字符串。更改的部分是括号子选择和插入[%$##@_Alias]。
更新
问题似乎与报表无关,在设置表单以使用查询时也会发生同样的情况。
【问题讨论】:
-
它将查询代码更改为这个 ...查询在哪里更改?您是否在报表设计中从记录源中检索此 SQL?如果保存的查询现在发生更改,这将非常有趣,因为它是一个缓存的、已编译的对象,由引擎提供最佳执行计划!