一样的道理,你做报表时用的数据源是ADO数据[xsd文件],
然后把你的数据集重新写进xsd里,然后调用报表

解决方案 »

  1.   

    你要先生成一个固定的dataset然后设置好栏位,然后再用你的方法,如果你想创建任意字段的那么只有你自己写控件,毕竟一般的报表格式都差不多在设计时固定啦,
      

  2.   

    to meetweb:1. 我用ds.WriteXml("MyDataSet.xsd");生成了一个.xsd文件。
    2. 编辑MyDataSet.xsd,把自动生成的NewDataSet,更改为MyDataSet(XML视图)。
    3. 然后在命令行,xsd MyDataSet.xsd /d /n:my_namespace后生成一个MyDataSet.cs
    4. 项目/添加新项/Crystal Report/更多数据源/ADO.NET(XML)/建立新连接/XML文件路径:MyDataSet.xsd
    5. 项目/添加现有项,把MyDataSet.cs和MyDataSet.xsd包含进来(这一步骤有必要吗?)
    6. 把原来的Form1.Load改为
    SqlConnection sqlConn = new SqlConnection();
    sqlConn.ConnectionString = "server=namhyuk;database=consciousness;uid=sa;pwd=";
    sqlConn.Open();SqlCommand sqlCmd = new SqlCommand();
    sqlCmd.Connection = sqlConn;
    sqlCmd.CommandType = CommandType.Text;
    sqlCmd.CommandText = "select * from MyTable";MyDataSet ds = new MyDataSet();SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = sqlCmd;da.Fill(ds.MyTable);CrystalReport1 cr = new CrystalReport1();
    cr.SetDataSource(ds.MyTable);crystalReportViewer1.ReportSource = cr;//自己瞎整的,这方面正规的介绍文档还没找到。请meetweb,snof,还有大家看看,是这么实现吗?
      

  3.   

    步骤如下.
    1.新建立一个DataSet,可以直接使用vs,从服务器资源管理器来过来生成
    2.新建立一个rpt报表文件,把数据源换为xml文件,指向新生成的DataSEt
    3.新建立一个cs. or vb文件
    代码大概如你写的一样
    6. 把原来的Form1.Load改为
    SqlConnection sqlConn = new SqlConnection();
    sqlConn.ConnectionString = "server=namhyuk;database=consciousness;uid=sa;pwd=";
    sqlConn.Open();SqlCommand sqlCmd = new SqlCommand();
    sqlCmd.Connection = sqlConn;
    sqlCmd.CommandType = CommandType.Text;
    sqlCmd.CommandText = "select * from MyTable";MyDataSet ds = new MyDataSet();SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = sqlCmd;da.Fill(ds.MyTable);CrystalReport1 cr = new CrystalReport1();
    cr.SetDataSource(ds.MyTable);crystalReportViewer1.ReportSource = cr;此建议没有经过测试,如有问题请把问题贴出来