【发布时间】:2020-07-08 17:16:25
【问题描述】:
我不太确定如何表达这个问题,所以我提供了步骤。
步骤:(VBA-Excel)
- 数据被插入到数据库中。运行查询以提取所有有违规行为的公司并将其插入到 Excel 中。
- 然后我有一个循环,它获取每个公司名称的值并将单元格值(公司名称)插入另一个检索电子邮件的查询中。
我遇到的问题是有些公司列出了两封电子邮件。所以 db 查询看起来像这样:
- 公司/邮箱
- 微软/email1@...
- 微软/email2@...
- 索尼/email@...
当使用电子邮件查询运行时(希望有帮助)
n = 1
Do While IsEmpty(Range("A" & n).Value) <> True 'If Cells in Col A is not empty
CSCust = Range("A" & n).Value
qryEmail = "SELECT Email FROM dbo.tblPHEmails WHERE SamplePoint LIKE '" & CSCust & "'"
Set connect = New ADODB.Connection
connect.Open (strConnectStr)
'
'Clean Stream Query
Set recordSetCSEmail = New ADODB.recordSet
recordSetCSEmail.Open qryEmail, connect
Range("C" & n).CopyFromRecordset recordSetCSEmail
n = n + 1
Loop
在 Excel 中,这会覆盖一封电子邮件,因为它会自动在下一行输入值,检查下一家公司(替换为该公司的电子邮件)。我希望得到这样的数据:
- 公司/电子邮件/电子邮件2
- 微软/email1@.../email2@...
- 索尼/email@...
我知道它有点长(我道歉),这可能吗?或者,我应该去编辑数据库中的电子邮件列表以允许每家公司拥有多个电子邮件字段吗?
【问题讨论】:
-
我会更改 sql 语句以在一行中为您提供两封电子邮件。使用嵌套的 select 语句,您可以返回第二封电子邮件,如果不存在则返回空值。在问之前;为此,需要了解您的数据库平台和其他信息。这将是一个新问题。
-
这正是我所做的,而且效果很好!