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 只选择第一条记录的主要内容,如果未能解决你的问题,请参考以下文章