Nak*_*nch 8 ms-access coalesce ms-access-2007 access-vba
我正在寻找与SQL Server的COALESCE功能等效的Access 2007.
在SQL Server中,您可以执行以下操作:
人
John
Steve
Richard
Run Code Online (Sandbox Code Playgroud)
SQL
DECLARE @PersonList nvarchar(1024)
SELECT @PersonList = COALESCE(@PersonList + ',','') + Person
FROM PersonTable
PRINT @PersonList
Run Code Online (Sandbox Code Playgroud)
产生:约翰,史蒂夫,理查德
我想在Access 2007中做同样的事情.
有谁知道如何在Access 2007中组合这样的行?
Fio*_*ala 14
这是一个用户定义函数(UDF)示例和可能的用法.
功能:
Function Coalsce(strSQL As String, strDelim, ParamArray NameList() As Variant)
Dim db As Database
Dim rs As DAO.Recordset
Dim strList As String
Set db = CurrentDb
If strSQL <> "" Then
Set rs = db.OpenRecordset(strSQL)
Do While Not rs.EOF
strList = strList & strDelim & rs.Fields(0)
rs.MoveNext
Loop
strList = Mid(strList, Len(strDelim))
Else
strList = Join(NameList, strDelim)
End If
Coalsce = strList
End Function
Run Code Online (Sandbox Code Playgroud)
用法:
SELECT documents.MembersOnly,
Coalsce("SELECT FName From Persons WHERE Member=True",":") AS Who,
Coalsce("",":","Mary","Joe","Pat?") AS Others
FROM documents;
Run Code Online (Sandbox Code Playgroud)
一个ADO版本,受到onedaywhen评论的启发
Function ConcatADO(strSQL As String, strColDelim, strRowDelim, ParamArray NameList() As Variant)
Dim rs As New ADODB.Recordset
Dim strList As String
On Error GoTo Proc_Err
If strSQL <> "" Then
rs.Open strSQL, CurrentProject.Connection
strList = rs.GetString(, , strColDelim, strRowDelim)
strList = Mid(strList, 1, Len(strList) - Len(strRowDelim))
Else
strList = Join(NameList, strColDelim)
End If
ConcatADO = strList
Exit Function
Proc_Err:
ConcatADO = "***" & UCase(Err.Description)
End Function
Run Code Online (Sandbox Code Playgroud)
来自:http://wiki.lessthandot.com/index.php/Concatenate_a_List_into_a_Single_Field_%28Column%29
| 归档时间: |
|
| 查看次数: |
13348 次 |
| 最近记录: |