2015-08-20 18 views
0

我真的不知道如何字这个问题,所以我提供的步骤。控制SQL查询的值输入到Excel单元格

步骤:(VBA-Excel)中

  1. 数据被插入到数据库中。一个查询运行将所有违规的公司拖拽到excel中。
  2. 然后我有一个循环拍摄每一个公司名称的值,然后插入单元格的值(公司名称)为检索电子邮件另一个查询。

我的问题是,一些企业已经列出了两个电子邮件。因此,DB查询看起来是这样的:

  • 公司/电子邮件
  • 微软/ EMAIL1 @ ...
  • 微软/ EMAIL2 @ ...
  • 索尼/电子邮件@ ...

当电子邮件查询使用跑(希望它能帮助)

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 @ ...
  • 索尼/电子邮件@ ..

我知道这有点长(我很抱歉),这可能吗?或者,我是否应该编辑数据库中的电子邮件列表以允许每家公司拥有多个电子邮件字段?

+0

我会改变SQL语句给你在一行中两个电子邮件。使用嵌套select语句,您可以返回第二封电子邮件,如果不存在,则返回空值。在问之前;要做到这一点,它需要知道你的数据库平台和其他信息。这将是一个新问题。 –

+0

这就是我所做的,它的成果非常好! – JustoShow

回答

0

尝试添加行的最大数量被复制,使用:

Range("C" & n).CopyFromRecordset recordSetCSEmail, 1 
+0

这是一个很好的尝试。现在我只需要弄清楚如何将第二封电子邮件发送到下一栏。 – JustoShow

0

我遍地在逻辑去之后想出的溶液。在循环过程中,我将检查是否在下面的单元格中存储了额外的电子邮件(每个公司不超过两封电子邮件)并将其移至正确的位置。

相关问题