日期:2014-05-17  浏览次数:21039 次

如何对查询到的数据库中的记录,进行叠加并按条件显示
情况是这样的,要对数据库中的记录进行叠加,不过要判断 如果当前记录的rs("name")的值和下一条记录的rs("name")不相等时,输出当前的叠加记录,rs("name") 是个字符串,表示区域,如广州,北京等,要显示的效果如下
姓名 区域 已处理完成的问题, 正在处理中的问题, 待反馈的问题
xx 广州 10 10 10
xx 广州 10 10 10
xx 广州 10 10 10
小计 按区域 30 30 30
xx 北京 20 20 20
xx 北京 20 20 20
xx 北京 20 20 20
小计 按区域 60 60 60


原来用的是一个do while 循环,循环输出
用这样的方式<td>response.write rs(字段名)</td>

然后我试着这样写
 index= rs("name")
 indexzs=indexzs+rs("zs")
indexywc=indexywc+rs("ywc")
indexdfk= indexdfk+rs("dfk")
indexclz=indexclz+rs("clz")
indexyuqi=indexyuqi+rs("yuqi")

<%
 
index= rs("name")
 
indexzs=indexzs+rs("zs")
indexywc=indexywc+rs("ywc")
indexdfk= indexdfk+rs("dfk")
indexclz=indexclz+rs("clz")
indexyuqi=indexyuqi+rs("yuqi")
if rs("name")<>index then '想判断当上一条记录和下一条记录不相等时,输出tr
 
 
 
 


%>
 
 

<tr onMouseOver="over()" onMouseOut="out()" onClick="change()">
<td align="center">
小计:
</td>
 
<td align="center">
按区域统计:
</td>
 
   
  <td width="6%" align="center">
<%= indexzs%>
</td>
  <td align="center"><%= indexywc%></td>
<td align="center">

</td>
   
  <td align="center">
  <%= indexdfk%> </td>
  <td align="center">
  <%= indexclz%> </td>
<td align="center">
  <%= indexyuqi%> </td>
 
  <tr/>
<% 
end if
 
 
%>
  <%
lngTotal=lngTotal+1
rs.movenext
loop
%>


可是这样显然不行,该怎么做呢,rs是个recordset,它的sql语句太复杂了,不知道该怎么操作








------解决方案--------------------
在输出tr后,rs.movenext 后边把已经累计的几个变量清下零

VBScript code

rs.movenext
index= rs("name")
indexzs=0
indexywc=0
indexdfk= 0
indexclz=0
indexyuqi=0
loop

------解决方案--------------------
sql 和 while循环都可以。
while循环做思路是这样的,在循环外面定义一个String,循环体内将数据库的名字和String比较,相同则做加法,不同则给输出的记录集赋值,同时给String赋新的值。

String name = "";
int win =0, doing = 0; undo = 0;
boolean first = true;
while (rs.next()) {
String dbname = rs.getString("name");
if (first || name.equals(dbname)) {
if (first) name = dbname; 
first = false;
win += rs.getInt("...");
doing += rs.getInt("...");
undo += rs.getInt("..."); 
各种赋值...
}
if (!name.equals(dbname)) {
name = dbname;
win = 0; doing = 0; undo = 0;
各种赋值...
}
}
------解决方案--------------------
如果记录集是楼主显示的这样按区域排过序的,
那楼主思路是正确的,就是注意一下边界条件:开始的时候初始