sAcount       pAcount        gAcount04-12-6      100           50              50
04-12-8      210           70              130
04-12-9      98            28              70
04-12-12     110           60              50
.....目的
            04-12-6        04-12-8       04-12-9   04-12-12   ......
sAcount       100             210            98        110
pAcount        50              70            28        60
gAcount        50             130            70        50
           

解决方案 »

  1.   

    只是完成数据对换,对TABLE操作
      

  2.   

    public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
    {
    DataTable datatable = new DataTable();
    DataTable schemaTable = dataReader.GetSchemaTable();
    //动态添加列
    try
    {

    foreach(DataRow myRow in schemaTable.Rows)
    {
    DataColumn myDataColumn = new DataColumn();
    myDataColumn.DataType = myRow.GetType();
    myDataColumn.ColumnName = myRow[0].ToString();
    datatable.Columns.Add(myDataColumn);
    }
    //添加数据
    while(dataReader.Read())
    {
    DataRow myDataRow = datatable.NewRow();
    for(int i=0;i<schemaTable.Rows.Count;i++)
    {
    myDataRow[i] = dataReader[i].ToString();
    }
    datatable.Rows.Add(myDataRow);
    myDataRow = null;
    }
    schemaTable = null;
    dataReader.Close();
    return datatable;
    }
    catch(Exception ex)
    {
    Error.Log(ex.ToString());
    throw new Exception("转换出错出错!",ex);
    }

    }
      

  3.   

    to: yanyzty(歪打正着) 
     你的代码是是将datareader转换为datatable,
    并没有将行列置换,这段代码在三楼楼长的oa源
    码中也出现过.
     通过datareader读取我认为不正确,datareader
    是逐行读取.除非有多少列就生成多少datareader.
    感谢大家的支持,等待答案中......
      

  4.   


               sAcount       pAcount        gAcount04-12-6      100           50              50
    04-12-6      210           70              130
    04-12-9      98            28              70
    04-12-12     110           60              50如果上面表中有两个日期相同的情况下,你是作何种处理,分别建一个字段?还是合并相加。
      

  5.   

    表A
               sAcount       pAcount        gAcount04-12-6      100           50              50
    04-12-8      210           70              130
    04-12-9      98            28              70
    04-12-12     110           60              50
    .....
    临时对应表B
    04-12-6    sAcount   100
    04-12-6    pAcount   50
    04-12-6    gAcount   50
    04-12-8    sAcount   100
    04-12-8    pAcount   50
    04-12-8    gAcount   50
    04-12-9    sAcount   100
    04-12-9    pAcount   50
    04-12-9    gAcount   50
    ...
    A表中的数据更新->表对应数据相应的更新
    取数据的时候从B表中取,肯定不能取所有的数据,必须有一个时间的范围!!然后转换
      

  6.   

    to:precipitant(塞北的雪)
    问题1: 分别建一个字段
    问题2: 原表
               sAcount       pAcount        gAcount04-12-6      100           50              50
    04-12-6      210           70              130
    04-12-9      98            28              70
    04-12-12     110           60              50行数不确定,应该不超过20行
      

  7.   

    to:nga96() 
    你的别的办法是什么?
    望告知.
      

  8.   

    再定義一個datatable ,然後以已有的datatable做數據源,到已有的datatable 中去取數據,放置入剛定義的datatable中,放成你想要的樣式就行了...
      

  9.   

    建一个临时表 像土人说的把每个日期时间取到值 ,通过语句可以取得所有字段的名称作为一列取得所有字段的名称sql:select name  from syscolumns where id=object_id('表')
      

  10.   

    假设你的A表 m行 n列那么你就新建立一个 n行 m列 的表对象B
    然后再建 m 个列对象
    循环 读取A表数据,然后将相应项添加到相应的上面建立的 m个列对象中。
    最后将所有的列对象再添加到B表中。如果只有20几行,肯定一点问题都没有。