

DCONCAT 函数的实现可以使用 DCONCAT 函数连接指定的一组记录(域)中的一组值的字符串。可以在 Visual Basic、宏、查询表达式或者计算控件中使用 DCONCAT 函数。(ADO/DAO不支持)。例如,可以在查询中使用 DCONCAT 函数。select customerID, DCONCAT('orderID','orders','customerID=' & customerID from customersDCONCAT(expr, domain, [criteria],[delimiter])DCONCAT 函数具有下列参数。参数 说明 expr 表达式,用于标识要计算其记录数的字段。它可以是标识表或查询中字段的字符串表达式,也可以是对该字段中的数据执行计算的表达式。在 expr 中,可以包含表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含一个函数,那么它可能是内置或用户定义的函数,但不是另一个域聚合函数或 SQL 聚合函数。 domain 字符串表达式,用于标识组成域的一组记录。它可以是表名称或不需要参数的查询的查询名称。 criteria 可选字符串表达式,用于限制对其执行 DCONCAT 函数的目标数据的范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,但它没有单词 WHERE。如果 criteria 被省略,那么 DCONCAT 函数将针对整个域计算 expr。任何包含在 criteria 中的字段必须也是 domain 中的字段;否则 DCONCAT 函数将返回 错误信息。 delimiter 可选字符串表达式,用于分隔各记录的字符串值。默认值为逗号"," 。函数实现'*******************************************************************************' DCONCAT(expr, domain, [criteria],[delimiter])'' Function: to concate the columns string like group_concat() in Access.' Parameter: ' expr : string, expression which can recognized by SQL.' domain : string, the row source, can be another query.' criteria : the ceritera which will be treated as the where clause.' delimiter : delimiter between the column value, default is ",".' ' Return: string, a String of concated columns, ' if err, return the err code + desc.'' history:' 2009-Feb-28 ACMAIN New Creation''*********************************************************************************Public Function DCONCAT(sExpr As String, sDomain 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 " & sExpr & " from (" & sDomain & ")" 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 DCONCAT = sResult Exit Function ErrHandler: If rs.State <> adStateClosed Then rs.Close End If Set rs = Nothing DCONCAT = Err.Number & " : " & Err.Description End Function