【问题标题】:Subform to search record on main form子表单在主表单上搜索记录
【发布时间】:2015-10-16 15:52:52
【问题描述】:

我有一个像这样的子表单:

当我单击“选择”按钮时,我希望主表单上的记录导航到适当的记录(具有相同员工 ID 的记录)。

到目前为止,我尝试的是当按下按钮运行以下 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(对象不支持这个属性或方法)。

有什么想法吗?我觉得我把事情复杂化了。

【问题讨论】:

    标签: forms vba ms-access record subform


    【解决方案1】:

    您首先在这一行收到错误 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
    

    【讨论】:

    • Option Explicit 添加到所有模块的声明部分,然后从VB 编辑器的主菜单运行调试->编译。修复编译器抱怨的任何问题,然后再次尝试编译。重复直到消除所有编译错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多