【发布时间】:2015-05-06 23:14:26
【问题描述】:
我有一个绑定到查询的表单,控件绑定到查询的字段。
我还有一个未绑定的组合框,其Row Source 是同一个查询,用于通过其After Update 事件处理程序选择当前表单记录:
Private Sub Loc_cbo_AfterUpdate()
DoCmd.SearchForRecord , "", acFirst, "ID = " & Str(Nz(Loc_cbo, 0))
End Sub
组合框有三列:
-
Bound Column,一个不可见的 ID, - 位置代码,
- 位置名称。
组合的Row Source 是SELECT * FROM Sites ORDER BY Loc DESC。 (最初只是Sites,但由于我将表单的Order By 设置为Site.Loc DESC,所以我希望顺序匹配。)
它工作正常。 当然,我也可以也通过其导航控件(First、Previous、Next、Last)浏览表单的记录。 这也行得通。 但是,我希望组合框与当前记录同步,因为它通过导航控件进行更改。
我尝试通过表单的 Current 事件处理程序来实现,三种不同的方式。
首先,设置组合框的Text值与对应的文本框控件匹配
Private Sub Form_Current()
Loc_cbo.SetFocus
Loc_cbo.Text = Loc_txt ‘ ERROR
End Sub
但我明白了
运行时错误“2101”:您输入的设置对此无效 属性。
其次,设置组合框的ListIndex值相对于当前记录
Private Sub Form_Current()
Loc_cbo.SetFocus
Loc_cbo.ListIndex = CurrentRecord - 1 ‘ ERROR
End Sub
但我得到相同的运行时错误“2101”或
运行时错误“7777”:您错误地使用了 ListIndex 属性。
在同一个地方。
第三,(感谢 HansUp 的早期回答)设置组合框的 Value 属性:
Private Sub Form_Current()
Loc_cbo.Value = Loc_txt.Value
End Sub
只要没有错误消息,这个“有效”,根据 debug.prints,Loc_cbo 的值确实会改变以匹配 Loc_txt 的值。但是,组合框的可见文本框部分现在似乎总是为空/空白(其中没有任何内容)。
当通过记录导航器更改了当前记录时,如何使记录选择器组合框与当前记录一致? 我不敢相信用户会很高兴这两者不同步。 我也不敢相信我在其他任何地方都没有发现这个问题!
【问题讨论】:
标签: ms-access vba ms-access-2010