【发布时间】:2017-05-24 17:51:59
【问题描述】:
我是一名正在研究访问数据库的研究生,我在该数据库中创建了一个连续表格,该表格将用于一种滚动电子健康记录格式。标题包括有关患者的信息,连续形式方面是一系列患者就诊。在标题中,我有几个子表单,它们基于在标题中发布的患者 ID 号的链接(由 vba 宏生成,这样以前审查的患者不会被重新访问)填充。这些子表格似乎明显滞后,因此前一个患者的结果会一直保留到下一个患者。子表单包含用户选择的相关数据。每个表格都有自己的表格。它们主要基于患者 ID 进行链接。
我试过了:
- 标题详细信息上的宏:单击时,刷新。 - 似乎有效,但不是很优雅/直观
- 主窗体上的宏 - 与上面相同,但在加载、单击、获得焦点、失去焦点、打开、激活时 - 它们似乎都没有做任何事情。
-
在打开/等表单时通过 vba(见下文)强制重新查询。两种方法都没有奏效。试图在打开标题表单时运行这些。
Public Function RequeryMain() Dim frmMain As Form Set frm = Forms("FRM_continuous_reports_patient") frm.Requery End FunctionPublic Function RequeryHeader() Dim frmHeader As SubForm Set frmHeader = Forms("FRM_continuous_reports_patient").FRM_continuous_header_working frmHeader.Requery End Function
最后,用户不得不单击以清除表单以获取新条目是令人沮丧的。否则它会起作用。
最终目标是打开表单并根据最新的患者 ID 加载所有子表单。这可能必须涉及交错加载:(1)VBA 脚本根据某些特征选择下一个患者,并将患者 ID 传递给主窗体; (2)根据提交给它的patient_ID加载主连续表单; (3)加载标题子表单和其中的任何相关数据(尽管第一次看到这些应该是空白的); (4) 完成后,返回 (1)。
据我了解,这已经是它的工作方式,但是子表单加载太快了?我怎样才能解决这个问题?
希望有人可以帮助解释如何解决这个问题/纠正我对表单机制的任何误解。
【问题讨论】:
-
由于子表单通常在主表单之前打开,您需要延迟子表单。看看:accessexperts.com/blog/2013/12/18/…
-
感谢您向我指出这一点。因此,我将子表单更改为从原始患者 ID 调用。 (在打开表格之前,我将患者标记为“正在使用”)。我希望通过消除对主要形式的依赖,它可以解决这个问题,但它似乎没有改变任何东西?
-
您是否看到该链接中的评论说“Ben 将在我们的下一篇文章中讨论在启动时禁用加载子表单。” “下一篇文章”在哪里是另一个链接?
-
不,我错过了!迅速跳到下一位。我对其中的代码有点困惑。 (1)我放置这是主要形式还是标题?具体来说,此代码用于表单的何处? (2) 这涉及删除每个子窗体的源对象,然后在主窗体加载后重新分配它? (3) 案例如何运作?我以前没有使用过它们。我主要使用 Python。 VBA 只适用于这个项目。感谢您的耐心等待!
-
1) 可能以 Open 或 Load 或 Current 事件的形式出现。 2) 是的。 3)谷歌。构建代码并测试。如果您有问题,请发布一个新问题。