Access里自定义类似MySQL group_concat 的函数
2011-09-21 16:32
489 查看
MySQL里的group_concat很方便,MS-Access里没有。网上找到一个:http://access.mvps.org/access/modules/mdl0008.htm
Concatenate fields in same table Author(s) Dev Ashish (Q) I need to concatenate a field in the format "Value1; Value2; Value3" etc. for each unique value of another field in the same table. How can I do this? (A) Using the fConcatFld function, in the Northwind database, the following query should return a concatenated list of all CustomerIDs if you group by ContactTitle. SELECT ContactTitle, fConcatFld("Customers","ContactTitle","CustomerID","string",[ContactTitle]) AS Customers FROM Customers GROUP BY ContactTitle; '************ Code Start ********** 'This code was originally written by Dev Ashish 'It is not to be altered or distributed, 'except as part of an application. 'You are free to use it in any application, 'provided the copyright notice is left unchanged. ' 'Code Courtesy of 'Dev Ashish ' Function fConcatFld(stTable As String, _ stForFld As String, _ stFldToConcat As String, _ stForFldType As String, _ vForFldVal As Variant) _ As String 'Returns mutiple field values for each unique value 'of another field in a single table 'in a semi-colon separated format. ' 'Usage Examples: ' ?fConcatFld(("Customers","ContactTitle","CustomerID", _ ' "string","Owner") 'Where Customers = The parent Table ' ContactTitle = The field whose values to use for lookups ' CustomerID = Field name to concatenate ' string = DataType of ContactTitle field ' Owner = Value on which to return concatenated CustomerID ' Dim lodb As Database, lors As Recordset Dim lovConcat As Variant, loCriteria As String Dim loSQL As String Const cQ = """" On Error GoTo Err_fConcatFld lovConcat = Null Set lodb = CurrentDb loSQL = "SELECT [" & stFldToConcat & "] FROM [" loSQL = loSQL & stTable & "] WHERE " Select Case stForFldType Case "String": loSQL = loSQL & "[" & stForFld & "] =" & cQ & vForFldVal & cQ Case "Long", "Integer", "Double": 'AutoNumber is Type Long loSQL = loSQL & "[" & stForFld & "] = " & vForFldVal Case Else GoTo Err_fConcatFld End Select Set lors = lodb.OpenRecordset(loSQL, dbOpenSnapshot) 'Are we sure that duplicates exist in stFldToConcat With lors If .RecordCount <> 0 Then 'start concatenating records Do While Not .EOF lovConcat = lovConcat & lors(stFldToConcat) & "; " .MoveNext Loop Else GoTo Exit_fConcatFld End If End With 'That's it... you should have a concatenated string now 'Just Trim the trailing ; fConcatFld = Left(lovConcat, Len(lovConcat) - 2) Exit_fConcatFld: Set lors = Nothing: Set lodb = Nothing Exit Function Err_fConcatFld: MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description Resume Exit_fConcatFld End Function '************ Code End **********
相关文章推荐
- Access里自定义类似MySQL group_concat 的函数
- mysql 自定义函数declare group_concat()、find_in_set()
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- 实现类似mysql group_concat的功能
- MySQL中函数CONCAT及GROUP_CONCAT(aggregate)
- mysql 函数FIND_IN_SET、group_concat 、concat、cast的高级应用
- MySQL的行转列、列转行、连接字符串 concat、concat_ws、group_concat函数用法
- MySQL中group_concat函数深入理解
- 关于如何在vertica上使用MySQL的group_concat()函数
- MSSQL 通过FOR XML PATH 模仿MYSQL的 group_concat 函数,將纪录值合并成字符串
- mysql 合并列 函数 GROUP_CONCAT
- MySQL中concat函数,concat_ws函数,group_concat函数,repeat()函数
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- Mysql group_concat函数被截断的问题
- MySQL中group_concat()函数的排序方法
- mysql concat 、concat_ws group_concat函数用法
- MySQL的行转列、列转行、连接字符串 concat、concat_ws、group_concat函数用法
- MySQL中函数CONCAT及GROUP_CONCAT
- MySQL中函数CONCAT及GROUP_CONCAT
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法