【问题标题】:Access VBA: Find item in combo box based on non-bound columnAccess VBA:根据非绑定列在组合框中查找项目
【发布时间】:2013-03-12 16:28:58
【问题描述】:

我在 Access 表单上有一个两列组合框,表示键到代码的映射。组合框的第一列是“绑定列”(即调用MyComboBox.Value 时使用的列)。

我需要根据第二列中的值动态设置组合框的Value。例如,如果我的组合框来源是:

Value | Code
===============
 A1    | ABCD
 A2    | EFGH
 A3    | IJKL

我可以简单地使用ComboBox.Value = "A2" 设置组合框的值,但是如何使用第二列来设置组合框的值? ComboBox.Value = "EFGH" 显然无效。本质上是在寻找 ComboBox.Value = ComboBox.ValueWhereSecondColumnEquals("EFGH") 的逻辑

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    并假设它不是基于表/查询:

    Dim i As Integer
    
    For i = 0 To ComboBox.ListCount-1
        If ComboBox.Column(1, i) = "EFGH" Then
            ComboBox.Value = ComboBox.ItemData(i)
            Exit For
        End If
    Next i
    

    【讨论】:

    • to ListCount-1 :) 我正要添加这个。
    • 有时最好的答案是最简单的 - 简直不敢相信我从来没有想过循环浏览它!
    【解决方案2】:

    假设你的组合是基于一个表的,你可以 DLookUp 表中的值:

     ComboBox.Value = Dlookup("Value","Table","Code='" & sCode & "'")
    

    【讨论】:

    • 这也有效。目前它不是基于表格,但可能会在某个时候出现
    • 启,除非你的值很少,我说的很少是指2或3,它应该基于一个表,以便于维护和用于报告和查询。
    • 我知道 - 整个事情稍后将后端到 SQL Server,但目前我正在等待提供完整的映射列表,我只是在拼凑一个 UI 设计(零后退- end) 向客户展示初始费用。
    【解决方案3】:

    如果源是组合框中选定的值,而目标是未绑定的组合框,请将目标组合框的 .BoundColumn 属性设置为适当的列,然后正常分配组合框值,如 cboX=cboY。即使绑定了目标组合框,您也可以根据需要动态更改绑定的列。

    【讨论】:

      猜你喜欢
      • 2015-07-26
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 2011-11-17
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多