2013-09-05 163 views
-1

我有一個選擇查詢,它給了那些部分重複的行,我想重複的行合併成一排與非重複值是逗號分隔。 當前查詢的輸出是:合併部分重複的行成一排在Access

**Contacts   Department     Type**  
    Elena Stone   Biology      Impact 
    Elena Stone   Biochemistry     Impact 
    Elena Stone   Biotechnology     Other 

我的期望輸出應該是:

**Contacts   Department         Type** 
    Elena Stone   Biology,Biochemistry,Biotechnology  Impact,other 

能有人幫我如何得到這個。 謝謝

+0

你嘗試過什麼了嗎?如果'Contacts'已經存在,你應該可以使用一些VBA創建一個新表並連接'Department'和'Type',否則可以添加一條新記錄。我確信也有SQL來做到這一點,但我並不擅長使用SQL。 – Grant

+0

有沒有辦法在select查詢本身中添加這個條件,如果不是,我該如何去編寫VBA?實際上,我正在使用此查詢從兩個表中收集數據以生成報告。 – Ksagar

+0

對不起,但我對查詢或SQL不太好......但我在下面添加了一個適用於我的答案。它只是不檢查重複。的[合併行/串接行] – Grant

回答

0

要進入VBA您按ALT + F11,這將調出編輯器。由於你沒有開發一個表單,你可以創建一個模塊。去插入,然後選擇模塊,你會看到一個空白窗口頂部Option Compare Database

要開始你的模塊創建一個子功能,並把你的代碼有:

Public Sub CleverNameHere() 

    'Code 

End Sub 

當您保存這一點,不要將該模塊命名爲相同的名稱CleverNameHere,因爲如果你曾經有調用它然後它將看起來像這樣ModuleNameHere.CleverNameHere和括號是爲參數。

從那裏,你一定會寫的東西調用你的表,創建記錄,並通過線需要記錄行和操作它,直到文件(EOF)結束。也許是這樣的:

Public Sub CompareDuplicates() 

Dim myR As Recordset 
Dim myR2 As Recordset 

Set myR = CurrentDb.OpenRecordset("Original_Table", dbOpenDynaset) 
Set myR2 = CurrentDb.OpenRecordset("Duplicate_Table", dbOpenDynaset) 

Do Until myR.EOF = True 
    myR2.FindFirst ("Contacts = '" & myR![Contacts] & "'") 
    If myR2.NoMatch = True Then 
     myR2.AddNew 
     myR2![Contacts] = myR![Contacts] 
     myR2![Department] = myR![Department] 
     myR2![Type] = myR![Type] 
     myR2.Update 
    Else 
     myR2.Edit 
     myR2![Department] = myR2![Department] & ", " & myR![Department] 
     myR2![Type] = myR2![Type] & ", " & myR![Type] 
     myR2.Update 
    End If 
    myR.MoveNext 

Loop 

Set myR = Nothing 

End Sub