使用组合框过滤子表单
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
希望这会有所帮助。
【讨论】:
确保在主窗体中每个组合框的更新后事件中输入此代码。它应该触发子表单进行相应的过滤以上是关于使用组合框过滤子表单的主要内容,如果未能解决你的问题,请参考以下文章