5 Stimmen

Es ist keine gültige Berichtsquelle verfügbar - Crystal Reports

Ich habe einen Bericht mit Crystal Reports erstellt. Ich verwende Visual Studio 2010. Das Problem tritt auf, wenn ich versuche, zu einer anderen Seite zu wechseln. Wenn ich versuche, zu Seite 2 oder zur letzten Seite zu navigieren, wird die Fehlermeldung Keine gültige Berichtsquelle verfügbar angezeigt. Hat jemand eine Idee, was ich tun muss? Vielen Dank für Ihre Zeit

0voto

Sunil Punkte 2825

Dank an @Razvan Panda.
Den vollständigen Code finden Sie hier.

protected void Page_Load(object sender, EventArgs e){ 
    CrystalDecisions.CrystalReports.Engine.ReportDocument report =
                            new CrystalDecisions.CrystalReports.Engine.ReportDocument();

                        TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
                        TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();

                        ConnectionInfo crConnectionInfo = new ConnectionInfo();
                        Tables CrTables;
                        report.Load(Server.MapPath("~/Reports/Monthly/CrMonthly.rpt"));

                        crConnectionInfo.ServerName = ConfigurationManager.AppSettings["Server4Crystal"].ToString();//[SQL SERVER NAME]
                        crConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["Database4Crystal"].ToString();//[DATABASE NAME]

                        crConnectionInfo.UserID = ConfigurationManager.AppSettings["User4Crystal"].ToString();//[DB USER NAME]
                        crConnectionInfo.Password = ConfigurationManager.AppSettings["Password4Crystal"].ToString(); //[DB PASSWORD]

    //LOOP THROUGH EACH TABLE & PROVIDE LOGIN CREDENTIALS
                        CrTables = report.Database.Tables;
                        foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
                        {
                            crtableLogoninfo = CrTable.LogOnInfo;
                            crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                            CrTable.ApplyLogOnInfo(crtableLogoninfo);
                        }

    //PROVIDE PARAMETERS TO CRYSTAL REPORT, IF REQUIRED.
                        ParameterField paramField = new ParameterField();
                        ParameterFields paramFields = new ParameterFields();
                        ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

                        paramField.Name = "PARAMETER_NAME";
                        paramDiscreteValue.Value = "PARAMETER_VALUE";
                        paramField.CurrentValues.Add(paramDiscreteValue);
                        paramFields.Add(paramField);
    //ADD MORE PARAMETERS, IF REQUIRED....

                        StoreMonthlyViewer.ParameterFieldInfo = paramFields;
                        StoreMonthlyViewer.ReportSource = report;
    //FINALLY REFRESH REPORT
                        StoreMonthlyViewer.RefreshReport();
                        StoreMonthlyViewer.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
}

0voto

Nick Punkte 2891

Wie bereits in anderen Antworten erwähnt, ist es so. Speichern Sie das ReportDocument in einer Session (oder so) und setzen Sie die ReportSource.

Beispiel:

protected void Page_Load(object sender, EventArgs e)
{
          if (Session["ReportSource"] != null)
          {
             CrystalReportViewer1.ReportSource = (ReportDocument) Session["ReportSource"];
          }
          else
          {
             ReportDocument reportDocument = new ReportDocument();
             reportDocument.Load("MyReport.rpt");
             CrystalReportViewer1.ReportSource = reportDocument;
             Session["ReportSource"] = reportDocument;
          }
}

0voto

yasir ali Punkte 3

Versuchen Sie, nach einem Parameter zu suchen, den Ihr Bericht nicht enthält

Normalerweise passiert das, wenn Sie einen Parameter in den Code einfügen und Ihr Bericht diesen Parameter nicht enthält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X