Opzioni di collegamento dei report per Windows Forms Viewer

Gli scenari che seguono si applicano alle applicazioni Visual Basic .NET e C#, nonché alle applicazioni Managed C++ se non indicato diversamente.

Scenario 1: Report locale

Si supponga che esistano le seguenti condizioni e che un report di Crystal sia disponibile su un computer locale:

  • La cartella C:\Reports su un computer locale contiene un report di Crystal, My Report.rpt.

In un'applicazione Visual Basic o C#

  • È stato creato un progetto Applicazione Windows, MyProject, nella cartella predefinita per l'utente connesso come Administrator (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • È stato inserito un Windows Forms Viewer, CrystalReportViewer1, nel Windows Form, all'interno di MyProject.

È possibile collegare My Report.rpt a Windows Forms Viewer in base al nome di report, all'oggetto report o al componente di report non tipizzato.

In un'applicazione C++

  • È stato creato un progetto Managed C++, MyProject, nella cartella predefinita per l'utente connesso come Administrator (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • È stato inserito un Windows Forms Viewer, crystalReportViewer1, in MyProject.cpp all'interno di MyProject.

È possibile collegare My Report.rpt a Windows Forms Viewer in base al nome del report o all'oggetto report.

Collegamento per nome di report

A seconda della lingua del progetto, è possibile specificare la proprietà ReportSource utilizzando la finestra delle proprietà o il codice:

In un'applicazione Visual Basic o C#

  • Selezionare Windows Forms Viewer nella visualizzazione Progettazione del Windows Form. Nella finestra delle proprietà, selezionare "C:\Reports\My Report.rpt" per la proprietà ReportSource.
  • Nell'Editor del codice impostare il nome del report nella proprietà ReportSource di Windows Forms Viewer.

In un'applicazione C++

Nell'Editor del codice impostare il nome del report nella proprietà ReportSource di Windows Forms Viewer.

Esempio

Impostare il nome del report nella proprietà ReportSource di Windows Forms Viewer.

[Visual Basic]

CrystalReportViewer1.ReportSource = _
"C:\\Reports\\My Report.rpt"

[C#]

crystalReportViewer1.ReportSource =
"C:\\Reports\\My Report.rpt";

[C++]

crystalReportViewer1->ReportSource =
"C:\\Reports\\My Report.rpt";

[VJ#]

crystalReportViewer1.set_ReportSource(
"C:\\Reports\\My Report.rpt");

Collegamento per oggetto report

È possibile creare un oggetto report, assegnare un report all'oggetto e collegare quest'ultimo a un Windows Forms Viewer. Attraverso l'oggetto report, è possibile accedere all'intero modello oggetto esposto da Crystal Reports per Visual Studio .NET.

Per collegare un oggetto report a Windows Forms Viewer in un progetto Visual Basic.

  1. Aggiungere un riferimento a CrystalDecisions.CrystalReports.Engine.

  2. Aprire Form1.vb nell'Editor del codice.

  3. Aggiungere il seguente spazio dei nomi a Form1.vb:

    Imports CrystalDecisions.CrystalReports.Engine
    
  4. Creare un oggetto report come variabile ReportDocument pubblica in Form1():

    Public WithEvents oRpt As ReportDocument
    
  5. Nel metodo New(), utilizzare l'oggetto Report Document per caricare My Report.rpt e collegarlo a Windows Forms Viewer:

    Public Sub New()
       MyBase.New()
    
       'Questa chiamata è richiesta dalla finestra di progettazione Windows Forms.
       InitializeComponent()
    
       'Aggiungere una inizializzazione dopo la chiamata
       'InitializeComponent()
       oRpt = New ReportDocument()
       oRpt.Load("C:\\Reports\\My Report.rpt")
       CrystalReportViewer1.ReportSource = oRpt
    End Sub
    

Per collegare un oggetto report a Windows Forms Viewer in un progetto C#.

  1. Aggiungere un riferimento a CrystalDecisions.CrystalReports.Engine.

  2. Aprire Form1.cs nell'Editor del codice.

  3. Aggiungere il seguente spazio dei nomi a Form1.cs:

    using CrystalDecisions.CrystalReports.Engine;
    
  4. Creare un oggetto report come variabile ReportDocument pubblica in Form1():

    public ReportDocument oRpt=null;
    
  5. Nella funzione Form1() utilizzare l'oggetto Report Document per caricare My Report.rpt e collegarlo a Windows Forms Viewer:

    Public Form1()
    {
       //
       // Richiesto per il supporto della finestra di progettazione Windows Forms
       //
       InitializeComponent();
    
       //
       // OBBLIGATORIO: Aggiungere codice costruttore dopo la chiamata InitializeComponent 
       // 
       //
       oRpt = new ReportDocument();
      oRpt.Load("c:\\Reports\\My Report.rpt");   
       crystalReportViewer1.ReportSource = oRpt;
    }
    

Per collegare un oggetto report a Windows Forms Viewer in un progetto C++.

  1. Fare doppio clic su MyProject.cpp in Esplora soluzioni per aprirlo nell'Editor del codice.

  2. Aggiungere i seguenti componenti a MyProject.cpp:

    #using <C:\Programmi\File Comuni\Crystal Decisions\1.1\Managed\CrystalDecisions.CrystalReports.Engine.dll>
    #using <C:\Programmi\File Comuni\Crystal Decisions\1.1\Managed\CrystalDecisions.Windows.Forms.dll>
    
  3. Aggiungere i seguenti spazi dei nomi a MyProject.cpp:

    using namespace CrystalDecisions::CrystalReports::Engine;
    using namespace CrystalDecisions::Windows::Forms;
    
  4. Creare un oggetto report come variabile ReportDocument pubblica:

    ReportDocument *oRpt = null;
    
  5. Creare un Windows Forms Viewer come variabile CrystalReportViewer pubblica e collegarlo a un oggetto modulo.

    Form* form1 = new Form();
    CrystalReportViewer crystalReportViewer1 = new crystalReportViewer
    form1->Controls->Add(crystalReportViewer1);
    
  6. Utilizzare l'oggetto Report Document per caricare My Report.rpt e collegarlo a Windows Forms Viewer:

    oRpt = new ReportDocument();
    oRpt->Load("c:\\Reports\\My Report.rpt");
    crystalReportViewer1->ReportSource = oRpt;
    

Collegamento per componente del report non tipizzato

Si supponga di aver aggiunto un componente del report non tipizzato , reportDocument1, al Windows Form e di aver caricato il componente con c:\Reports\My Report.rpt.

È possibile collegare tale componente non tipizzato a Windows Forms Viewer specificando la proprietà ReportSource tramite codice:

[Visual Basic]

CrystalReportViewer1.ReportSource = reportDocument1

[C#]

crystalReportViewer1.ReportSource = reportDocument1;

[C++] È possibile aggiungere oggetti report all'applicazione C++ solo tramite codice. Per ulteriori informazioni vedere la precedente sezione Per collegare un oggetto report a Windows Forms Viewer in un progetto C++. Per visualizzare un esempio in C# o VB, fare clic sul pulsante Language Filter nell'angolo in alto a sinistra della pagina.

[VJ#]

crystalReportViewer1.set_ReportSource(reportDocument1);

Scenario 2: Report locale aggiunto al progetto

Si supponga che esistano le seguenti condizioni e che un report di Crystal sia disponibile su un computer locale:

In un'applicazione Visual Basic o C#

  • È stato creato un progetto Applicazione Windows, MyProject, nella cartella predefinita per l'utente connesso come Administrator (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • È stato inserito un Windows Forms Viewer, CrystalReportViewer1, nel Windows Form, all'interno di MyProject.
  • È stato aggiunto il report My Report.rpt a MyProject.

È possibile collegare My Report.rpt a Windows Forms Viewer per oggetto report o componente del report con tipizzazione forte.

In un'applicazione C++

  • È stato creato un progetto Managed C++, MyProject, nella cartella predefinita per l'utente connesso come Administrator (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).

Occorre aggiungere il Web Forms Viewer e il report tramite codice

Per oggetto report:

In un'applicazione Visual Basic o C#

Quando si aggiunge My Report.rpt a MyProject, la classe di report corrispondente, My_Report, viene generata automaticamente nel file di origine di My Report.rpt. È possibile collegare My Report.rpt al Windows Forms Viewer assegnando l'oggetto report corrispondente alla proprietà ReportSource tramite la visualizzazione del codice relativa a Windows Form:

In un'applicazione C++

Per i progetti C++ non viene generata automaticamente alcuna classe di report. È possibile aggiungere questa classe all'applicazione C++ tramite codice.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = new My_Report()

[C#]

crystalReportViewer1.ReportSource = new My_Report();

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

crystalReportViewer1.set_ReportSource(new My_Report());

Collegamento per componente del report con tipizzazione forte

In un'applicazione Visual Basic o C#

Si supponga di aver aggiunto My Report.rpt come un componente con tipizzazione forte a MyProject.

È possibile collegare il report come componente a Windows Forms Viewer specificando la proprietà ReportSource tramite la finestra delle proprietà o la visualizzazione del codice di Windows Form1:

  • Selezionare Windows Forms Viewer nella visualizzazione Progettazione del Windows Form. Nella finestra delle proprietà, per ReportSource, selezionare my_Report1 [MyProject.My_Report] dall'elenco a discesa.
  • In alternativa, nella visualizzazione del codice di Windows Form, impostare la proprietà ReportSource di Windows Forms Viewer.

In un'applicazione C++

Per i progetti C++ non viene generata automaticamente alcuna classe di report. È possibile aggiungere questa classe all'applicazione C++ tramite codice.

Esempio

[Visual Basic]

CrystalReportViewer1.ReportSource = my_Report1

[C#]

crystalReportViewer1.ReportSource = my_Report1;

[C++]

public __gc Class MyWebClass{
public:
   CrystalReportViewer* CrystalReportViewer1;
   ReportDocument* oRpt;
   void BindReport(){
      CrystalReportViewer1 = new CrystalReportViewer();
      oRpt = new ReportDocument();
      oRpt->Load("c:\\Reports\\My Report.rpt");   
      CrystalReportViewer1->ReportSource = oRpt;
   };
};

[VJ#]

crystalReportViewer1.set_ReportSource( my_Report1);