日期:2014-05-20  浏览次数:21037 次

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


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";