
05/07/2007, 02:03
|
| | Fecha de Ingreso: julio-2007
Mensajes: 1
Antigüedad: 17 años, 9 meses Puntos: 0 | |
Re: problema con crystal report Hola. Como estas?
creo que esto te ayudara Este codigo (VB6) lo coloco donde selecciono los parametros que quiero que me imprima el reporte:
Declaro :
'Declaración del objeto Aplicación para abrir el reporte
Dim crAplicacion As New CRAXDRT.Application
'Declaración del objeto Reporte
Public crReporte As CRAXDRT.Report
'Indica el error al abrir un reporte
Private mflgContinuar As Boolean luego una vez seleccionada los parametros que quiero que me muestre el reporte:
Private Sub cmdReporte_Click()
If Lista2.ListCount > 0 Then ' esta lista me muestra lo que quiero ver en el reporte
Set crAplicacion = CreateObject("CrystalRuntime.Application")
On Error GoTo ErrHandler
'Abrir el reporte
Screen.MousePointer = vbHourglass
mflgContinuar = True
Set crReporte = crAplicacion.OpenReport(App.Path & "\Reportes\Usuarios del Sistema.rpt", 1) ' direccion del reporte, los almaceno en una carpeta
' preparar para asignar restrinciones
With crReporte
.DiscardSavedData
.ParameterFields(1).ClearCurrentValueAndRange
End With
' asignar restrinciones
If Lista2.ListCount > 1 Then ' si la lista pose mas de un usuario en este caso
crReporte.ParameterFields(1).EnableMultipleValues = True
For i = 0 To Lista2.ListCount - 1
crReporte.ParameterFields(1).AddCurrentValue Left(Lista2.List(i), (InStr(1, Lista2.List(i), " ", 1)) - 1) ' aqui puede colocar el parametro que quieres ver en el reporte
Next i
Else ' si solo es un parametro que quieres ver
crReporte.ParameterFields(1).EnableMultipleValues = False
crReporte.ParameterFields(1).AddCurrentValue Left(Lista2.List(0), (InStr(1, Lista2.List(0), " ", 1)) - 1)
End If
' llamar al preview del reporte
frmCrystalReport.CogeReport = crReporte
frmCrystalReport.Caption = "Reporte : Usuarios del Sistema"
frmCrystalReport.Show
Screen.MousePointer = vbDefault
Else
MsgBox "Debe Seleccionar un Item del Listado", vbInformation, "SoftCtrlObra - Reporte de Usuarios del Sistema"
End If
'Rutina de Error
ErrHandler:
If Err.Number <> 0 Then
If Err.Number = -2147206461 Then
MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", vbCritical + vbOKOnly, "SoftCtrlObra - Reporte de Usuarios del Sistema"
Else 'aqui registro los errores en un txt, para ubicar de forma rapid adonde se encuentra el error
MsgBox Chr(13) & " Error : " & Err.Number & Chr(13) & " Info : " & Err.Description, vbCritical, "SoftCtrlObra - Error Crítico"
registrar_error Me.Name & "(cmdReporte ) Error : " & Err.Number & " Info : " & Err.Description
frameUsuario.Enabled = False
cmdReporte.Enabled = False
End If
End If
Screen.MousePointer = vbDefault
End Sub en la forma donde previsualizo el reporte coloco este codigo y todo funciona bien:
Dim vReport As New CRAXDRT.Report
Property Let CogeReport(rpt As CRAXDRT.Report)
Set vReport = rpt
End Property
Private Sub cmdConfigI_Click()
vReport.PaperSize = crPaperLetter
vReport.PrinterSetup (0)
CRViewer9.ViewReport
End Sub
Private Sub Form_Load()
Dim vReport As New CRAXDRT.Report
Property Let CogeReport(rpt As CRAXDRT.Report)
Set vReport = rpt
End Property
Private Sub cmdConfigI_Click() ' boton que llama configuracion de la impresora
vReport.PaperSize = crPaperLetter
vReport.PrinterSetup (0)
CRViewer9.ViewReport
End Sub
Private Sub Form_Load()
'CentrarFormulario frmCrystalReport
Centrar_Formulario frmCrystalReport, 800
Screen.MousePointer = vbHourglass
'Asigne el objeto report como fuente del reporte para el Crystal Report Viewer
CRViewer9.ReportSource = vReport
CRViewer9.Refresh
' Mostrar el reporte
CRViewer9.ViewReport
CRViewer9.Zoom (100)
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer9.Top = 0
CRViewer9.Left = 0
CRViewer9.Height = ScaleHeight
CRViewer9.Width = ScaleWidth
End Sub
Espero que te ayude.... ^_^ |