首页 文章

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

提问于
浏览
0

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

我试过了:

Headers 详细信息上的

  • 宏:单击,刷新 . - 似乎工作,但不是非常优雅/直观
    主表单上的

  • 宏 - 与上面相同,但在加载,单击,获得焦点,失去焦点,打开,激活 - 它们似乎都没有做任何事情 .

  • 强制通过vba(见下文)重新查询表格的开头/等 . 这两种方式都没有效果 . 试图在打开 Headers 表单时运行这些 .

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

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

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

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

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

2 回答

  • 0

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

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

    为什么不在“细节”部分放置子表单?

  • 0

    要回答您的问题,并提供以下引用的逻辑的精简版本:https://accessexperts.com/blog/2014/01/07/delay-loading-subforms-in-access/

    是:

    • 在设计视图中,将子窗体SourceObject设置为“”(并保存表单)

    • 当您准备好显示子表单时,只需执行:Me..SourceObject =“”

    • 当您准备好导航到NEXT患者时,请清除子表单链接:Me..SourceObject =“”

    现在应该解决主要和子之间不同步数据的问题 .

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

相关问题