Office中国论坛/Access中国论坛

标题: 合并记录为字符串的一个函数 [打印本页]

作者: t小宝    时间: 2009-11-25 12:07
标题: 合并记录为字符串的一个函数
一个不用循环实现的合并记录为字符串的函数,可在查询中调用

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

作者: 123shusheng    时间: 2009-11-25 13:50
给个例子,让小虾学习学习
作者: yanwei82123300    时间: 2009-11-25 15:29
给个例子,让小虾学习学习
作者: chaojianan    时间: 2009-11-25 20:46
谢谢版主分享。
作者: ui    时间: 2009-11-25 22:15
不错,好示例
作者: asklove    时间: 2009-11-26 10:59
学习
作者: aslxt    时间: 2009-11-26 17:06
学习学习
作者: t小宝    时间: 2009-11-27 12:09
示例
作者: goto2008    时间: 2009-12-4 16:19
学习
作者: hr0713    时间: 2010-3-2 15:30
不错,学习了
作者: wang1950317    时间: 2010-3-3 09:31
很不错啦!变通一下可以用到许多地方。谢谢LZ!
作者: michael100    时间: 2010-4-13 14:05
学习中
作者: bestluck    时间: 2010-5-3 21:33
谢谢分享,学习ing
作者: michael100    时间: 2010-5-4 08:44
学习中,谢谢分享
作者: xie62    时间: 2010-5-14 13:52
学习了
作者: jiayinlb    时间: 2010-7-11 19:54
正是我想要的
   
作者: amocvv    时间: 2010-8-12 02:11
有用,试了。
作者: zhao__feng    时间: 2010-8-12 21:15
谢谢分享!
作者: lkkl66    时间: 2010-8-14 09:04
好资料!收藏!谢谢!
作者: 轻风    时间: 2012-7-11 09:46
t小宝 发表于 2009-11-27 12:09
示例

版主好示例。
这里请教一下,假如我需要输出为:‘张颖’;‘李芳’;‘刘英玫’;‘张雪眉’;这种格式的字符串,该怎么改呢?
作者: t小宝    时间: 2012-7-11 12:40
轻风 发表于 2012-7-11 09:46
版主好示例。
这里请教一下,假如我需要输出为:‘张颖’;‘李芳’;‘刘英玫’;‘张雪眉’;这种格式的字 ...

DMerge("""'"" & [姓氏] & [名字] & ""'""","雇员","尊称='" & [尊称] & "'")
作者: t小宝    时间: 2012-7-11 13:06
轻风 发表于 2012-7-11 09:46
版主好示例。
这里请教一下,假如我需要输出为:‘张颖’;‘李芳’;‘刘英玫’;‘张雪眉’;这种格式的字 ...

DMerge("""'"" & [姓氏] & [名字] & ""'""","雇员","尊称='" & [尊称] & "'")
作者: 轻风    时间: 2012-7-11 13:16
t小宝 发表于 2012-7-11 13:06
DMerge("""'"" & [姓氏] & [名字] & ""'""","雇员","尊称='" & [尊称] & "'")

原来这样,我也试过加了3、4个引号,没想到要加这么多,呵呵。
作者: 轻风    时间: 2012-7-11 14:10
本帖最后由 轻风 于 2012-7-11 14:12 编辑
t小宝 发表于 2012-7-11 13:06
DMerge("""'"" & [姓氏] & [名字] & ""'""","雇员","尊称='" & [尊称] & "'")


t版再帮个忙,似乎条件中用Like不行?如:BMBH Like '1003*'不行,但如写为BMBH Like '1003'则可以,但这样Like就没意义了。
作者: ynjxw    时间: 2012-7-11 14:29
轻风 发表于 2012-7-11 14:10
t版再帮个忙,似乎条件中用Like不行?如:BMBH Like '1003*'不行,但如写为BMBH Like '1003'则可以,但 ...

谢谢小宝,我用的时候也发现这一问题,另外数据量大的时候速度也些慢。
作者: t小宝    时间: 2012-7-11 14:52
轻风 发表于 2012-7-11 14:10
t版再帮个忙,似乎条件中用Like不行?如:BMBH Like '1003*'不行,但如写为BMBH Like '1003'则可以,但 ...

通配符用 % ,因为该函数使用ADO
作者: 轻风    时间: 2012-7-11 16:35
t小宝 发表于 2012-7-11 14:52
通配符用 % ,因为该函数使用ADO

嗯,刚才已经想到了。谢谢!
作者: olderdream2007@    时间: 2013-4-1 21:55
rst.GetString(adClipString, , , Separator)


getstring咋用的,请高人解释下 谢谢
作者: ljp518    时间: 2013-4-7 14:09
{:soso_e163:}
作者: ardu95    时间: 2016-10-11 06:14
新生学习一下




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3