Vba 组合框,用于选择具有多个重复项的值&;是否逐行从每个重复记录中填充带有值的文本框?

Vba 组合框,用于选择具有多个重复项的值&;是否逐行从每个重复记录中填充带有值的文本框?,vba,ms-access,Vba,Ms Access,我目前正试图按照标题中所说的那样去做,但找不到一个可靠且能工作的vba代码来使用 数据库包含2个表单和2个表 1个表需要每个名称有一个唯一记录,其中包含多个'描述值,,而另一个表每个名称有多个重复记录,其中每个名称只有一个'描述值 “唯一名称”表需要有一条记录,其中包含“重复名称”表的多条记录“描述值”中的所有“描述值” 我的印象是,使用DLookup查询“重复名称”表上的“重复名称”将返回我可以设置为文本框值的所有“描述值” Me.txtDescription.Value = DLookup(

我目前正试图按照标题中所说的那样去做,但找不到一个可靠且能工作的vba代码来使用

数据库包含2个表单和2个表

1个表需要每个名称有一个唯一记录,其中包含多个'描述值,,而另一个表每个名称有多个重复记录,其中每个名称只有一个'描述值

唯一名称”表需要有一条记录,其中包含“重复名称”表的多条记录“描述值”中的所有“描述值

我的印象是,使用DLookup查询“重复名称”表上的“重复名称”将返回我可以设置为文本框值的所有“描述值

Me.txtDescription.Value = DLookup("[Description]", "Duplicates Table", "[Dupe Names] = '" & cboUniqueName & "'")
但它只会在文本框中返回一条记录。我还尝试了以下代码

Dim dQry As String
Dim dupeItems
Dim dupeList() As String

dQry = Me.cboUniqueName.Value
dupeItems = DLookup("Description", "Duplicates Table", "[Dupe Names] = '" & dQry & "'")
i = 0
For Each dupeItem In dupeItems
    ReDim Preserve dupeList(i)
    dupeList(i) = dupeItem
    i = i + 1
Next

Me.txtDescription.Value = dupeList
但这也不起作用。 是否有已知的方法进行此操作我对vba不是很有经验,所以我可能忽略了问题的答案

如果需要的话,我可以尝试重新表述我的问题,但这是我能想到的。 谢谢大家!

您可以使用my generic函数,将换行符用作分隔符:

Dim dQry作为字符串
像字符串一样的模糊重复项
dQry=Me.cboUniqueName.Value
dupeItems=DJoin(“说明”、“[Duplicates Table]”、“[Dupe Names]=”、&dQry&“”,vbCrLf)
Me.txtDescription.Value=dupeItems
功能(完整模块):

选项显式
'返回具有相同键的记录字段中的联接(连接)值。
'联接的值存储在一个集合中,该集合可加快查询或表单的浏览速度
'因为所有联接的值将仅从表或查询中检索一次。
'忽略空值和零长度字符串。
'
'如果未找到任何值,则返回Null。
'
'关联值的默认分隔符是空格。
'可选地,可以指定任何其他分隔符。
'
'语法与本机域函数、DLookup、DCount等的语法相近。
'
'使用表(或查询)作为源的select查询中的典型用法:
'
"选择,
"凯菲尔德,,
'DJoin(“[ValueField]”、“[Table]”、“[KeyField]=”&[KeyField]&”)作为值
“从
“桌子
"分组,
“凯菲尔德
'
'源也可以是SQL Select字符串:
'
"选择,
"凯菲尔德,,
“DJoin(“[ValueField]”,“[KeyField]=”&[KeyField]&”)作为值
“从
“桌子
"分组,
“凯菲尔德
'
'要清除集合(缓存),请在不带参数的情况下调用DJoin:
'
“杰恩
'
“需要:
“收集价值观
'
2019-06-11,仙人掌数据ApS,古斯塔夫·布罗克
'
公共功能邻接(_
可选的ByVal表达式作为字符串_
可选的ByVal域作为字符串_
可选的ByVal条件作为字符串_
可选的ByVal分隔符,如String=“”)_
作为变体
'预期要接受的错误代码。
Const CannotAddKey的长度=457
Const CannotReadKey的长度=5
“SQL。
Const SqlMask As String=“从{1}{2}中选择{0}”
Const SqlLead As String=“选择”
Const SubMask As String=“({0})As T”
Const filtermak As String=“其中{0}”
作为新集合的静态值
Dim记录作为DAO.Recordset
将子记录设置为DAO.Recordset
将Sql设置为字符串
将SqlSub设置为字符串
将筛选器设置为字符串
变暗值
作为变量的模糊结果
关于错误转到错误
如果表达式为“”,则
'删除密钥集合。
设置值=无
结果=空
其他的
'获取值。
'如果未添加当前条件,则此操作将失败
"结果为空。
结果=值。项目(标准)
'
如果我是空的(结果),那么
'当前条件尚未添加到集合中。
'生成SQL以查找值。
如果InStr(1,LTrim(域),SqlLead,vbTextCompare)=1,则
'域是一个SQL表达式。
SqlSub=Replace(子磁盘“{0}”,域)
其他的
'域是表或查询名称。
SqlSub=域
如果结束
如果修剪(标准)”,则
'生成Where子句。
筛选器=替换(筛选器任务“{0}”,条件)
如果结束
'生成最终SQL。
Sql=Replace(Replace(Replace(SqlMask,{0}),表达式,{1},SqlSub,{2},过滤器)
'查找要联接的值。
Set Records=CurrentDb.OpenRecordset(Sql,dbOpenSnapshot)
收集值记录、分隔符、结果
'将键及其联接的值添加到集合中。
值。添加结果、条件
如果结束
如果结束
'返回联接的值(如果未找到任何值,则返回Null)。
DJoin=结果
出口(j):
退出功能
厄尔乔因:
选择大小写错误
盒装钥匙
'键存在,因此无法再次添加。
下一步继续
箱子罐头盒钥匙
'键不存在,因此无法读取。
下一步继续
其他情况
“还有别的错误。忽略。
继续退出
结束选择
端函数
“从乔恩来叫。
'
'将记录集第一个字段的内容合并为一个字符串
'使用空格作为分隔符或可选分隔符,由返回
'参数结果中的引用。
'
2019-06-11,仙人掌数据ApS,古斯塔夫·布罗克
'
私人分公司价值(_
ByRef记录