Como llamo a un informe hecho con Crystal Rep. con un botón de comando

Maravert
14 de Febrero del 2008
Como llamo a un informe hecho con Crystal Rep. con un botón de comando?

Gracias a todos

Bartolom
14 de Febrero del 2008
Yo lo hago con un formulario donde va el control del reporte y otro desde donde lo llamo. Primero debes agregar al proyecto los componetes y referencias del crystal reports. En componentes es Crystal Reports Viewer y en las referencias Crystal Reports Active x Designer Runtime Library. Luego al formulario donde va el reporte le agregas un Control Crviewer.
Al formulario donde va el botón que llama al reporte, le agregas el siguiente código:
Private Sub botónReporte_Click()
Dim frmRep As New frmReporte
frmRep.Show vbModal
Set frmRep = Nothing
End Sub

donde frmReporte es el nombre del formulario donde colocaste el control viewer.
Ahora, el código del formulario frmreporte sería el siguiente:
Option Explicit

Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report

Private Sub Form_Load()
'Abrir el reporte
Screen.MousePointer = vbHourglass
If TipoReporte = 0 Then
Set crReport = crApp.OpenReport(App.Path & "TuReporte1.rpt", 1)
End If
If TipoReporte = 1 Then
Set crReport = crApp.OpenReport(App.Path & "Tureporte2.rpt", 1)
End If
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
End Sub

Private Sub Form_Resize()
CRViewer.Top = 0
CRViewer.Left = 0
CRViewer.Height = ScaleHeight
CRViewer.Width = ScaleWidth
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set crReport = Nothing
Set crApp = Nothing
End Sub

Fíjate en la variable tipoReporte. Es una variable global creada en un módulo .bas para indicarle al formulario cuál es el reporte que debe abrir. A esta variable le doy un valor según el botón con el que llame al reporte. Para este caso son 2 reportes, agregando más if, puedes hacer todos los que quieras con el mismo formulario.

Saludos!