Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于按班级汇总发言内容

chinasa  发表于:2013-08-08 15:20:46  
复制

表1
ID 姓名 班级 发言
4 张三 1班 好好学习
5 李四 1班 天天向上
6 王二 2班 认真学习
7 赵五 1班 快乐学习

 

我需要的结果是:

班级      发言

1班      好好学习 天天向上 快乐学习

2班      认真学习

 

说明:以班级来汇总发言内容,其中发言内容的顺序按照ID的顺序组合起来。

 

 

 

附件

 

 

Top
煮江品茶 发表于:2013-08-08 15:48:14

 

Public Function GetTextList(ByVal str As String) As String
    '功能:返回列的合并文本
    '示例:select DISTINCT 班级,GetTextList([班级]) as 班级发言 from 表1
    Dim rs As New adodb.Recordset
    Dim ssql As String
    Dim i As leng
    Dim s As String

    ssql = "select * from 表1 where 班级='" & str & "'"
    rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For i = 1 To rs.RecordCount
        s = s & rs!姓名.Value & ":" & rs!发言.Value & " "
        rs.MoveNext
    Next

    rs.Close: Set rs = Nothing

    GetTextList = s

End Function



chinasa 发表于:2013-08-08 15:54:55
我试下看看,先谢啦

chinasa 发表于:2013-08-08 16:02:48
请问为什么会提示:“表达式中 GetTextList函数未定义”

chinasa 发表于:2013-08-08 16:10:00

我以前有一段类似的代码,但尝试改下几个字段或者复制到另一个数据库,但总是提示表达式XXXX函数未定义

 

Function GetCNTR(Company As String)
    Dim rs As New adodb.Recordset
    With rs
        .Open "Select * From 名单 where BL_NO='" & Company & "'", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
        Do While Not .EOF
            If Nz(GetCNTR) = "" Then
                GetCNTR = !CONTAINER_NO
            Else
                GetCNTR = GetCNTR & "," & !CONTAINER_NO
            End If
            .MoveNext
        Loop
    End With

End Function

 



chinasa 发表于:2013-08-08 16:21:06
还有,我原先的这段代码效率很低,数据如果比较多的话,需要好几分钟才能出结果

煮江品茶 发表于:2013-08-08 19:47:25
放在标准模块中

chinasa 发表于:2013-08-09 10:14:32

 

请帮助指点一下(关于类方面的知识我几乎为0)。感谢ing....

1.    为什么会提示 Dim rs As New adodb.Recordset 未定义。(我把代码复制到另一个库,不会提示这个错误)

2.   运行“TS_Y 查询1”会出错,如下图 

附件

 



chinasa 发表于:2013-08-11 16:14:50

请帮帮我吧。



cspa 发表于:2013-08-11 20:26:53

请把实例转成2003版 .mdb格式并传上来。



chinasa 发表于:2013-08-12 08:20:48

2003

 

感谢ing....



chinasa 发表于:2013-08-12 09:15:26
请问下,Dim s As String,当S字符长度超过文本串的长度怎么办?

cspa 发表于:2013-08-12 12:05:45
抱歉,没看懂你的实例,你这TS_Y表中哪个字段相当于“ID”,哪个字段相当于“姓名”,哪个字段相当于“班级”,哪个字段相当于“发言”呢?换句话说,你是想根据哪个字段的内容,汇总哪个字段的内容呢?唉,我都绕糊涂了。

chinasa 发表于:2013-08-12 12:09:13

cspa,您好!

是按照BL_NO字段汇总CARGO_DESCRIPTION_FIELD的内容。

ID我这里没加,请假设VESSEL字段为ID.

谢谢。



cspa 发表于:2013-08-12 13:07:59

还是不太明白,在你的表中BL_NO字段的值,与CARGO_DESCRIPTION_FIELD字段的值是对应的,以BL_NO字段的值“NGBHAM153982”为例,其对应值是“WOMEN'S BOOTS”。见下表:

你是要把这8个“WOMEN'S BOOTS”汇成一个字符串?



cspa 发表于:2013-08-12 13:23:42
是你要的结果吗:点击下载此附件

chinasa 发表于:2013-08-12 13:49:05

是的,我需要8个重复的内容。(这点我知道有点难以置信)

 

附件的例子好像没有把相同BL NO的内容累加起来。

 

另外需要注意,当字符数有几百个甚至更多怎么办?



cspa 发表于:2013-08-12 16:06:29

看看是否你想要的:点击下载此附件

1、我在TS_Y表中加了一列,字段名是new,因为要有一个字段存储汇总的结果。在此回答你的问题“当字符数有几百个甚至更多怎么办?”,把此字段设为“备注”型容量应当是够的;

2、我在例子里加了两个宏,一个是“汇总”,一个是“清除汇总”。功能分别是按你的要求汇总数据并显示,和清除汇总并显示。你双击运行可观察结果;

3、你在字段的内容中使用了许多“'”或“\”等字符,建议你最好用其它字符替代,否则在用数据库处理这些数据时会很麻烦。



cspa 发表于:2013-08-12 16:17:07

再给你一个更接近你要求的,运行查询1就行。点击下载此附件



chinasa 发表于:2013-08-12 16:18:10

非常棒!!!!

万分感谢!



总记录:19篇  页次:1/1 9 1 :