|
使用这个函数,速度可以提高大概三分之一。
合并记录为字符串的一个函数
代码如下:- Sub CMDPRINT_Click()
- CurrentDb.Execute "delete * from 表_调拨明细"
- t = Timer
- CurrentDb.Execute "INSERT INTO 表_调拨明细( 流水号, 调拨明细 ) SELECT 表_指令调拨表.流水号, " & _
- "DMerge('调出单号 & 半成品数量 & 备注','表_指令调拨表','流水号=' & [流水号] & '',',') " & _
- " FROM 表_指令调拨表 GROUP BY 流水号 ORDER BY 流水号"
- MsgBox "秏时: " & Timer - t & " 秒"
- End Sub
- Public Function DMerge(Exps As String, Domain As String, _
- Optional Criteria As String, Optional Separator As String = ";") As String
-
- '函数功能: 合并指定记录集指定字段值为一个字符串
- '参数说明:
- ' expr : 要合并的字段
- ' domain : 来源表或查询
- ' criteria : 可选,限制记录的条件表达式
- ' Separator : 可选,合并记录的分隔符,默认为分号(;)
- '
- '调用示例: DMerge("姓名","人员表","性别='" & [性别] & "'",Chr(13) & Chr(10))
- ' 以上示例在查询中,使用了换行分隔符,返回换行显示的姓名
- '作 者: t小雨
- '创建时间: 2009/11/25
- On Error Resume Next
- Dim rst As New ADODB.Recordset
- Dim strSql As String
-
- strSql = "Select " & Exps & " From " & Domain
- If Criteria <> "" Then strSql = strSql & " Where " & Criteria
- rst.Open strSql, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText
-
- If Not rst.EOF Then DMerge = rst.GetString(adClipString, , , Separator)
- rst.Close
- Set rst = Nothing
- End Function
复制代码 |
|