为什么我的水晶报表不能从dataset中得到数据?提示的错误是:未处理的“CrystalDecisions.CrystalReports.Engine.LoadSaveReportException”类型的异常出现在 crystaldecisions.crystalreports.engine.dll 中。
其他信息: 无效报表文件路径代码部分是这样的:
private void fmDataSet_Load(object sender, System.EventArgs e)
{
    string str="select * from IQCACPT";
    DataSet ds=new DataSet();
    ds=DllPubInfo.PubInfo.AccessDB.GetQueryResult(str,"acpt");
    ReportDocument re=new ReportDocument();
    re.SetDataSource(ds);
    this.crystalReportViewer1.ReportSource=re; 
}说明,ds可以正常取得数据集。因为我采用接口调用服务器上的存储过程,所以本机没有定义连接的代码。

解决方案 »

  1.   

    我将最后一句换成
    this.crystalReportViewer1.ReportSource=@"E:\水晶报表示例1.rpt";
    也不行!报的错误一样
      

  2.   

    但我换成这个,就行了
    private void fmDataSet_Load(object sender, System.EventArgs e)
    {
        this.crystalReportViewer1.ReportSource=@"E:\水晶报表示例1.rpt";
    }
      

  3.   

    re.Load(@"E:\水晶报表示例1.rpt);
      

  4.   

    我一开始的时候,是尽量避免使用强类型数据集的,但出现上面的问题
    我从官方网站上找了个例子(可真难找啊),按照例子 做了强类型,虽然我不喜欢这么做,
    因为这样,一个DataSet1.xsd就和一个CrystalReport.rpt对应了,就失去了灵活性。我是比较懒的,我想只设计一个rpt,运行时,每个程序都可以设置相应的字段,然后填充。大家如果对这种方法感兴趣,就把邮箱留给我,我把例子发给你们。,感兴趣的记下了,免的当成垃圾邮件删掉了:)
      

  5.   

    string str="select * from IQCACPT";
        DataSet ds=new DataSet();
        ds=DllPubInfo.PubInfo.AccessDB.GetQueryResult(str,"acpt");
        ReportDocument re=new ReportDocument();
        re.load(@"E:\水晶报表示例1.rpt");
        re.SetDataSource(ds);
        this.crystalReportViewer1.ReportSource=re; 
    //加  re.load()就可以了。
      

  6.   

    谢谢 szsmall(麒麟), scott_chou()