当前位置: 代码迷 >> ASP.NET >> 一个很菜的水晶报表有关问题
  详细解决方案

一个很菜的水晶报表有关问题

热度:7904   发布时间:2013-02-25 00:00:00.0
一个很菜的水晶报表问题
C# code
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;using CrystalDecisions.Shared;using CrystalDecisions.CrystalReports.Engine;public partial class _Default : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            DataSet ds = RtDs();            ReportDocument poRpt = new ReportDocument();            poRpt.Load(HttpContext.Current.Server.MapPath("./CrystalReport.rpt"));            poRpt.SetDataSource(ds);            this.CrystalReportViewer1.ReportSource = poRpt;        }    }    public DataSet RtDs()    {        SqlConnection con = new SqlConnection("xxxxx");        string sql = "select * from a001a001";        SqlCommand cmd = new SqlCommand(sql, con);        SqlDataAdapter adp = new SqlDataAdapter(cmd);        DataSet ds = new DataSet();        try        {            adp.Fill(ds);            return ds;        }        catch (Exception e)        {            throw e;        }    }}


ds里肯定有内容,但是我用这个代码绑定报表的话一直报错,错误是:


“/WebSite1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

该报表不包含表。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: CrystalDecisions.CrystalReports.Engine.DataSourceException: 该报表不包含表。

源错误: 


行 21: ReportDocument poRpt = new ReportDocument();
行 22: poRpt.Load(HttpContext.Current.Server.MapPath("./CrystalReport.rpt"));
行 23: poRpt.SetDataSource(ds);
行 24: this.CrystalReportViewer1.ReportSource = poRpt;
行 25: }
 

源文件: c:\WebSite1\Default.aspx.cs 行: 23 

堆栈跟踪: 


[DataSourceException: 该报表不包含表。]
  CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type) +169
  CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet) +55
  _Default.Page_Load(Object sender, EventArgs e) in c:\WebSite1\Default.aspx.cs:23
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +47
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 

我主要是想实现动态填充水晶报表的功能,哪位前辈知道具体怎么做的请指点下~


------解决方案--------------------------------------------------------
你的错误是 CrystalReport.rpt 这个文件没有链接数据集
你添加一个数据集 然后链接下数据库把select * from a001a001 (a001a001 )这个表托上去 让数据集里面有这个表的所有字段
保存 在运行就OK了
------解决方案--------------------------------------------------------
补充下
首先添加新文件 添加DATASET文件 数据集
然后进入DATASET文件链接数据库
把你那个表拓进去就可以了 他会自动出现这个表的所有字段

之后打开 CrystalReport.rpt 这个报表,给这个报表添加数据源。
数据源就链接这个DATASET数据集文件 同样把表付给CrystalReport.rpt 报表 保存
你的报表之所以不能运行 就是CrystalReport.rpt 少了个数据源
------解决方案--------------------------------------------------------
C# code
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class CrystalRPT_MultiReport_Default : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        Multy multy = new Multy();        Multy.SalesDataTable dt = multy.Sales;        MultyTableAdapters.SalesTableAdapter adapter = new MultyTableAdapters.SalesTableAdapter();        adapter.Fill(dt);        crSource.ReportDocument.SetDataSource(multy);        crSource.DataBind();    }}
  相关解决方案