【问题标题】:MS Access Database form not updating after SQL requerySQL 重新查询后 MS Access 数据库表单未更新
【发布时间】: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


    【解决方案1】:

    虽然您的文字解释难以理解整个范围,但请考虑重新评估您的工作流程。整个目标是允许用户运行定制的报告标准。您的主要问题是 strVal 不会在内存中持续存在,因此对它的所有引用都会失败。

    考虑以下几点:

    • 让用户在专用的未绑定表单上设置标准,点击报告按钮,其中报告实例不可变,仅用于查看/打印,如果需要更改,必须重新运行(即,重新点击按钮)。李>
    • Access 不需要 VBA 的 InputBox(),因为 strVal 可以是此未绑定表单上的未绑定文本框,其值对于所有打开的窗口都保持不变。
    • 函数及其所有引用都指向表单字段:Form!myFormName!strValuetextbox
    • 因为几乎所有软件/Web 应用程序系统上的报告都不用作运行操作的 GUI 界面,所以用户将知道他们是否打算更改报告标准、关闭当前报告或返回入口点并更改 strVal 然后重新点击按钮重新运行报告。
    • 将数据输入/输入(表单的主要用途)与数据导出/输出(如报告)分开。从开发人员和用户的角度来看,这种划分将让您免去烦恼。

    【讨论】:

    • 问题在于没有保持 strVal1 的值。
    • 我会尝试不同的解释,因为我显然没有很好地解释。问题不在于保持 strVal1 的值,尽管我确实喜欢您使用保持打开状态的表单来保持值作为选项的想法。我要运行报告。如果用户在报告中看到信息并想要对其进行编辑,那么我想提供双击打开表单并允许编辑的序列号(唯一 ID)的选项。
    • 然后完成后他关闭表单,我希望报告使用新信息进行更新,并且不希望用户必须输入 strVal1 的值。但即使再次输入它,当报告再次运行或重新查询时,我也会收到#ERROR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多