日期:2014-05-20  浏览次数:20400 次

送分及在线等待!!此问题折磨我一上午了,下午还是没什么头绪,上来问问!!!
问题描述:
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