Office中国论坛/Access中国论坛

标题: 如何实现查询中的字段合并 [打印本页]

作者: linjingdr    时间: 2009-4-14 23:44
标题: 如何实现查询中的字段合并
想通过查询或代码把表中相同类别的字段合并起来。
作者: asklove    时间: 2009-4-15 08:32
查询SQL怎么写我不太会
我是用函数,你看看是不是这样的效果
作者: shitou1ge    时间: 2009-4-15 08:47
学习啊
作者: linjingdr    时间: 2009-4-15 14:51
本帖最后由 linjingdr 于 2009-4-16 22:00 编辑

谢谢asklove 的帮助!非常好的解决方法!成功应用
作者: xhbqt    时间: 2009-5-7 01:56
非常好的解决方法!
作者: RickyZjw-3721    时间: 2009-5-11 21:59
不错,函数比写SQL语句更简洁、高效,学习了!
作者: 夕颜S    时间: 2009-6-22 21:59
期待
作者: lurong    时间: 2009-6-22 23:12
正需要,谢谢!
作者: 红尘如烟    时间: 2009-6-23 00:34
本帖最后由 红尘如烟 于 2009-6-23 00:41 编辑

写了一个通用函数:

  1. Public Function JoinField(TableName As String, FieldName As String, WhereCondition As String, _
  2. Optional Delimiter As String = " ") As String
  3. On Error GoTo ErrorHandler

  4. 'TableName 必需,表名
  5. 'FieldName 必需,要合并记录的字段名
  6. 'WhereCondition 必需,分组条件表达式
  7. 'Delimiter 可选,分隔符,默认为空格符

  8.     Dim rst As New ADODB.Recordset   
  9.     Dim strSQL As String

  10.     strSQL = " SELECT   " & FieldName & _
  11.              " FROM     " & TableName & _
  12.              " WHERE    " & WhereCondition & _
  13.              " ORDER BY " & FieldName
  14.     rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  15.     Do Until rst.EOF
  16.         If JoinField = "" Then
  17.              JoinField = rst(FieldName)
  18.         Else
  19.             JoinField = JoinField & Delimiter & rst(FieldName)
  20.         End If
  21.         rst.MoveNext
  22.     Loop

  23.     rst.Close
  24.     Set rst = Nothing

  25. ExitFunction:
  26.     Exit Function

  27. ErrorHandler:
  28.     MsgBox Err.Number & Err.Description
  29.     Resume ExitFunction
  30. End Function
复制代码
在查询中的运用实例:
  1. SELECT DISTINCT姓名,处方名, JoinField("表1","药物","[姓名]='" & [姓名] & "' AND [处方名]='" & [处方名] & "'",",") AS 药物
  2. FROM 表1
  3. ORDER BY 姓名,.处方名;
复制代码

作者: 风啸啸    时间: 2009-8-5 19:45
学习
作者: 老人与海    时间: 2009-8-5 19:55
厉害啊!
作者: wzh    时间: 2009-8-6 14:05
很实用的例子,非常感谢!!
作者: wzh    时间: 2009-8-6 14:05
很实用的例子,非常感谢!!
作者: alink    时间: 2009-8-8 23:00
真是遇到高高手了!
作者: iamee    时间: 2009-8-18 13:32
很好的解决方法
作者: tomtomtlv    时间: 2009-8-23 13:50
如果数据多了就很慢的,半天都不会动有更多的方法吗
作者: hr0713    时间: 2010-3-2 16:04
不错,学习
作者: hr0713    时间: 2010-3-3 07:55
不错,学习
作者: michael100    时间: 2010-4-13 14:06
学习中
作者: michael100    时间: 2010-4-13 14:07
不过如果字段是数字类型,怎样合并,
作者: dbbygzy    时间: 2010-4-13 16:13
学习
作者: 青胜于蓝    时间: 2011-10-31 10:32
学习了
作者: pq318    时间: 2011-10-31 12:11
呵呵高手还是多啊
作者: redtxd    时间: 2016-8-11 15:14
谢谢楼主分享,学习中




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