我有一个带有一些textBox的表单,我想用SQL查询中的一个值填充其中一个。
该表名为tbl-apartner
,我想选择与mailadress
(serviceid
)匹配的每个sid2
。
SELECT [tbl-apartner].[EMail] FROM [tbl-apartner] WHERE [tbl-apartner].[SID] = sid2;
该SELECT语句的输出是正确的但我无法用它填充textBox。
我的想法是创建一个字符串,其中每个mailadress都与SID匹配,以将它们用作邮件的收件人。
我尝试使用dlookup(" [EMail]" ; "qry-apartner")
但输出只是我查询中的第一个条目。
答案 0 :(得分:1)
您必须在查询结果中编写VBA函数迭代,并创建一个字符串以分配给您的文本框。根据表单的行为方式,您可以将其放入相应的事件中,例如,如果表单打开一次使用OnOpen,如果用户可以更改sid2
,则使用相关控件的AfterUpdate事件等。 / p>
示例代码:
Dim ThisDB As DAO.Database
Set ThisDB = CurrentDb
Dim d As DAO.Recordset
Dim q As String
q = "SELECT [tbl-apartner].[EMail] FROM [tbl-apartner] WHERE [tbl-apartner].[SID] = " & sid2
Set d = ThisDB.OpenRecordset(q, dbOpenDynaset)
Dim Result As String
Result = ""
If d.EOF = False Or d.BOF = False Then
d.MoveFirst
Do While Not d.EOF
If Result <> "" Then Result = Result & vbCrLf
Result = Result & d!Email
d.MoveNext
Loop
End If
d.Close
以上为每个电子邮件地址创建了一个新行。将vbCrLf替换为您想要的任何内容,例如&#34;,&#34;将生成以逗号分隔的电子邮件。