Microsoft Access 2010滞后于连续表单标头子表单

时间:2017-05-24 17:52:00

标签: forms vba ms-access

我是一名研究学生,正在研究一个访问数据库,在那里我创建了一个连续的表单,用于一种滚动的电子健康记录格式。标题包括关于患者的信息,连续形式方面是一系列患者就诊。在标题中,我有一些子表单,这些子表单基于在标题中发布的patient_ID号码上的链接来填充(由vba宏生成,使得先前评论的患者不被重新访问)。这些子模型似乎显着滞后,以至于前一位患者的结果会进入下一位。子表单包含用户选择的相关数据。每个表单都有自己的表。它们主要基于patient_ID链接。

我试过了:

    标题详细信息上的
  1. 宏:单击,刷新。 - 似乎工作,但不是很优雅/直观
  2. 主表单上的
  3. 宏 - 与上面相同,但在加载,点击,获得焦点,失去焦点,打开,激活 - 他们似乎都没有做任何事情。
  4. 在表格的开放/等方面通过vba(见下文)强制重新查询。这两种方式都没有效果。试图在打开标题表单时运行这些。

    Public Function RequeryMain() Dim frmMain As Form Set frm = Forms("FRM_continuous_reports_patient") frm.Requery End Function

    Public Function RequeryHeader() Dim frmHeader As SubForm Set frmHeader = Forms("FRM_continuous_reports_patient").FRM_continuous_header_working frmHeader.Requery End Function

  5. 最后,用户必须单击以清除新条目的表单才会令人沮丧。它起作用了。

    最终目标是打开表单并根据最新的patient_ID加载所有子表单。这可能需要涉及交错负载:(1)VBA脚本基于某些特征选择下一个患者并将patient_ID传递给主表单; (2)根据提交给患者的患者ID加载主要连续形式; (3)加载标题子表格和任何相关数据(虽然第一次看到这些数据应该是空白的); (4)完成后,返回(1)。

    根据我的理解,这已经是它如何工作,但是子窗体加载太快了?我怎样才能解决这个问题?

    希望有人可以帮助解释如何解决这个问题/纠正我对表格机制的任何误解。

2 个答案:

答案 0 :(得分:0)

我知道这听起来很奇怪,但是子窗体实际上是在父窗体之前加载的。子窗体显示的滞后不是我遇到过的。不应该需要代码,可能不会更正。必须是表单/子表单设计,可能是他们的RecordSource。必须检查数据库以确定。

没有必要在VBA中创建表单对象以便重新查询。代码是否在主窗体后面? Me.Requery对于主表单来说已经足够了。我总是给子窗体容器一个不同于它所拥有的对象的名字,比如ctrPatient。然后只需Me.ctrPatient.Requery

为什么不将子表格放在详细信息部分?

答案 1 :(得分:0)

回答您的问题,并提供在https://accessexperts.com/blog/2014/01/07/delay-loading-subforms-in-access/

引用的逻辑的精简版本

是:

  1. 在设计视图中,将子窗体SourceObject设置为"" (并保存表格)
  2. 当您准备好显示子表单时,只需执行:Me..SourceObject =""
  3. 当您准备好导航到NEXT患者时,请清除子表单链接:Me..SourceObject =""
  4. 现在应该解决主要和子之间不同步数据的问题。

    您不需要使用CASE语句,但它们的操作就好像您有一堆" If" /" ElseIf"所有人都坐在一起 - 除了CASE使其更容易遵循。它基本上从变量中获取一个值(即Select Case MyVariable);然后检查它是否等于你想要的(案例1,案例2等),如果是,那么你编码什么。