2015-10-16 76 views
0

记录我有一个子窗体像这样:子窗体搜索的主要形式

enter image description here

当我点击“选择”按钮,我希望在主窗体上的记录导航到相应的一个(持有相同职员编号的职位)。

我迄今为止尝试是当按钮被按下运行以下VBA:

Private Sub Command6_Click() 
Dim rs As Object 
Dim strLinkValue As String 
strLinkValue = Forms![navigation form]![NavigationSubform]![teacher search qry subform]![Staff ID].Value 
Set rs = Forms![navigation form]![NavigationSubform]![teacher search qry subform].Form.RecordsetClone 
rs.FindFirst "[Staff ID] = '" & strLinkValue & "'" 
Forms![navigation form]![NavigationSubform].Bookmark = rs.Bookmark 
End Sub 

但是当我这样做,我得到运行时错误438(对象不支持此属性或方法)。

任何想法?我觉得我过于复杂的事情。

回答

3

你第一次得到在这一行错误438(“对象不支持此属性或方法。”)...

Set rs = Forms![navigation form]![NavigationSubform].Recordset.Clone 

Recordset.Clone更改为Form.RecordsetClone治愈的错误(那条线)。

不幸的是,你再试图在该行设置Bookmark时遇到错误438再次...

Forms![navigation form]![NavigationSubform].Bookmark = rs.Bookmark 

之所以在这一点上的错误是因为[NavigationSubform]是子窗体控件和控制不有一个Bookmark属性。您需要在该控件中包含的Form上设置Bookmark

此代码做我相信你想要的。我使用数据库的副本在Access 2010中测试了它。

Dim rs As DAO.Recordset 
Dim strLinkValue As String 

strLinkValue = Me![Staff ID].Value 
With Me.Parent.Form 
    Set rs = .RecordsetClone 
    rs.FindFirst "[Staff ID] = '" & strLinkValue & "'" 
    .Bookmark = rs.Bookmark 
End With 
+0

将'Option Explicit'添加到所有模块的声明部分,然后从VB编辑器的主菜单中运行Debug-> Compile。修复编译器抱怨的任何内容,然后再次尝试编译。重复,直到所有编译错误已被消除。 – HansUp