Access Tracker表单:父实体筛选后子实体下拉框仅显首个值求助
问题排查与解决方案
核心问题:事件绑定逻辑错误
你的代码写在了Subs2_AfterUpdate事件中,但需求是选择父实体后更新子实体下拉框,代码应该绑定到Parententity2_AfterUpdate事件——否则父实体切换时不会触发子实体列表的更新,你看到的单个值只是表单当前记录的默认值,而非筛选后的完整子实体列表。
修正后的代码
Private Sub Parententity2_AfterUpdate() Dim strFilter As String Dim strSubsSQL As String ' 处理父实体为空的情况 If IsNull(Me.Parententity2.Value) Then Me.Subs2.RowSource = "" Me.RecordSource = "SELECT * FROM [Data]" Exit Sub End If ' 处理单引号避免SQL语法错误 strFilter = Replace(Me.Parententity2.Value, "'", "''") ' 更新表单记录源 Me.RecordSource = "SELECT * FROM [Data] WHERE [parent entity] = '" & strFilter & "'" ' 构造子实体查询语句,确保获取所有对应子实体 strSubsSQL = "SELECT DISTINCT [subs] FROM [Data] WHERE [parent entity] = '" & strFilter & "' ORDER BY [subs]" ' 设置并刷新子实体下拉框 Me.Subs2.RowSource = strSubsSQL Me.Subs2.Requery End Sub
额外属性检查
确保Subs2组合框的以下属性设置正确:
- Row Source Type:必须设为「表/查询」
- Column Count:设为1(仅查询
subs一列) - Column Widths:设置合适宽度(如
2cm),确保内容完整显示
内容的提问来源于stack exchange,提问作者user21308963
相关产品推荐
相关产品推荐

