怎样在access中实现分组(groupby)后⽂本合并
第⼀步、在“创建”——“宏与代码”——“模块”中定义函数:
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 欧阳南⾳乐
第三步:新建表“1”,字段Course数据格式设置成“备注”,防⽌字符数超过8000被⾃动截断。
groupby分组第四步:执⾏追加查询:
SELECT T_Person_Course.Name, GroupConcat(‘Course’,‘T_Person_Course’,‘Name=’ & “’” & Name & “’”) AS Courses INTO 1
FROM T_Person_Course
GROUP BY T_Person_Course.Name;
执⾏后结果:
Name Courses
欧阳南 计算机,农牧,⾳乐
朴正南 韩语,汉语
张乐 语⽂,数学,英语,历史
第五步:遇到access编译错误:⽤户定义类型未定义时,进⼊窗体设计状态→代码区(或者按Alt+F11键进⼊)→⼯具→引⽤→勾选Microsoft DAO 3.6 Objsct Library即可
如下图:
同理如果出现ADODB未定义,如下图:
也可按照上述⽅法,从引⽤⾥⾯到并勾选ADO引⽤即可.(请优先勾选如下图2.1版本的选项,不⾏的情况下在勾选2.8版本)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论