Opciones de enlace de informes de Windows Forms Viewers

Los casos siguientes son aplicables a aplicaciones de Visual Basic .NET y C#, así como a aplicaciones de C++ administradas, a menos que se especifique lo contrario.

Caso 1: informe local

Suponga que se dan las siguientes condiciones y que existe un informe Crystal disponible en un equipo local:

  • Tiene un informe Crystal, My Report.rpt, en la carpeta, C:\Reports, en un equipo local.

En una aplicación de Visual Basic o de C#

  • Ha creado un proyecto Aplicación de Windows, MyProject, en la carpeta predeterminada para el usuario conectado como administrador (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • Ha insertado Windows Forms Viewer, en Windows Form, CrystalReportViewer1, en MyProject.

Puede enlazar My Report.rpt a Windows Forms Viewer por el nombre de informe, el objeto de informe o el componente de informe sin tipo.

En una aplicación de C++

  • Ha creado un proyecto de C++ administrado, MyProject, en la carpeta predeterminada para el usuario conectado como administrador (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • Ha insertado Windows Forms Viewer, crystalReportViewer1, en MyProject.cpp en MyProject.

Puede enlazar My Report.rpt a Windows Forms Viewer por el nombre del informe o por el objeto de informe.

Enlazar por nombre de informe

Dependiendo del lenguaje del proyecto, se puede especificar la propiedad ReportSource mediante la ventana Properties o mediante código:

En una aplicación de Visual Basic o de C#

  • Seleccione Windows Forms Viewer en la vista Diseño de Windows Form. En la ventana Propiedades, busque y seleccione "C:\Reports\My Report.rpt" para la propiedad ReportSource.
  • En el Editor de código, establezca el nombre de informe en la propiedad ReportSource de Windows Forms Viewer.

En una aplicación de C++

En el Editor de código, establezca el nombre de informe en la propiedad ReportSource de Windows Forms Viewer.

Ejemplo

Establezca el nombre de informe en la propiedad ReportSource de 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");

Enlazar por objeto de informe

Puede crear un objeto de informe, asignar un informe a ese objeto y enlazar el objeto a Windows Forms Viewer. Mediante el objeto de informe, puede obtener acceso al modelo de objeto completo que Crystal Reports muestra para Visual Studio .NET.

Para enlazar un objeto de informe a Windows Forms Viewer en un proyecto de Visual Basic

  1. Agregue una referencia a CrystalDecisions.CrystalReports.Engine.

  2. Abra Form1.vb en el Editor de código.

  3. Agregue el siguiente espacio de nombres a Form1.vb:

    Imports CrystalDecisions.CrystalReports.Engine
    
  4. Cree un objeto de informe como variable pública ReportDocument en Form1():

    Public WithEvents oRpt As ReportDocument
    
  5. En el método New(), utilice el objeto Report Document para cargar My Report.rpt y enlazar el objeto a Windows Forms Viewer:

    Public Sub New()
       MyBase.New()
    
       'Windows Form Designer requiere esta llamada.
       InitializeComponent()
    
       'Agregar inicialización detrás de la 
       'llamada a InitializeComponent()
       oRpt = New ReportDocument()
       oRpt.Load("C:\\Reports\\My Report.rpt")
       CrystalReportViewer1.ReportSource = oRpt
    End Sub
    

Para enlazar un objeto de informe a Windows Forms Viewer en un proyecto de C#

  1. Agregue una referencia a CrystalDecisions.CrystalReports.Engine.

  2. Abra Form1.cs en el Editor de código.

  3. Agregue el siguiente espacio de nombres a Form1.cs:

    using CrystalDecisions.CrystalReports.Engine;
    
  4. Cree un objeto de informe como variable pública ReportDocument en Form1():

    public ReportDocument oRpt=null;
    
  5. En la función Form1(), utilice el objeto Report Document para cargar My Report.rpt y enlazar el objeto a Windows Forms Viewer:

    Public Form1()
    {
       //
       // Requerido para soporte de Windows Form Designer
       //
       InitializeComponent();
    
       //
       // TODO: Agregar código de constructor detrás de 
       //  la llamada a InitializeComponent
       //
       oRpt = new ReportDocument();
      oRpt.Load("c:\\Reports\\My Report.rpt");   
       crystalReportViewer1.ReportSource = oRpt;
    }
    

Para enlazar un objeto de informe a Windows Forms Viewer en un proyecto de C++

  1. Haga doble clic en MyProject.cpp en el Explorador de soluciones para abrirlo en el Editor de código.

  2. Agregue los componentes siguientes a MyProject.cpp:

    #using <C:\Archivos de Programa\Archivos Comunes\Crystal Decisions\1.1\Managed\CrystalDecisions.CrystalReports.Engine.dll>
    #using <C:\Archivos de Programa\Archivos Comunes\Crystal Decisions\1.1\Managed\CrystalDecisions.Windows.Forms.dll>
    
  3. Agregue los espacios de nombres siguientes a MyProject.cpp:

    using namespace CrystalDecisions::CrystalReports::Engine;
    using namespace CrystalDecisions::Windows::Forms;
    
  4. Cree un objeto de informe como variable pública de ReportDocument:

    ReportDocument *oRpt = null;
    
  5. Cree Windows Forms Viewer como variable pública de CrystalReportViewer y enlácelo a un objeto de formulario.

    Form* form1 = new Form();
    CrystalReportViewer crystalReportViewer1 = new crystalReportViewer
    form1->Controls->Add(crystalReportViewer1);
    
  6. Utilice el objeto ReportDocument para cargar My Report.rpt y enlace el objeto a Windows Forms Viewer:

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

Enlazar por componente de informe sin tipo

Suponga que ha agregado un componente de informe sin tipo, reportDocument1, a Windows Form y ha cargado el componente con c:\Reports\My Report.rpt.

Puede enlazar el componente de informe sin tipo a Windows Forms Viewer especificando la propiedad ReportSource mediante código:

[Visual Basic]

CrystalReportViewer1.ReportSource = reportDocument1

[C#]

crystalReportViewer1.ReportSource = reportDocument1;

[C++] Sólo se pueden agregar objetos de informe a la aplicación de C++ mediante código. Para obtener más información, vea la sección Para enlazar un objeto de informe a Windows Forms Viewer en un proyecto de C++, más arriba. Para ver un ejemplo de C# o VB, haga clic en el botón Filtro de lenguaje situado en la esquina superior izquierda de la página.

[VJ#]

crystalReportViewer1.set_ReportSource(reportDocument1);

Caso 2: informe local agregado al proyecto

Suponga que se dan las siguientes condiciones y que existe un informe Crystal disponible en un equipo local:

En una aplicación de Visual Basic o de C#

  • Ha creado un proyecto Aplicación de Windows, MyProject, en la carpeta predeterminada para el usuario conectado como administrador (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).
  • Ha insertado Windows Forms Viewer, CrystalReportViewer1 en Windows Form, en MyProject.
  • Ha agregado el informe My Report.rpt a MyProject.

Puede enlazar My Report.rpt a Windows Forms Viewer por objeto de informe o por componente de informe con tipos declarados.

En una aplicación de C++

  • Ha creado un proyecto de C++ administrado, MyProject, en la carpeta predeterminada para el usuario conectado como administrador (C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects).

Se debe agregar Web Forms Viewer y el informe mediante código.

Por objeto de informe:

En una aplicación de Visual Basic o de C#

Cuando se agrega My Report.rpt a MyProject, la clase de informe correspondiente, My_Report, se genera automáticamente en el archivo de código fuente de My Report.rpt. Se puede enlazar My Report.rpt a Windows Forms Viewer asignando el objeto de informe correspondiente a la propiedad ReportSource mediante la vista Código de Windows Form:

En una aplicación de C++

Para los proyectos de C++ no se genera automáticamente ninguna clase de informe. Se puede agregar esta clase a la aplicación de C++ mediante código.

Ejemplo

[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());

Enlazar por componente de informe con tipos declarados

En una aplicación de Visual Basic o de C#

Suponga que ha agregado My Report.rpt como componente con tipos declarados a MyProject.

Puede enlazar el informe como componente a Windows Forms Viewer especificando la propiedad ReportSource mediante la ventana Propiedades o la vista Código de Windows Form:

  • Seleccione Windows Forms Viewer en la vista Diseño de Windows Form. En la ventana Propiedades, seleccione my_Report1 [MyProject.My_Report] en la lista desplegable para la propiedad ReportSource.
  • O bien, en la vista Código de Windows Form, establezca la propiedad ReportSource de Windows Forms Viewer.

En una aplicación de C++

Para los proyectos de C++ no se genera automáticamente ninguna clase de informe. Se puede agregar esta clase a la aplicación de C++ mediante código.

Ejemplo

[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);