许多海报要求显示如何从(可能)分组在一起的多个记录中生成项目清单。
以以下数据为例(从名为[tblForum]的表中):
Zone Forum
Community Introductions
Community Community Cafe
Community Software Development
Community Jobs / Contract Work
Community Experts Panel
Programming C++ / C
Programming Java
Programming .NET
Programming Visual Basic
Programming Python
Web Development PHP
Web Development Ruby / Rails
Web Development Perl
Web Development ASP
Web Development ColdFusion
Web Development Javascript / Ajax
Web Development Flash
Web Development XML
Web Development WAP / WML
Web Development HTML / CSS
Database Help MySQL
Database Help Oracle
Database Help SQL Server
Database Help PostgreSQL
Database Help Access
Database Help DB2
Sys Admin & OS Apache
Sys Admin & OS IIS
Sys Admin & OS Networking
Sys Admin & OS Linux / Unix / BSD
Sys Admin & OS Windows
如果您希望将其分组到列表中(如下所示),请继续阅读。
Zone Forums
Community Introductions, Community Cafe, Software Development, Jobs / Contract Work, Experts Panel
Programming C++ / C, Java, .NET, Visual Basic, Python
Web Development PHP, Ruby / Rails, Perl, ASP, ColdFusion, Javascript / Ajax, Flash, XML, WAP / WML, HTML / CSS
Database Help MySQL, Oracle, SQL Server, PostgreSQL, Access, DB2
Sys Admin & OS Apache, IIS, Networking, Linux / Unix / BSD, Windows
首先,在标准模块中创建一个函数,类似于所附的示例代码:
'Concat Returns lists of items which are within a grouped field
Public Function Concat(strGroup As String, _
strItem As String) As String
Static strLastGroup As String
Static strItems As String
If strGroup = strLastGroup Then
strItems = strItems & ", " & strItem
Else
strLastGroup = strGroup
strItems = strItem
End If
Concat = strItems
End Function
用于调用此函数的SQL形式为:
SELECT [Zone],
Max(Concat([Zone], [Forum])) AS [Forums]
FROM [tblForum]
GROUP BY [Zone]
(删除重复项)的另一种形式是:
'Concat Returns lists of items which are within a grouped field
Public Function Concat(strGroup As String, _
strItem As String) As String
Static strLastGroup As String
Static strItems As String
If strGroup = strLastGroup Then
If InStr(", " & strItems & ", ", ", " & strItem & ", ") = 0 Then _
strItems = strItems & ", " & strItem
Else
strLastGroup = strGroup
strItems = strItem
End If
Concat = strItems
End Function
From: https://bytes.com/topic/access/insights/640105-producing-list-multiple-records