【问题标题】:MS Access 2007 Converting forms into sub form - "form not found" issueMS Access 2007 将表单转换为子表单 - “未找到表单”问题
【发布时间】:2011-03-18 17:46:01
【问题描述】:

所以我最近一直在尝试合并更多的子表单以使 UI 更友好。所以我有一个运行一些 VB 的预先开发的表单,所以举个例子,让我们说它运行 SQL 语句,返回记录集,并用数据填充文本框(因为这是一种交互式仪表板概念:

dim db as database
dim rs as recordset
dim sql as string
set db = current db

sql = "SELECT * FROM tblMain;"

   set rs = db.OpenRecordSet(sql)

         rs.movefirst
             [forms]![DashboardSubName].txtValue1 = rs!Value1
         rs.close

 set rs = nothing
 set db = nothing

带有返回错误“DashboardSubName”未找到的错误处理。所以最初这个表单是它自己的表单,它自己打开它工作正常,但是一旦我在父表单中使用它,我就会得到这个错误。

我确定这只是我不知道的事情,但是什么给出了?

谢谢大家 贾斯汀

【问题讨论】:

    标签: ms-access vba ms-access-2007 subform


    【解决方案1】:

    当一个表单作为子表单加载时,它被引用就好像它只是主表单上的另一个控件 - 它不再是全局表单集合的一部分。

    所以正确的参考应该是: Me!DashboardSubName.Form.txtValue1

    其中 DashboardSubName 是您的子表单控件的名称。

    【讨论】:

      【解决方案2】:

      假设您向我们展示的代码是子表单的一部分,而不是父表单,请替换

      [forms]![DashboardSubName].txtValue1 = rs!Value1
      

      Me.txtValue1 = rs!Value1
      

      【讨论】:

        【解决方案3】:

        这里使用语法的原因是子表单控件与嵌入其中的子表单不同。子表单控件具有自己的属性(与子表单本身相比受到限制),要获得嵌入其中的子表单的属性/方法,您必须指定您想要子表单嵌入的表单。

          Me!MySubformControl
        

        ...是子窗体控件。

          Me!MySubformControl.Form
        

        ...是嵌入在子表单控件中的表单。

        最后,我真的很想知道您为什么要遍历记录集来更新子表单中的数据。这不是正常的做法,尽管它与您的实际问题无关。

        【讨论】:

        • 感谢大卫。为了回答您的问题,我为一种用作仪表板的用户类型提供了很多表单,其中有一堆用于向下钻取。向下钻取需要具有选择单个结果的功能,并基于一系列选择构建 sql 语句。我刚开始转换为子表单,以使整体 UI 更友好一些。如果这不是处理它的最佳方式,我不会感到惊讶......就像我想出如何完成它的方式一样。我总是乐于学习更好更简单的方法。谢谢
        • 我不明白你在说什么。听起来您正在查看数据,而不是更新。而且,当然,“仪表板”这个词对我来说是完全不透明的——我不知道你用这个词指的是什么。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 2021-09-09
        • 2016-11-08
        • 1970-01-01
        相关资源
        最近更新 更多