Access中查询某个分组中多行字段值的拼接字串的方法

2016-02-19 13:29 209 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的Access中查询某个分组中多行字段值的拼接字串的方法,希望大家看完后能赶快学习起来。

【 tulaoshi.com - 编程语言 】

        access的SQL语法中没有自定义函数,也不能象SQL Server中一样用变量、游标、子查询等方法来灵活处理查询语句。
       
        但是,在Access环境中,透过模块中的过程,可利用功能强大的VB语言,生成复杂需求的查询语句。
     
       下面是本人今天在Access版块中的一个回复,以此例子,简单说明Access依托VB所蕴含的强大功能。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

        网友提问:      
--------------------------------------------------------------------------------
       我在ACCESS里面的表如下:
       comname      name     sex
       1公司        小王 男  
       1公司        小李 女  
       2公司        小张 男  

       我想将同公司的内容合在一起如:
comname      name         sex   
1公司       小王,小李  男,女  
2公司      小张     男    

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

请问我在access里面该如可操作?请问有什么好的方法去处理??
--------------------------------------------------------------------------------

解答:
----------------------------------------------------------------------------------
在 access的模块中建立一个自定义函数:

public Function CombStr(TableName As String, FieldName As String, GroupField As String, GroupValue As String) As String

    Dim ResultStr As String
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset(" select " & FieldName & " from " & TableName & " where " & GroupField & "='" & GroupValue & "'")
    If rs.RecordCount 0 Then
    Do While Not rs.EOF
        ResultStr = ResultStr & "," & rs.Fields(0).Value
        rs.MoveNext
    Loop
    End If
    If ResultStr "" Then ResultStr = Mid(ResultStr, 2)
    CombStr = ResultStr
   
End Function

建立查询:

select T.comname, combstr("T","Name","comname",t.comname) AS CombName, combstr("T","ses","comname",t.comname) AS CombSex
FROM T
GROUP BY T.comname

----------------------------------------------------------------------------------------------------

来源:https://www.tulaoshi.com/n/20160219/1604431.html

延伸阅读
今天碰到了一个怪问题情况如下 在Access中新建一个数据表,字段有 ID FileName FileDir Modified Created Size Memo 用Asp.net中的OleDb去Insert数据,结果报错!说“不能向数据表增加数据” 调试了1个多小时,发现了问题所在: 如果在Access里面用Size作为数据表字段,那么OleDb去Insert数据就会报错,如果把Size字段改成...
在Access中创建表一般是用ADO来执行SQL语句来创建表。Access中的字段类型在SQL语句中是什么呢?在MSDN中有篇文章介绍得很详细: http://msdn.microsoft.com/office/understanding/access/codesamples/default.aspx?pull=/library/en-us/dnacc2k/html/acintsql.asp 下面是我写的一个SQL语句,在Delphi中用ADOConnection对象执...
专家解答 通过查询任何数据库中的三个系统表,你可以获得每个表的每一个字段的默认值。下面是这个核心查询。它返回分配给当前数据库中每个用户表的默认值。这个查询在SQL 2000和SQL 2005中都是兼容的。 Quote:  代码如下: SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value" FROM ...
4.在查询中执行计算的注意事项 如果要在字段中显示计算的结果,可以使用 Microsoft Access 所提供的预定义计算或自定义的计算。使用所谓“总计”的预定义计算,可计算出记录组或全部 记录的下列量值:总和(Sum)、平均值(Avg)、数量(Count)、最小值(Min)、最大值(Max)、 标准偏差(StDev)或方差(Var)。可以对每个字段选择要进行的总计计...
开发中有时需要在流中查找某个字串,这些字串有可能是ASCII表后半部分或混杂.但是网上提供的例程效果不佳而且代码冗长. 后来自己抽个时间写了一个,代码极少,效率很高.仅供各位参考: function ScanStream(T:Tstream;S:String):integer; var i,j:integer;     p:Pchar; begin   getMem(p,...

经验教程

543

收藏

34
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部