首页 文章

Access 2010 - combobox - 未绑定表单 - 显示现有记录中的数据

提问于
浏览
2

我遇到的问题是当用户查看/编辑数据时,在未绑定表单上的组合框中显示正确的信息 .

填充组合框的表格:

tblLocation   
  idLocation  
  Location
  Location Description

在tblPerson表中,有一个名为idLocation的FK字段 . 我有一个表单,允许用户从列表框中选择一个人,并在文本框和组合框中显示信息 .

使用以下项目设置组合框:

idLocation  <--- column width set to 0
Location

我遇到的问题是当我查看/编辑新人时,数据在comobox中正确显示 .

从ListBox中选择一个人时,来自tblPerson的信息应显示在文本框和组合框中 . 文本框工作得很好 . 但是,我正在与组合框架斗争 . 请记住所有字段

我的研究发现只有两种解决这个问题的方法:

  • DLOOKUP

  • 手动检查并设置

如果我使用DLOOKUP方法:

cmbLocation = (DLookup("Location", "tblLocation", "idLocation=" & .Fields("idLocation")))

问题是msgBox cmbLocation将显示文本而不是FK . 如果用户尝试编辑数据但未进行任何更改,则会尝试保存文本而不是FK .

我找到了一种可行的手动方式,但我不确定这是最好的方法:

For i = 0 To (cmbLocation.ListCount - 1)
            If Val(cmbLocation.Column(0, i)) = Val(.Fields("idLocation").Value) Then
                cmbLocation = cmbLocation.ItemData(i)
                Exit For
            End If
        Next

再次,这是有效的 - 但我必须认为我做错了 - 可能是显而易见的事情 .

有一个更好的方法吗?

2 回答

  • 0

    您可以动态更改组合框中显示的数据 . 在您的方案中,我建议您使用列表框的OnClick事件(一旦选中此人) . 添加以下代码:

    YourComboBoxName.RowSource =“SELECT * FROM tblLocation WHERE idLocation =”&FK

    如果单击一个人后,组合框中的数据没有变化,则可能需要Me.Refresh

  • 0

    将表单基于将连接保留在位置列中的查询 .

    然后,当绑定到文本框时,该字段将自动显示,没有任何代码 . 更好的是,如果实际位置值发生变化,则不需要更新代码等 . 事实上,这是关系数据库的整体美!

相关问题