【问题标题】:access 2013 multi value combo in table how to uncheck one value using vba?访问表中的 2013 多值组合如何使用 vba 取消选中一个值?
【发布时间】:2020-08-03 03:11:01
【问题描述】:

我有一个查找字段/组合框(颜色),表格中允许有多个字段(油漆)。下拉菜单在不同颜色旁边显示了许多复选框。 它看起来像:

☑ Red
☑ Blue
☑ Green

如何在第一个记录的字段中找到值“蓝色”并取消选中它?我很难在表单代码中引用颜色字段:

Dim rst As Recordset
Set rst = CurrentDB.OpenRecordset("Paint", dbOpenDynaset)

With rst
.MoveFirst
MsgBox ![Color].MultiSelect
End With

我认为这会给我一个 TRUE 值。但我得到对象不支持此属性或方法

那么,我如何引用颜色组合框,然后取消选中相应的值?

【问题讨论】:

    标签: vba ms-access combobox


    【解决方案1】:

    您打开的记录集似乎没有“多选”属性。有关多选字段的文档,请参阅 here

    基本上,多选字段中的值本身就是一个记录集。你只得到了表的记录集,没有得到字段的记录集。希望您的 Colors 表中有一个 ID 字段,但如果没有,这里可能会有所不同,但基本思想应该是相同的。

    你想要这样的东西:

    Sub test()
    
    Dim db As Database
    Dim rs As Recordset
    Dim childRS As Recordset
    Dim valueToDelete As Long
    
    valueToDelete = DLookup("ID", "tblColors", "Color = 'blue'")
    'Obviously this depends on how your table is set up.    
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblPaint")
    rs.MoveFirst
    
    Do Until rs.EOF
        Set childRS = rs!Colors.Value
        childRS.MoveFirst
        Do Until childRS.EOF
            If childRS!Value.Value = valueToDelete Then
                childRS.Delete
            End If
            childRS.MoveNext
        Loop
        rs.MoveNext
    Loop
    
    End Sub
    

    【讨论】:

    • 谢谢!我会试一试。为了清楚起见,这将取消选中蓝色旁边的框,而不是从列表中删除蓝色?是的,主表 (tblPaint) 有一个数字字段,它链接到另一个包含颜色的表 (tblPaintColorList)。 tblPainColorList 是用于填充下拉列表的 ID 和颜色。
    • 是的,这将取消选中该框,而不是从链接表或选项列表中删除条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多