我在水晶报表设计师版本14中创建了一个简单的报表,它由两个表组成,只是一个从一个到另一个的直接链接。当我在设计器中运行报表时,我从在Crystal报表查看器中运行报表时获得不同的值。我认为这是在某个地方兑现数据,但报告的目的不是存储数据。
private void btnLoad_Click(object sender, EventArgs e)
{
reportDocu = new ReportDocument();
TableLogOnInfo tableLogoninfo = new TableLogOnInfo();
ConnectionInfo connectionInfo = new ConnectionInfo();
Tables CrTables;
reportDocu.Load(@"Inventory.rpt");
var crTables = reportDocu.Database.Tables;
connectionInfo.UserID = "user";
connectionInfo.Password = "pass";
CrTables = reportDocu.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
tableLogoninfo = CrTable.LogOnInfo;
tableLogoninfo.ConnectionInfo = connectionInfo;
CrTable.ApplyLogOnInfo(tableLogoninfo);
}
crystalReportViewer1.ReportSource = reportDocu;
crystalReportViewer1.Update();
crystalReportViewer1.Refresh();
}
我查看了报告并且已经勾选(使用VS中的设计器)设计 - 默认设置 - 报告 - 在加载报告时丢弃保存的数据。
该报告使用ODBC作为i-series
我不知道报告运行时这些数据来自何处?
答案 0 :(得分:1)
您应该使用数据集并将表格拖到数据集中
之后你应该尝试这段代码我总是使用这段代码: -
using System.Data;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
public partial class Student_Report : System.Web.UI.Page
{
SqlConnection cn;
// SqlCommand cmd;
SqlDataAdapter da;
DataSet ds;
protected void Page_Load(object sender, EventArgs e)
{
string str = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
cn = new SqlConnection(str);
cn.Open();
da = new SqlDataAdapter("select * from StudentReg_mst", cn);
ds = new DataSet();
da.Fill(ds, "StudentReg_mst");
ReportDocument rd = new ReportDocument();
rd.Load(Server.MapPath("StudentReport.rpt"));
rd.SetDataSource(ds);
CrystalReportViewer1.ReportSource = rd;
CrystalReportViewer1.DataBind();
}
希望这会对你有所帮助