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
欧阳南 计算机,农牧,音乐
朴正南 韩语,汉语
张乐 语文,数学,英语,历史
----------------------------------------------------------
发表评论: