Действительный источник отчетов недоступен.в отчете asp.net sap crystal - PullRequest
0 голосов
/ 23 июня 2011

Я использую Sap Crystal Report в asp.net 2010 Он покажет ошибку no valid report source id available, когда я обновляет отчет или переходит на следующую страницу во время выполнения с помощью инструментов просмотра отчетов и это моя кодировка,

 Dim crdoc5 As New ReportDocument()
 Dim crtablogoninfo5 As New TableLogOnInfo
 Dim crtabs5 As Tables

 If Not IsPostBack Then
      crdoc5.Load(Server.MapPath("CrStaffrecruit.rpt"))
      Session.Add("CrStaffrecruit", crdoc5)
      CrystalReportViewer5.ReportSource = crdoc5
  Else
      CrystalReportViewer5.ReportSource = Session("CrStaffrecruit")
  End If

  crdoc5.Load(Server.MapPath("CrStaffrecruit.rpt"))
  Dim crconninfo5 As New ConnectionInfo()
  rconninfo5.ServerName = "servername"
  crconninfo5.DatabaseName = "databasename"
  crconninfo5.UserID = "sa"
  crconninfo5.Password = ""

  crtabs5 = crdoc5.Database.Tables()
  For Each crtab5 As CrystalDecisions.CrystalReports.Engine.Table In crtabs5
      crtablogoninfo5 = crtab5.LogOnInfo
      crtablogoninfo5.ConnectionInfo = crconninfo5
      crtab5.ApplyLogOnInfo(crtablogoninfo5)
  Next

  CrystalReportViewer5.ReportSource = crdoc5
  CrystalReportViewer5.RefreshReport()

Если кто-нибудь знает, пожалуйста, помогите мне ... Заранее спасибо

Ответы [ 5 ]

1 голос
/ 02 января 2012

Для этого перейдите по следующей ссылке

http://forums.sdn.sap.com/thread.jspa?messageID=10951477&#10951477

1 голос
/ 15 мая 2012

Хотя следующий код находится на C #, его не должно быть слишком сложно перевести на VB, и он должен решить вашу проблему:

protected void Page_Load(object sender, EventArgs e)
{
        if (Page.IsPostBack)
        {
            //whatever you do when the page is loaded for the first time
            //this could even be bindReport();
        }
        else
        {
            bindReport();
        }
}

public void bindReport()
{
        ReportDocument rptDoc = new ReportDocument();
        dsSample ds = new dsSample(); // .xsd file name
        DataTable dt = new DataTable();
        // Just set the name of data table
        dt.TableName = "Crystal Report Example";
        dt = getMostDialledNumbers(); //This function populates the DataTable
        ds.Tables[0].Merge(dt, true, MissingSchemaAction.Ignore);
        // Your .rpt file path will be below
        rptDoc.Load(Server.MapPath("yourReportFilePath.rpt"));
        //set dataset to the report viewer.
        rptDoc.SetDataSource(ds);
        CrystalReportViewer1.ReportSource = rptDoc;
        CrystalReportViewer1.RefreshReport();
        //in case you have an UpdatePanel in your page, it needs to be updated
        UpdatePanel1.Update();
}
0 голосов
/ 01 декабря 2013

Перейдите по следующей ссылке.Я решил ту же проблему с этим решением.

http://www.aspsnippets.com/Articles/ASPNet-Crystal-Reports-13-Visual-Studio-2010-CrystalReportViewer-Search-Button-Issue---No-valid-report-source-is-available.aspx

0 голосов
/ 19 июня 2012

Я сталкивался с этой проблемой несколько раз, и решение состоит в том, чтобы сохранить переменную Report Document в сеансе, а затем в Page_load поместить следующий код:

if (IsPostBack)
{
    if (Session["reportDocument"] != null)
    {
        ReportDocument cr = new ReportDocument();
        cr = (ReportDocument)Session["reportDocument"];
        CrystalReportViewer1.ReportSource = cr;
        CrystalReportViewer1.DataBind();
    }
}

NB: Не забудьте заполнить (Session["reportDocument"]) кнопкой Дисплея.

0 голосов
/ 11 июля 2011

У меня была такая же проблема. В каком случае вы выполняете код, который вы разместили? Я спрашиваю, потому что после большой отладки я обнаружил, что вам нужно поместить код в Page_Load (в отличие от PreRender, как я делал раньше ...)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...