2010-07-20 71 views
0

因此,我最近一直在尝试合并更多子表单以使UI更友好。因此,我有一个预先开发的表单,它运行一些VB,因此为了例子,我们只需说它运行SQL语句,返回记录集,并用数据填充文本框(因为这是一种交互式仪表板概念:MS Access 2007将表单转换为子表单 - “未找到表单”问题

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”没有找到。因此,原来这种形式是它自己的形式,并打开它本身它工作正常,但一旦我在父形式内使用它,我得到这个错误

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

谢谢你们 justin

回答

1

假设你向我们展示的是子窗体的一部分,而不是父窗体的代码,替代

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

Me.txtValue1 = rs!Value1 
+0

感谢汉斯....这就是我正在得到的,它现在都在工作。 – Justin 2010-07-21 21:39:06

3

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

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

其中DashboardSubName是你的子窗体控件的名称!

+1

更多信息:http://www.mvps.org/access/forms/frm0031.htm – Fionnuala 2010-07-21 08:11:32

+0

感谢球员的信息!它有助于! – Justin 2010-07-21 21:38:47

1

的原因语法这里是子窗体控件与嵌入其中的子窗体不同。子窗体控件具有其自己的属性(与子窗体本身相比有所限制),并且要获取嵌入其中的子窗体的属性/方法,您必须指定您希望子窗体嵌入的窗体。

Me!MySubformControl 

...是子窗体控件。

Me!MySubformControl.Form 

...是嵌入在子窗体控件中的窗体。

最后,我真的不知道为什么你要走记录集来更新子表单中的数据。这是不正常的做法,尽管它与你的实际问题是相切的。

+0

谢谢大卫。为了回答你的问题,我为一个用户类型提供了大量表单,充当仪表板,并且有一堆用于深入查看。向下钻取需要具有选择单个结果的功能,并根据一系列选择构建sql语句。我刚开始转换为子窗体,以使整个UI更友好。我不会感到惊讶,如果它不是最好的方式来处理它......只是我想出了如何完成它的方式。我总是乐于学习更简单的方法。谢谢 – Justin 2010-07-21 21:41:54

+0

我不明白你在说什么。这听起来像你正在查看数据,而不是更新。当然,“仪表板”这个词对我来说是完全不透明的 - 我不知道你指的是这个词。 – 2010-07-22 17:34:25

相关问题