Office中国论坛/Access中国论坛
标题:
如何在查询中实现多行结果的合并显示
[打印本页]
作者:
tanghuaiyi
时间:
2014-12-18 15:26
标题:
如何在查询中实现多行结果的合并显示
例如针对表1进行查询, 班级 姓名 成绩 需要查询得到表结构为 班级 成绩平均值 姓名列表
1 王二 87 1 88 王二、李三
1 李三 90 2 67 张一、王山
2 张一 75
2 王山 60
请教高手们,如何实现?
作者:
roych
时间:
2014-12-18 17:37
请搜索“来回折腾”,TodayNew的实例。
作者:
tanghuaiyi
时间:
2014-12-19 10:50
谢谢了,学习了,我想问一下有没有用查询方法实现这个功能,不用窗体的
作者:
roych
时间:
2014-12-19 10:58
tanghuaiyi 发表于 2014-12-19 10:50
谢谢了,学习了,我想问一下有没有用查询方法实现这个功能,不用窗体的
就算查询,也只是把按钮中的点击事件改为函数过程而已,跟直接使用窗体没什么区别。
作者:
风中漫步
时间:
2014-12-20 15:01
本帖最后由 风中漫步 于 2014-12-20 15:04 编辑
可能不行.你试试自定义函数吧
作者:
djt
时间:
2014-12-24 12:41
只能写个字符串累加函数来解决
Leijia:
Dim strRsFilter As String
Dim strLeijia As String
With frm.RecordsetClone
If .RecordCount < 1 Then GoTo exitFunction
.MoveFirst
Do Until .EOF
strLeijia = ""
strRsFilter = ""
For lngfield = 1 To UBound(arrField)
If arrField(lngfield, 3) = "chr" Then arrField(lngfield, 3) = "'"
strRsFilter = strRsFilter & arrField(lngfield, 5) & arrField(lngfield, 1) & arrField(lngfield, 2) & arrField(lngfield, 3) & .Fields(arrField(lngfield, 4)) & arrField(lngfield, 3)
Next
rs.Filter = strRsFilter
If rs.RecordCount >= 1 Then
Do Until rs.EOF
strLeijia = strLeijia & rs.Fields(arrField(0, 4)) & IIf(arrField(0, 5) = "vbcrlf", vbCrLf, arrField(0, 5))
rs.MoveNext
Loop
.Edit
.Fields(arrField(0, 1)) = strLeijia
.Update
End If
.MoveNext
Loop
frm.Form.Requery
End With
rs.Close
作者:
djt
时间:
2014-12-24 13:04
还有一种变通方法用一个transform变形查询,然后再正常查询
作者:
djt
时间:
2014-12-24 13:08
SchoolClass StudentName Fenshu
1 a1 1
2 a2 1
3 a3 1
4 a4 1
1 b1 2
2 b2 2
3 b3 2
4 b4 2
1 c1 3
2 c2 3
3 c3 3
1 d1 4
2 d2 4
3 f1 5
4 f2 6
然后做一个变形查询
TRANSFORM First(StudentName & ',') AS Expr1
SELECT fenshu.SchoolClass
FROM fenshu
GROUP BY fenshu.SchoolClass
PIVOT 'F' & Fenshu;
然后再从变形查询里把字段合并
select Schoolclass,f1&f2&f3&f4&f5&f6 from 变形查询
结果如下
Schoolclass Expr1001
1 a1,b1,c1,d1,
2 a2,b2,c2,d2,
3 a3,b3,c3,f1,
4 a4,b4,f2,
作者:
coolcoolbear
时间:
2015-1-1 17:02
谢谢,学习了。
作者:
liaccess
时间:
2015-10-1 15:26
看看
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3