【发布时间】:2013-12-04 22:03:44
【问题描述】:
我有 Access 2010 表单,它有一个组合框 cmbSubTopic,其中列出了两列(SubTopicID 和 SubTopic)。组合框绑定到包含SubTopicID 的字段。组合框中的SubTopicID 列是隐藏的,它只显示SubTopic。当用户从下拉列表中选择SubTopic 时,相应的SubTopicID 将存储在表中。我为表单的加载事件编写了一些 VBA 代码,以在表中查找 SubTopicID,并在 ComboBox 中选择相应的 SubTopic。我当前的代码是这样的:
Set rsST = dbs.OpenRecordset(strSqlst)
For i = 0 To Me.cmbSubTopic.ListCount - 1
If Me.cmbSubTopic.Column(0, i) = rsST.Fields("SubTopicID").Value Then
Me.cmbSubTopic.SetFocus
Me.cmbSubTopic.Selected(i) = True
Exit For
End If
Next i
这给出了错误提示:
您输入的文本不是列表中的项目
我也试过用这个:
Me.cmbSubTopic = Me.cmbSubTopic.Selected(i)
这会选择 ComboBox 中的项目,但也会将 I 的值写入我不想要的表的 ID 字段中。
【问题讨论】:
-
一般来说,对于有控制源的组合框你什么都不用做,因为它的值是底层表字段的值。
-
有没有办法可以阻止在表单的 OnLoad 事件中将数据插入表中,然后允许在组合框的 AfterUpdate 事件中插入。