我有一个从查询运行的报告。查询确实使用全局变量,但这不是问题,但需要解释。变量的函数是:
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
一切正常
在报告中,我有一个打开表单的双击事件。此表单使用相同查询的一部分。 (不是同一个,但是两个级别更高)thiS允许用户改变事物,所以我希望使用requery报告。
如果我双击然后甚至没有改变任何东西然后回到报告我在有计算的字段中有#ERROR
我在报告的activate事件中放了一个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()并得到相同的结果。
我还尝试了功能区中的刷新按钮并获取了未知功能名称,报告中的所有数据都将丢失。
任何人有任何想法吗?
答案 0 :(得分:0)
虽然您的文字说明很难理解整个范围,但请考虑重新评估您的工作流程。整个目标是允许用户运行自定义的报告标准。而你的主要问题是 strVal 不会在内存中持久存在,所以对它的所有引用都会失败。
考虑以下几点:
InputBox()
因为 strVal 可以是此未绑定表单上的未绑定文本框,其值对于所有打开的窗口保持不变。Form!myFormName!strValuetextbox