Ms access 同步记录导航控件和记录选择组合框
我有一个绑定到查询的表单,控件绑定到查询的字段。 我还有一个未绑定的组合框,它的Ms access 同步记录导航控件和记录选择组合框,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我有一个绑定到查询的表单,控件绑定到查询的字段。 我还有一个未绑定的组合框,它的行源是同一个查询,用于在更新后通过其事件处理程序选择当前表单记录: Private Sub Loc_cbo_AfterUpdate() DoCmd.SearchForRecord , "", acFirst, "ID = " & Str(Nz(Loc_cbo, 0)) End Sub 组合框有三列: 绑定列,一个不可见的ID 一个位置码 位置名称 组合的行源代码是SELECT*FROM Sites
行源
是同一个查询,用于在更新后通过其事件处理程序选择当前表单记录:
Private Sub Loc_cbo_AfterUpdate()
DoCmd.SearchForRecord , "", acFirst, "ID = " & Str(Nz(Loc_cbo, 0))
End Sub
组合框有三列:
绑定列
,一个不可见的ID
一个位置码
位置名称李>
组合的行源代码是SELECT*FROM Sites ORDER BY Loc DESC
。(最初,它只是站点
,但由于我将表单的Order By
作为Site.Loc DESC
,因此我希望顺序匹配。)
它很好用。
当然,我也可以通过表单的导航控件(First、Previous、Next、Last)浏览表单的记录。
这也行得通。
但是,我希望组合框在通过导航控件更改时与当前记录同步
我试图通过表单的Current
事件处理程序,通过三种不同的方式来实现。
首先,将combobox的文本值设置为与相应textbox控件的文本值匹配
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的早期回答)设置combobox的Value属性:
Private Sub Form_Current()
Loc_cbo.Value = Loc_txt.Value
End Sub
只要没有错误消息,此“工作”,并且根据debug.prints,Loc\u cbo
的值会更改为与Loc\u txt
的值匹配。但是,组合框中类似于可见文本框的部分现在看起来总是空/空(其中没有任何内容)
当当前记录已通过记录导航器更改时,如何使记录选择器组合框与当前记录一致?
我不敢相信用户会因为两者不同步而高兴。
我也不敢相信,我还没有发现其他地方描述的这个问题 指定组合的.Value
属性以更改其选择。对于.Value
,您不需要设置焦点
Private子表单_Current()
Me.Loc\u cbo.Value=Me.Loc\u txt.Value
端接头
注意:此建议假定组合的.Value
是您希望与文本框值匹配的值。选中以确认您希望组合和文本框之间的匹配基于组合的.Value
,而不是组合的另一列
死后检验:
文本框的内容旨在匹配组合的一列。但是,由于组合的绑定列包含与另一列关联的数字,Martin使用DLookup
表达式获取与文本框内容对应的数字,并将该数字分配给组合的。Value
属性:
Private Sub Form_Current()
Loc_cbo.Value = Loc_txt.Value
End Sub
Me.Loc_cbo.Value=DLookup(“ID”、“Sites”、“Loc=””&Me.Loc_txt.Value&“”)
注意组合的.Value
是它所选行的绑定列中的值。第一次尝试就成功了!也许你想把它编辑成你的答案:Me.Loc\u cbo.Value=DLookup(“ID”,“Sites”,“Loc=””&Me.Loc\u txt.Value&“”)
做得好,先生!请随时编辑我的描述,如果你可以使它更容易理解。