是呀,很简单的嘛比如说有两列需要计算的,列名分别为a,b
int aSum = 0;
int bSum = 0;
for(int i=0;i<DataSet.Table[0].Rows.Count;i++)
{
    aSum += Int32.Parse(DataSet.Table[0].Rows[i]["a"].ToString());
    bSum += Int32.Parse(DataSet.Table[0].Rows[i]["b"].ToString());
}
循环结束后,aSum,bSum就分别是你要的列a和列b的的总和
如果你要用datagrid显示这些,就可以这样作():
for(int j=0;j<DataSet.Table[0].Rows.Count+1;j++)
{
    if(j == 0)
    {
        datagrid.Items[j].Cells[a所在列的列数].Text = aSum.ToString();
        datagrid.Items[j].Cells[b所在列的列数].Text = bSum.ToString();    }
    else
    {
        datagrid.Items[j].Cells[a所在列的列数].Text = DataSet.Table[0].Rows[j-1]["a"].ToString();
        datagrid.Items[j].Cells[b所在列的列数].Text = DataSet.Table[0].Rows[j-1]["b"].ToString();
    }
}
这样基本上就是按照你说的方式显示在datagrid上了。

解决方案 »

  1.   

    难的是如何一执行程序就把CPU给烧了!!!
      

  2.   

    我不是要显示在datagrid上,我是要重新生成一个新表,包括汇总的那条记录,然后一起送给水晶报表的,另外
    int aSum = 0;
    int bSum = 0;
    这种记录方法也不是我需要的,因为表的字段不同,我是想用一个程序,完成多个动态表的汇总工作
    但实际上我每次只生成一个表,包括相继记录(多条),汇总记录(一条,是有前面的多条记录按列汇总生成),但我想用一个程序写出不同表结构的汇总操作,不知道大家明白了没有这个程序不是想象的那么简单。
      

  3.   

    增加一个datarow啊,表不也是有datarow组成的吗?
    重新生存一个新表,那就新建一个表,或者clone一个,
    原来的数据集加进来,然后计算的结果跟在在后面
      

  4.   

    SQL语句可以实现!根本不用写循环!
    insert into table
    (a,b,c,d)
    select sum(a) as a, sum(b) as b, sum(c) as c 
    from table
      

  5.   

    其实很简单,我每个程序都共用这一个函数,实现DataSet.Tables[0]表的按列汇总
    可能是我说的有点歧义,难点不是在于怎么累加,这很容易
    难的是每次用DataSet.Tables[0]这个虚拟表的时候,表中的列都在变化,可能我用第一个表的时候是10列,那我就要 求这10列的合,然后生成一条新的汇总记录,然后把这条汇总记录做为DataSet.Tables[0]的第一条记录。到第二个表可能有19列,也是实现上面的统计操作我不可能按列名来统计,只能按第一列,第二列来统计出汇总结果,然后生成新的记录,我不能用具体的列名,这是很困难的事情,不是我懒,这应该是个很抽象的程序,大家都想具体了
      

  6.   

    aley(豆浆油条)兄弟的sql挺有意思,不知道可不可以不写列名,直接写列号?
      

  7.   

    那你可以不用在DataSet中作任何处理。
    只需要在水晶报表设计那里调用它的一些公式就搞定了嘛。
      

  8.   

    用一条sql能写出来这个操作吗?insert into table
    (a,b,c,d)
    select sum(a) as a, sum(b) as b, sum(c) as c 
    from table
    这个sql具体怎么写啊?
      

  9.   

    为什么不用datatable和datarow呢?
    既然是水晶,为什么不用计算字段?
    如果是增加一行,为什么要insert,不用
    select a,b,c from tablename union select sum(a),sum(b),sum(c) from table
      

  10.   

    datagrid ,,,加行简单...想看看..要是排序?你的统计行咋能保证在最后或最前或你想要出现的位置...如果仅统计.那方法多了.但肯定不要用循环..
        不晓得是不是我想多了:)