2016-07-25 17 views
0

In meinem Projekt habe ich eine Schaltfläche, die, wenn darauf geklickt wird, alle Verträge, die derzeit aktiv sind, aus meiner SQL Server-Datenbank drucken soll. Es gibt Hunderte von aktiven Verträgen, aber im Moment, wenn ich den Knopf drücke, wird der Bericht geladen, aber der Bericht nicht.Crystal Reports lädt keine Daten vb.net

Ich werde mein Bestes tun, um dies anhand von Bildern und Code zu demonstrieren, aber kann jemand vorschlagen, warum dies geschieht?

//-Code für den Druckknopf

Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click 

    Try 
     Dim objlist As New ReportDocument 
     objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt") 

     Dim info As CrystalDecisions.Shared.TableLogOnInfo 
     info = New CrystalDecisions.Shared.TableLogOnInfo() 

     info.ConnectionInfo.DatabaseName = "" 
     info.ConnectionInfo.ServerName = readIni("CONTRACTSTRING", directorypath & "connectionpaths.ini") 
     info.ConnectionInfo.Password = "" 
     info.ConnectionInfo.UserID = "" 
     objlist.Database.Tables(0).ApplyLogOnInfo(info) 

     objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'" 

     Dim f As frmReports 
     f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, ,) 
     f.Show() 

    Catch ex As Exception 
     errorLog(ex.Message, ex.StackTrace) 
     MsgBox("Failed to retrieve contract information from 'database', refer to error log") 
    End Try 

End Sub 

// Dies ist der Bericht Form, aber es gibt keinen Bericht

enter image description here

// Der Nachweis, dass es aktive Berichte

enter image description here

+0

Ist dies eine brandneue Form/Bericht, die nie funktioniert hat, oder eine, die plötzlich nicht mehr funktioniert? –

+0

Da das Formular keinen Bericht zeigt, anstatt einen Bericht ohne Daten zu zeigen, haben Sie verifiziert, dass a) die '.rpt' Datei der Ort ist, an dem die App danach sucht, und b) dass' frmReports' es lädt ? Möglicherweise müssen wir den Konstruktor in 'frmReports' sehen. –

+0

helloo @ David .. ist das gelöst? –

Antwort

0

Dies ist jetzt behoben. Das Problem war, dass ich 2 Datenbanktabellen in meinen Berichten verwendete, aber nur die Login-Informationen für 1 zur Verfügung stellte und der zweite die Daten vom Server nicht erhielt, weshalb er nicht angezeigt wurde. Die andere Sache, die ich tat, war die Tatsache, dass es sich mit leeren Werten anmeldete. Mein fester Code ist jetzt das;

Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click 

    Try 
     Dim objlist As New ReportDocument 
     objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt") 

     Dim info As CrystalDecisions.Shared.TableLogOnInfo 
     info = New CrystalDecisions.Shared.TableLogOnInfo() 

     Dim servername As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "servername")) 
     Dim database As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "database")) 
     Dim username As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "username")) 
     Dim password As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "password")) 
     Dim provider As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "provider")) 

     info.ConnectionInfo.DatabaseName = database 
     info.ConnectionInfo.ServerName = servername 
     info.ConnectionInfo.Password = password 
     info.ConnectionInfo.UserID = username 

     objlist.Database.Tables(0).ApplyLogOnInfo(info) 
     objlist.Database.Tables(1).ApplyLogOnInfo(info) 

     objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'" 

     Dim f As frmReports 
     f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, ,) 
     f.Show() 

    Catch ex As Exception 
     errorLog(ex.Message, ex.StackTrace) 
     MsgBox("Failed to retrieve contract information from database, refer to error log") 
    End Try 

End Sub 
0

Versuchen vergleichen diese:

try 
      { 

       String APPPATH = String.Empty; 
       CRPT = new ReportDocument(); 
       APPPATH = System.IO.Directory.GetCurrentDirectory() + "/CrystalReport/CrystalReport1.rpt"; 
       //APPPATH = "~/Crystal_report/mosum.rpt"; 
       CRPT.Load(APPPATH); 
       crViewer.RefreshReport(); 

       CLASS_PROJECT.crystalReportcls rptcls = new CLASS_PROJECT.crystalReportcls(); 

       ParameterFields paramFields = new ParameterFields(); 
       ParameterField paramField = new ParameterField(); 
       ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue(); 
       paramField.Name = "sdate"; 
       paramDiscreteValue.Value = "2016-07-01"; 
       paramField.CurrentValues.Add(paramDiscreteValue); 
       paramFields.Add(paramField); 


       crViewer.ParameterFieldInfo = paramFields; 
       crViewer.ReportSource = CRPT; 


       MessageBox.Show("Crystal logged in."); 
       CRPT.SetDatabaseLogon("dbusername", "dbpassword"); 
       rptcls.LogonCrystalReport(crViewer); 

      } 
      catch (Exception er) 
      { 

       MessageBox.Show(er.Message); 
      } 

diese Struktur für meine Probe arbeitet. Alles, was Sie tun müssen, ist den Kristall Bericht und den Berichtspfad selbst einzuloggen.