0

所以我最近一直在尝试合并更多的子表单,让 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”未找到。所以最初这个表单是它自己的表单,它自己打开它工作正常,但是一旦我在父表单中使用它,我就会收到这个错误。

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

谢谢贾斯汀

4

3 回答 3

3

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

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

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

于 2010-07-21T00:21:06.843 回答
1

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

  Me!MySubformControl

...是子窗体控件。

  Me!MySubformControl.Form

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

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

于 2010-07-21T18:10:37.267 回答
1

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

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

Me.txtValue1 = rs!Value1
于 2010-07-21T13:03:37.290 回答