加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

ms访问 – Microsoft Access在表中压缩多行

发布时间:2020-12-14 01:46:36 所属栏目:Windows 来源:网络整理
导读:我在MS Access 2007中有一个问题,我希望有人有答案.我有一个长而简单的表,其中包含客户名称和一周内交付的日期.我想通过将名称和所有日子列入一个新字段“ALLDays”,同时仍保留所有数据来总结此表. 源表看起来像这样: Name Day CustomerA Monday CustomerA
我在MS Access 2007中有一个问题,我希望有人有答案.我有一个长而简单的表,其中包含客户名称和一周内交付的日期.我想通过将名称和所有日子列入一个新字段“ALLDays”,同时仍保留所有数据来总结此表.

源表看起来像这样:

Name         Day  
CustomerA    Monday  
CustomerA    Thursday  
CustomerB    Tuesday  
CustomerB    Friday  
CustomerC    Wednesday  
CustomerC    Saturday

我想要一个返回结果的查询:

Name         ALLDays  
CustomerA    Monday,Thursday  
CustomerB    Tuesday,Friday  
CustomerC    Wednesday,Saturday

谢谢.

通常你必须编写一个函数,让你创建一个连接的列表.这是我使用的:
Public Function GetList(SQL As String _,Optional ColumnDelimeter As String = "," _,Optional RowDelimeter As String = vbCrLf) As String
'PURPOSE: to return a combined string from the passed query
'ARGS:
'   1. SQL is a valid Select statement
'   2. ColumnDelimiter is the character(s) that separate each column
'   3. RowDelimiter is the character(s) that separate each row
'RETURN VAL: Concatenated list
'DESIGN NOTES:
'EXAMPLE CALL: =GetList("Select Col1,Col2 From Table1 Where Table1.Key = " & OuterTable.Key)

Const PROCNAME = "GetList"
Const adClipString = 2
Dim oConn As ADODB.Connection
Dim oRS As ADODB.Recordset
Dim sResult As String

On Error GoTo ProcErr

Set oConn = CurrentProject.Connection
Set oRS = oConn.Execute(SQL)

sResult = oRS.GetString(adClipString,-1,ColumnDelimeter,RowDelimeter)

If Right(sResult,Len(RowDelimeter)) = RowDelimeter Then
    sResult = Mid$(sResult,1,Len(sResult) - Len(RowDelimeter))
End If

GetList = sResult
oRS.Close
oConn.Close

CleanUp:
    Set oRS = Nothing
    Set oConn = Nothing

Exit Function
ProcErr:
    ' insert error handler
    Resume CleanUp

End Function

Remou的版本具有添加的功能,您可以传递一个值数组,而不是SQL语句.

示例查询可能如下所示:

SELECT SourceTable.Name,GetList("Select Day From SourceTable As T1 Where T1.Name = """ & [SourceTable].[Name] & """","",",") AS Expr1
FROM SourceTable
GROUP BY SourceTable.Name;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读