MS-Access 2013;根据多记录形式的记录数据更改组合框选项
Posted
技术标签:
【中文标题】MS-Access 2013;根据多记录形式的记录数据更改组合框选项【英文标题】:MS-Access 2013; Change combobox options based on record data in multi-record form 【发布时间】:2016-02-11 20:44:20 【问题描述】:我有一个包含多条记录的表单,每行一条,从表中提取。我每行有 2 个 ComboBox 控件。第一个 ComboBox 的选项链接到类别表。第二个 ComboBox 的选项需要链接到第一个 ComboBox 的子类别。
我尝试在设计时在行源中使用 WHERE 语句,该语句生成了所有子类别。
我已经尝试在 ComboBox 类别的更改事件上使用 WHERE 语句和重新查询命令,它为最后更改的类别生成子类别。这是一个问题,因为所有行都具有相同的选项,而不是基于该记录/行的类别的选项。
我需要的是每行查询子类别/类别映射表并根据该行的类别选择过滤结果。这可能吗?如果是这样,如何做到这一点?我不怕使用 VBA 来获得我需要的结果。
【问题讨论】:
【参考方案1】:在窗体的 On_Current 事件中,可以根据第一个组合框的列值动态更改第二个组合框的行源。您可能还需要在第一个组合框的 after_update 事件上执行此操作。
类似的东西
Select Case Me.cboCategory
Case "Category 1"
Me.cboSubCategory.RowSource = "qryCat1Subclass"
Case "Category 2"
Me.cboSubCategory.RowSource = "qryCat2Subclass"
Case Else
Me.cboSubCategory.RowSource = ""
End Select
我没有两个组合框,只有一个,但它的内容必须基于另一个字段中的值。我就是这样做的。
【讨论】:
这适用于动态过滤,但是具有不同类别的行在组合框中将没有文本,直到选择了具有相同类别的行。 @DevLocus。您的类别和子类别绑定字段吗?如果他们是它应该工作。如果不是,则连续表格仅在所有行上显示当前记录中的值。 (如果你想做更多花哨的事情,那就真的很痛苦)。我完全按照我所说的去做,(尽管我没有将组合框称为我标记为 Me.cboCategory 的字段,在我的例子中它是来自数据库的文本字段) 当然,Case Else 只是一个退出条款。您应该为所有可能的值添加更多 Case "Category n" 元素。 再想一想。 cboSubCategory 字段应该允许不在 ComboBox 列表中的值(只是为了处理您刚才提到的情况)。 不幸的是,要完成这项工作,我需要在组合框中显示子类别的 ID 号而不是名称,因为绑定列必须对“限制列表”属性可见,才能为“否”。以上是关于MS-Access 2013;根据多记录形式的记录数据更改组合框选项的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ADO 记录集字段将图片加载到 MS-Access Image 控件中?