送分及在线等待!!此问题折磨我一上午了,下午还是没什么头绪,上来问问!!!
问题描述:
DataSet里面有一个表,现在把部分的表结构写出来。
---------------------------------
FieldName ... ... ClassName
11 a
12 a
13
14 b
15 a
16
17 b
---------------------------------
ClassName即为前面FieldName的分类,ClassName可能为空。FieldName存储了好多报表的列名。那么上面的结构体现在表单上是这样的:
表头结构:
----------------------------
a | b | | |
-----------|-------| 13 | 16|
11 | 12| 15| 14|17 | | |
----------------------------
现在的问题在于,在不知道ClassName的值的前提下,如何在dataset表中找到ClassName相同的 行 的数目? 以及该ClassName的值?
请大家帮我想想办法啊?
------解决方案--------------------哦.这个啊。嵌套个子查询.用SUM 求和 做个视图就行了
<td rowspan= " <%=sqlrs( "total ")%> ">
------解决方案--------------------这个最笨的方法,写个循环遍历一下,再创建一个数组记录一下相应的值,不就出来了
------解决方案--------------------出现什么问题又不说?是不是排版乱了?
------解决方案--------------------最笨的方法,用两个不同的的数组
ArrayList altOne=new ArrayList();//用于存FieldName
ArrayList altTwo=new ArrayList();//用于存altOne数组
然后遍历altTwo数组,把它里面的数组拿出来再遍历,要数量可以通过altOne.Count得到
如果你说不知道值的话,在存FieldName时,在前面加上相应的值.
如:altOne.add(thestring+ds.Tables[m].Rows[m][ "FieldName "].ToString());
------解决方案--------------------如果ClassName的长度不定的话,可以用一些比较特殊的字符(#,$,&等)隔开
然后用split方法把他们拆开来
------解决方案--------------------更改如:altOne.add(thestring+ds.Tables[0].Rows[m][ "FieldName "].ToString());
thestring为你此次循环的ClassName
------解决方案--------------------我写给你参考==
不过这种方法,数据量大的话,很耗内存
希望有高人给出更好的方法
------解决方案--------------------SELECT ClassName,
COUNT(*) AS ClassCount
FROM TableName
GROUP BY ClassName