ACCESS中自定义合并列字符串的函数
成功志
ACCESS中自定义合并列字符串的函数
2012-11-7 ok12
定义函数:

Public Function GroupConcat(sColumn As String, sTable As String, Optional sCriteria As String, Optional sDelimiter As String = ",")

    On Error GoTo ErrHandler

    Dim rs As New ADODB.Recordset

    Dim sSQL As String

    Dim sResult As String

    sResult = ""

    sSQL = "select " & sColumn & " from " & sTable

    If sCriteria <> "" Then

        sSQL = sSQL & " where " & sCriteria

    End If

    rs.Open sSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly

    Do While Not rs.EOF

        If sResult <> "" Then

            sResult = sResult & sDelimiter

        End If

        sResult = sResult & rs.Fields(0).Value

        rs.MoveNext

    Loop

    rs.Close

    Set rs = Nothing

    GroupConcat = sResult

    Exit Function

ErrHandler:

    If rs.State <> adStateClosed Then

        rs.Close

    End If

    Set rs = Nothing

    GroupConcat = Err.Number & " : " & Err.Description

    

    

End Function

---------------------------------------------------------------------------------------

定义表T_Person_Course并插入数据:

编号 Name Course

1 张乐 语文

2 张乐 数学

3 张乐 英语

4 张乐 历史

5 朴正南 韩语

6 朴正南 汉语

7 欧阳南 计算机

8 欧阳南 农牧

9 欧阳南 音乐

-------------------------------------------------------------

查看每个人的主修科目:

SELECT T_Person_Course.Name, GroupConcat('Course','T_Person_Course','Name=' & "'" & Name & "'") AS Courses

FROM T_Person_Course

GROUP BY name;

--------------------------------------------------------------

执行结果:

Name Courses

欧阳南 计算机,农牧,音乐

朴正南 韩语,汉语

张乐         语文,数学,英语,历史

----------------------------------------------------------
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容