添加记录后,如何通过报告控制子窗体(由查询控制)更新?

时间:2015-01-08 01:54:04

标签: access-vba ms-access-2010

我最近担任职务,要求我跟踪我们的行政行为。以前,办公室已在Excel电子表格中跟踪它们,并且历史数据已损坏/丢失。所以我在Access 2010中构建了一个数据库。我设计了数据库来显示一个主表单,它提供了每个操作的概述,但决定要求在特定的数据输入表单上添加或更新大部分数据。我的问题涉及主表单上的两个子表单,在将数据输入表后我无法更新。具体如下:

1)主要表格是案例详细信息表格,每个案例都有一个唯一的案例ID号,用于链接大多数表格和表格。

2)案例明细表有两个子表格。一个显示案例中涉及的人员的姓名(这是主题子表单)。另一个显示案例历史记录条目(这是案例历史子表单)。

3)两个子表单应该以相同的方式工作。每个都由一个报告填充,该报告在其相应的子表单中显示信息。反过来,每个子表单下的报表都基于一个查询,该查询根据案例编号选择要显示的记录。

4)无法在案例详细信息表单中输入子表单的新数据。相反,用户可以按下命令按钮,该按钮启动单独的表单,允许用户输入主题细节或输入案例历史更新。用户输入数据后,他或她单击“保存记录”按钮,该按钮将保存记录并关闭表单窗口。到目前为止,一切似乎都很好。

5)但是,我现在已经在这个项目上工作了两个星期(如果时间允许的话),我仍然无法自动更新这两个子表单。如果它是新案例记录,则用户可以使用导航箭头更新子表单以保留主案例详细信息表单,然后返回到它。如果它是已建立的案例记录,我已添加到主案例详细信息表单的刷新按钮将导致两个子表单更新。

在我尝试完成这项工作的过程中,我尝试了一些我在各种主板上发现的方法。现在,我有:

A)主题数据输入表单在After Insert Event Procedure

中有一个Me.Requery语句

B)主题数据输入表单具有SaveRecord和CloseWindow命令,这些命令在触发Save Record Button On Click事件时执行。

C)执行GotFocus事件过程时,主案例详细信息表格执行Me.Case_Subjects.Form.Requery。

我为冗长的问题和解释道歉。我是一名陆军军官,对此深有所了解。我非常感谢任何人都可以提供的任何帮助。

祝你好运!

2 个答案:

答案 0 :(得分:0)

我不确定是否理解了所有内容,但我试着给你一些关于尝试什么的建议。

如果我没有错,表单和子表单都将case ID作为字段,所以当你创建报表时,你应该把它们放在向导的“链接”中(你可以手动设置它但是它有点棘手) )。

你做到了吗?这使得表单/子表单在您导航时会更新。

请注意,底层表格之间必须存在关系,以保证报表/表单一起移动!

这也适用于查询,只记得在查询中包含ID字段。

如果您不想看ID(如果您使用自动编号ID),可以将其设置为不可见。

如果你不想用关系链接这两个表,那么还有另一个解决方案,但它有点棘手,如果不是你的情况,我不想混淆。

如果你解决了,请告诉我。

再见

答案 1 :(得分:0)

首先,行Me.Requery应该在After Update事件上,而不是After Insert事件。其次,您需要将Me.Requery更改为Me.[insertsubformname].Requery

正如上面的用户所说,您需要确保已正确创建数据库关系,但是如果您使用了“插入子表单”,它应该会告诉您要将哪些内容用作表单之间的链接