使用组合框过滤子表单

Posted

技术标签:

【中文标题】使用组合框过滤子表单【英文标题】:Filter subform using combobox 【发布时间】:2009-06-24 16:04:49 【问题描述】:

这花了我将近 2 周的时间,我不知道还能做什么。我有一个主表单(UserSearch),它有一个子表单(TestUserSub)。这两种形式的关联表是 tblusers。 非常简单;在主窗体 (UserSearch) 上,我有一个与 tbluser 中的字段相关联的组合框,例如 cmbid、cmbname、cmbdept 等。我想要的只是让用户从任何这些组合框中进行选择,并让相关字段显示在子表单(TestUserSub)中。我在几个组合框的更新后事件中尝试了几种不同版本的代码,但子表单中没有发生任何事情,或者在其他情况下我收到错误消息。 我尝试过的一个示例是过滤运行 SQL 命令

Private Sub cmbid_AfterUpdate()

    Dim strSQL As String

    If IsNull(Me.cmbaccess) Then
        Me.RecordSource = "tblusers"
    Else
        strSQL = "SELECT tblUsers.[Team Member_ID] FROM tblUsers " & _
             "WHERE (((tblUsers.[Team Member_ID])= " & [form_testusersub].[txtid2]))& ";"       
        Me.RecordSource = strSQL
    End If

End Sub

上面没有工作...有人可以帮我解决这个问题。我有一个我一直在使用的示例数据库,并且通过某种非常奇怪的方式,他们设法在不调用任何代码的情况下完成了同样的事情。这可能吗?

【问题讨论】:

【参考方案1】:

我能够使用下面的示例找出代码

Private Sub yourcombobox_AfterUpdate()
    Dim LSQL  As String

    If IsNull(Me.yourcombobox.Value) Then
        Form_yoursubform.RecordSource = "tablename"
        Me.yoursubform.Requery
        requerysubform 'macro to requery the whole form
    Else
        LSQL = "select * from tablename"
        LSQL = LSQL & " where field= '" & yourcombobox & "'"

        Form_yoursubform.RecordSource = LSQL
        requerysubform 'macro to requery the whole form

    End If
End Sub

希望这会有所帮助。

【讨论】:

确保在主窗体中每个组合框的更新后事件中输入此代码。它应该触发子表单进行相应的过滤

以上是关于使用组合框过滤子表单的主要内容,如果未能解决你的问题,请参考以下文章

使用组合框过滤子表单 - ACCESS 2013

使用组合框过滤子表单

组合框更改后子表单不重新查询

在 ms-Access 中使用组合框创建搜索表单

访问子表单选择取决于组合框

如何从位于访问中的另一个子窗体中的组合框中过滤子窗体?