2017-04-04 91 views
2

對於VBA/SQL我很新,我試圖執行條件內部聯接。在條件內部聯接語句(VBA/SQL)上返回多個值

我有兩個共同列(「CRM」和「CodeCRM」)的表,並且我想從table2(「服務檯」)獲取郵件地址,當table1中的某個事件被觸發(CodeBlocage = 101) Flux「)以將其添加到自動Outlook電子郵件中。

Dim StrDestinataire As String 
Select Case Strtable 
    Case "Flux", "GAFIJOUR" 

    Dim cn As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    Dim Y As String 
    Dim sSql As String 

    Set cn = CurrentProject.Connection 


    sSql = "Select AddMailCRM from Desks Inner Join Flux on Desks.CODECRM = Flux.CRM WHERE Flux.CODEBLOCAGE = '101'" 

    Set rs = cn.Execute(sSql) 

    If Not rs.BOF And Not rs.EOF Then 
     Y = rs.Fields("AddMailCRM").Value 
    End If 


    StrDestinataire = Y 

    cn.Close 

一切工作很好,除了它應該返回多個值的電子郵件地址。任何線索?

謝謝

+0

要從記錄集中獲取多行,您必須循環它(MoveNext等) – Andre

+0

謝謝安德烈。我實際上使用了語法Y = rs.GetString來獲取記錄集的所有電子郵件地址。我現在的問題是,一些電子郵件地址出現兩倍。我怎麼能刪除雙打? – Etienne

回答

1

當讀出一個記錄集時,你必須逐行循環記錄。用你現在的代碼,你只看第一行。

嘗試這樣:

Dim results as New List(Of String) 

While Not rs.EOF 
    results.Add(rs.Fields("AddMailCRM").Value) 
    rs.MoveNext() 
End While 

results = results.Distinct().ToList 

結果變量將是唯一的值

+0

我實際上使用了語法Y = rs.GetString來獲取記錄集的所有電子郵件地址。我現在的問題是,一些電子郵件地址出現兩倍。我怎麼能刪除雙打? – Etienne

+0

我已經編輯了答案將它們添加到列表(串)導致唯一值的列表,並在其上運行一個.Distinct()結束 – Kevin

+0

無法使其與在工作,但我用了你在我的select語句中使用DISTINCT的想法,並且它與rs.GetString一起工作。乾杯! – Etienne

1

解決的列表。

Dim StrDestinataire As String 
Select Case Strtable 
    Case "Flux", "GAFIJOUR" 
Dim cn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim Y As String 
Dim sSql As String 

Set cn = CurrentProject.Connection 


sSql = "Select DISTINCT AddMailCRM from Desks Inner Join Flux on Desks.CODECRM = Flux.CRM WHERE Flux.CODEBLOCAGE = '101'" 

Set rs = cn.Execute(sSql) 

If Not rs.BOF And Not rs.EOF Then 
    Y = rs.GetString 
End If 


StrDestinataire = Y 

cn.Close 
+0

歡迎來到堆棧溢出!請不要添加[相同的回答多個問題(http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-ad??da-duplicate-answer-to-several-questions )。一旦你獲得了足夠的聲望,請回答最好的一個,並將其餘標記爲重複。如果它不是重複的,請調整問題的帖子 –