【问题标题】:Access Subform Source object访问子表单源对象
【发布时间】:2013-04-26 09:30:14
【问题描述】:

我想要实现的是组合框 (Combo_sf) 选择来指示子表单控件 (sf_record) 中的表单我有大约 10 个表单,它们的名称在组合框数据中。我是 VBA 新手,不确定我的方法是否正确:

Private Sub Combo_sf_AfterUpdate()
    Dim strLoadTable As String  

    strLoadTable = "Form." & Me.Combo_sf.Value
    MsgBox strLoadTable

    Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable

End Sub

我已将其放置在组合框的更新后事件中,但是当我进行选择时,表单中没有任何反应。我是在接近这个权利还是其他方式会更好?

【问题讨论】:

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


    【解决方案1】:

    您的方法应该奏效。我在主窗体上放置了一个名为 cbxSubform 的组合框,并在其 AfterUpdate() 事件处理程序中添加了一行代码...

    Private Sub cbxSubform_AfterUpdate()
    Me.mySubform.SourceObject = Me.cbxSubform.Value
    End Sub
    

    ...更改组合框中的选择会立即切换子表单。您确定您的组合框的 AfterUpdate() 代码实际上正在触发吗? (您可以添加MsgBoxDebug.Print 进行检查。)

    【讨论】:

    • 谢谢您,我认为问题在于我的宏没有打开,但此信息非常有帮助,感谢您的所有帮助!
    【解决方案2】:

    可能是这条线让你绊倒:

    strLoadTable = "Form." & Me.Combo_sf.Value
    

    你的表单对象叫什么?如果您的表单名为 Form.myTableName,则可能是 . 将其丢弃,请尝试将其设置为名称中不带点的表单。

    【讨论】:

      【解决方案3】:

      在这一行中,代码似乎试图更改 Form 对象的 SourceObject 属性。

      Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable
      

      但是,SourceObject 是子表单控件 的属性,而不是包含在该控件中的表单。所以如果子窗体控件被命名为sf_record,就这样做吧。

      Forms![frm_Mnu_Manage Configuration Settings]!sf_record.SourceObject = strLoadTable
      

      另外,如果更新后过程从[frm_Mnu_Manage Configuration Settings] 运行,您可以使用Me 来引用表单。

      Me!sf_record.SourceObject = strLoadTable
      

      最后,如果Me.Combo_sf.Value 是一个表单的名字,你不需要在它的名字前面加上"Form."。它在我的测试中以任何一种方式工作,但我会省略“Form.”

      strLoadTable = Me.Combo_sf.Value
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 1970-01-01
        相关资源
        最近更新 更多