首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

加载报表失败解决方案

2012-02-07 
加载报表失败高手看看哪里有问题C# code//crs为数据源ReportDataSource protected void Button1_Click(obj

加载报表失败
高手看看哪里有问题


C# code
//crs为数据源ReportDataSource protected void Button1_Click(object sender, EventArgs e)    {        try        {            TableLogOnInfo loginfo = new TableLogOnInfo();            loginfo.ConnectionInfo.ServerName = "10.8.2.31";            loginfo.ConnectionInfo.UserID = "sa";            loginfo.ConnectionInfo.Password = "moringstra";            DataTable repdt = new DataTable();            SetDateUserid();            GetSpdt(ref repdt, txtUserid, beginDate, enddate);            crs.Report.FileName = "日报";            crs.ReportDocument.Load(Server.MapPath("Report/usp_DalayReoprt.rpt"));                        crs.ReportDocument.Database.Tables[0].ApplyLogOnInfo(loginfo);            crs.ReportDocument.SetDataSource(repdt);            crs.DataBind();                        CrystalReportViewer1.ReportSource = crs;            CrystalReportViewer1.DataBind();        }        catch (Exception ex)        {            MessageBoxShow(ex.Message.ToString());        }    }    private DataTable GetSpdt(ref DataTable spdt,string seUserid,string BeginDate,string Enddate)    {        try        {                        string Userid = (string)(Session["LoginUser"]);            string UserAuthority = (string)(Session["Authority"]);            UserAuthority = UserAuthority.Substring(1, UserAuthority.Length - 2);            getscnstr(scn);            OpenConn(scn);            string sqlstr2 = "SELECT * FROM uvw_IsPrincipal WHERE FnAME='" + Userid + "' AND IsPrincipal=1 ";            DataTable dt2 = acc.GetSereachData(scn, sqlstr2);            if (dt2.Rows.Count == 0)            {                    seUserid = Userid;            }                       getscnstr(scn);            OpenConn(scn);            SqlCommand cmd = new SqlCommand();            cmd.CommandText = "usp_DalayReoprt";            cmd.CommandType = CommandType.StoredProcedure;            cmd.Connection = scn;            cmd.Parameters.Add("@PositionCode", SqlDbType.VarChar);            cmd.Parameters["@PositionCode"].Value = UserAuthority;                       cmd.Parameters.Add("@Code", SqlDbType.VarChar);            cmd.Parameters["@Code"].Value = seUserid+"%";            cmd.Parameters.Add("@BeginDate", SqlDbType.VarChar);            cmd.Parameters["@BeginDate"].Value =  BeginDate;            cmd.Parameters.Add("@EndDate", SqlDbType.VarChar);            cmd.Parameters["@EndDate"].Value = Enddate;            crs.ReportDocument.SetParameterValue("PositionCode", UserAuthority);            crs.ReportDocument.SetParameterValue("BeginDate", BeginDate);            crs.ReportDocument.SetParameterValue("EndDate", Enddate);            SqlDataAdapter sda = new SqlDataAdapter(cmd);            sda.Fill(spdt);            return  spdt;        }        catch (Exception ex)        {            MessageBoxShow(ex.ToString());            spdt = null;            return spdt;        }            }


[解决办法]
关键代码,参考下:
private ReportDocument myReport = new ReportDocument();

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
ConfigureCrystalReports();
}
}
private void ConfigureCrystalReports()
 {
string reportPath = Server.MapPath("../rptsources/AP_Creditor_AgingRe.rpt");
myReport.Load(reportPath);


//定义水晶报表的数据库连接信息
ConnectionInfo connectionInfo = new ConnectionInfo();
connectionInfo.DatabaseName = "xx";


connectionInfo.UserID = "xx";
connectionInfo.Password = "xx";
connectionInfo.ServerName = "xx";

//将数据库信息传递给报表
SetDBLogonForReport(connectionInfo, myReport);

//把模板对象赋给报表前端呈现控件CrystalReportViewer1
CrystalReportViewer1.ReportSource = myReport;
CrystalReportViewer1.EnableDrillDown = false;
myReport.SetParameterValue("@SUPPLIER_CODE", "S001");
myReport.SetParameterValue("@DOCU_NO", "ssss");

}

private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
{
Tables tables = reportDocument.Database.Tables;

foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);

}
}

热点排行