【问题标题】:Synchronizing record navigation control and record selection combo box同步记录导航控制和记录选择组合框
【发布时间】: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

组合框有三列:

  1. Bound Column,一个不可见的 ID,
  2. 位置代码,
  3. 位置名称。

组合的Row SourceSELECT * 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


    【解决方案1】:

    分配给组合的.Value 属性以更改其选择。对于.Value,您不需要SetFocus

    Private Sub Form_Current()
        Me.Loc_cbo.Value = Me.Loc_txt.Value
    End Sub
    

    请注意,此建议假定组合的 .Value 是您要与文本框值匹配的内容。检查以确认您希望组合和文本框之间的匹配基于组合的 .Value 而不是组合的其他列。

    验尸

    文本框的内容旨在匹配组合的列之一。然而,由于组合的 Bound Column 包含与其他列相关联的数字,Martin 使用DLookup 表达式来获取与文本框内容对应的数字并将该数字分配给组合的.Value属性:

    Me.Loc_cbo.Value = DLookup("ID", "Sites", "Loc= '" & Me.Loc_txt.Value & "'")
    

    注意组合的.Value 是其选定行的绑定列 中的值。

    【讨论】:

    • 第一次尝试就成功了!也许您想将 this 编辑到您的答案中:Me.Loc_cbo.Value = DLookup("ID", "Sites", "Loc= '" & Me.Loc_txt.Value & "'")
    • 干得好,先生!如果您可以更容易理解,请随时编辑我的描述。
    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多