ComboBox 只选择第一条记录

Posted

技术标签:

【中文标题】ComboBox 只选择第一条记录【英文标题】:ComboBox only selects first record 【发布时间】:2021-12-28 16:10:51 【问题描述】:

我有一个从包含两个字段的表中选择的组合框:第 1 列是“用户名”,第 2 列是“签名”。 “User_Name”字段的数据类型是短文本,“Signature”是一个ole对象(我们用户签名的.bmp)。当我单击下拉列表时,该表中的所有记录都是可见的,但是它只允许我选择第一条记录。这个组合框在一个表单上,我有一个报告,该报告从该表单上选择的用户那里获取签名。组合框的行源为:

Select Table1.User_Name, Table1.Signature
From Table1;

这里是组合框的数据属性:

绑定列 ---- 2 限制列表----是的 允许值列表编辑 ---- 是 继承值列表编辑 ---- 是 仅显示行源值----是 已启用 ---- 是 锁定----没有

我还有一些其他数据库带有组合框,它们的工作方式与我想要的完全相同。唯一的区别是这个组合框是唯一一个从具有嵌入式 ole 对象作为其中一列的数据类型的表中选择的组合框,所以我认为这一定与这个问题有关。 有谁知道为什么会发生这种情况?

【问题讨论】:

组合框总是返回文本,所以我看不出它应该如何返回 OLE 对象。可能是对此的引用,但仅此而已。 好吧,我认为它与 OLE 对象有关。您是否建议我从组合中删除 Ole,使用组合选择用户名,然后使用查询根据组合框选择获取签名? 是的,类似的。 可以在 RecordSource 表单中包含签名表。但是表格上真的需要签名吗? 你的意思是组合框只让你选择第一个列表项吗?绑定域的属性是什么?是否存在与组合框值列表项冲突的验证规则? 【参考方案1】:

我的一个数据库中发生了同样的事情。

让我们将您的组合框称为“Combo1”。 因此,以下字段(Table1.User_Name & Table1.Signature)在控件中被视为:

User_Name = Me.Combo1
Signature = Me.Combo1.column(1)

对于签名,而不是 ole 对象,我使用带有 .bmp 文件完整路径的短文本。所以数据看起来像这个例子:

User_Name = "约翰·史密斯"

签名 = "F:\Signatures\johnsmith.bmp

然后,在表单上放置一个名为 Image1 的图像对象,并在 Combo Box 的 After Update 事件中使用以下代码:

Private Sub Combo1_AfterUpdate()

  Dim SignaturePath As String
  SignaturePath = Dlookup("[Signature]","Table1","[Signature]='" & Me.Combo1.column(1) & "'")

  Me.Image1.Picture = SignaturePath

End Sub

这应该会导致更新组合框后签名图像更改为 SignaturePath。

【讨论】:

以上是关于ComboBox 只选择第一条记录的主要内容,如果未能解决你的问题,请参考以下文章

delphi 中combobox控件怎么显示所选择选项

easyui combobox 加载完成后 新增一条记录

Extjs ComboBox 动态选中第一项

如何禁用 ComboBox 中第一项的自动选择?

jquery easyui-combobox 只能选第一个选项

求教,如何获得comboBox中当前选择的值