MS Access VBA 更新组合框表字段

Posted

技术标签:

【中文标题】MS Access VBA 更新组合框表字段【英文标题】:MS Access VBA to update a Combobox table field 【发布时间】:2020-02-05 16:08:20 【问题描述】:

我有一个表,其中一个字段的显示控件设置为组合框,但我无法使用 OpenRecordSet 对其进行读取或写入。我需要做些什么来修改才能让这些场景发挥作用?

Sub TryToRead()
Set db = CurrentDb
Set rs = db.OpenRecordset("tbl", dbOpenDynaset)
x = rs!FieldName '<------Combo Box Field. x shows no info.
End Sub

Sub TryToWrite()

Set db = CurrentDb
Set rs = db.OpenRecordset("tbl", dbOpenDynaset)
With rs
.AddNew
rs!FieldName = "Test Value" '<------ Results in Run-time error 64224 Application-defined or object-defined error
   .Update
End With

End Sub

【问题讨论】:

建议不要在表中建立查找。但是,除非将其设置为多值字段,否则不应阻止读取和写入值。错误消息太笼统,无济于事。你谷歌了这条消息吗?尝试 SQL INSERT 操作而不是打开记录集。 允许多个值在此字段中设置为“是”。该设置是否消除了通过 VBA 与值交互的能力? 这肯定会使 VBA docs.microsoft.com/en-us/office/vba/access/concepts/… 复杂化。研究MVF,全面了解它们。我建议不要使用 Access-exclusive 功能的多值字段。 谢谢。我正在看这个链接。这似乎让我完成了我想要完成的工作;但是,我无法有效地切换复选框以打开/关闭它们。 不能使用 VBA 来“切换”MVF 组合框的复选框,句号。它应该反映保存到 MVF 中的值。 【参考方案1】:

我想我有我需要的。

Sub Testing()

Set db = CurrentDb
Set rs = db.OpenRecordset("tbl", dbOpenDynaset)
MyStr = Array("Value1", "Value2")

Do Until rs.EOF = True
    Set rs2 = rs!FieldName!Value
    rs.Edit
    For Each c In MyStr
        rs2.AddNew
        rs2!Value.Value = c
        rs2.Update
    Next c
    rs.Update
    rs.MoveNext
Loop

结束子

【讨论】:

阅读和使用Option Explicit 并且值是字段的错误名称(需要前缀,例如FieldValue)

以上是关于MS Access VBA 更新组合框表字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2010 中使用 VBA 选择多值组合框的值?

根据组合框选择切换表单上其他字段的可见性 - MS Access

Access VBA - 触发组合框更改事件

ms access 组合框刷新

Ms Access - 从组合框列更新图像

MS Access:组合框列顺序问题