将部分重复的行合并到Access中的一行中

时间:2013-09-05 15:51:23

标签: ms-access ms-access-2010

我有一个select查询,它给出了部分重复的行,我希望将重复的行合并到一行,非重复值以逗号分隔。 查询的当前输出是:

    **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

有人可以帮我解决这个问题。 谢谢

1 个答案:

答案 0 :(得分:0)

要进入VBA,请按ALT + F11,这将打开编辑器。由于您没有开发表单,因此您只需创建一个模块即可。转到“插入”,然后选择“模块”,您会在顶部看到一个空白窗口,其中显示Option Compare Database

要启动模块,您需要创建一个子功能并在那里输入代码:

Public Sub CleverNameHere()

    'Code

End Sub

保存时,请不要将模块命名为CleverNameHere,因为如果您必须调用它,那么它将显示为ModuleNameHere.CleverNameHere,括号用于参数。< / p>

从那里你将只写一些调用你的表,创建一个记录集,并逐行记录并操纵它直到文件结束(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