【发布时间】:2017-05-06 09:26:01
【问题描述】:
我有一份从查询运行的报告。该查询确实使用了全局变量,但这不是问题,而是需要解释。变量的函数是:
Function Var1() As String
Var1 = strVar1
End Function
查询where语句是:
WHERE (((IIf([MinOfDueDayMin]<0,0,Int([MinOfDueDayMin]/7)+1))<Var1()+1) AND ((tblEquipment.Retired)=False))
使用 var1 函数
标准是在一个实际上是计算的字段上,这就是我认为问题开始的地方。
使用以下代码为另一个表单上的命令运行报告:
strVar1 = InputBox("Enter Number of Weeks for report")
If strVar1 = "" Then Exit Sub
DoCmd.OpenReport "rptEquipPmSchedule", acViewReport
一切正常
在报告中,我有一个打开表单的双击事件。此表单使用同一查询的一部分。 (不是同一个级别,而是高两个级别)这允许用户更改内容,因此我希望对报告使用重新查询。
如果我双击然后甚至没有更改任何内容然后返回报告我在有计算的字段中有#ERROR
我在报告的激活事件中放置了一个 me.requery。这不起作用。
所以我尝试了解决方法。
当我双击报告字段时,我关闭报告并将 strVar1 值发送到打开的表单。然后当我关闭表单时,我重新分配 strVar1 以防万一它丢失是另一个用户的分配(目前我是唯一使用它的人,但这样做只是为了确保它具有正确的值。)然后我打开报告再次但仍然得到错误。我完全没想到会这样。认为从头开始报告肯定会奏效。我什至在分配 strVar1 后关闭了表单。
然后在最后的努力。当我关闭表单时,我运行完全相同的代码:
strVar1 = InputBox("Enter Number of Weeks for report")
If strVar1 = "" Then Exit Sub
DoCmd.OpenReport "rptEquipPmSchedule", acViewReport
这将强制用户输入 strVal1 的值。即使这不是我想要的,但尝试了这个进行故障排除,我仍然得到#ERROR。
当我为没有任何相同字段的表单运行报告时,没有问题。当我运行报表或通过重新查询具有相同数据的表单保持打开状态时,报表不会给出正确的结果。请注意,如果我自己运行查询,则查询中的数据是正确的。
我还尝试在查询中使用数字而不是 Val1() 并得到相同的结果。
我还尝试了功能区中的刷新按钮并获取未知函数名称,报告中的所有数据都丢失了。
有人有什么想法吗??
【问题讨论】:
标签: sql forms ms-access report refresh