一个很菜的水晶报表问题
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.Securi