Crystal Report - IMPRIMIR informe SIN necesidad de VISUALIZARLO

 
Vista:

IMPRIMIR informe SIN necesidad de VISUALIZARLO

Publicado por eduardo (5 intervenciones) el 31/10/2005 17:44:39
Os comento dos problemas que me urgen muchisimo y que no he consiguido resolver.

Trabajando con Visual Basic 6.0 y Crystal Report 8:

1.Quiero imprimir un informe de CR sin necesidad de previsualizarlo.
2.Quiero imprimir un informe varias veces con distintos parametros con un bucle en el formulario que contiene el CRViewer.

Comentar que:
En un formulario incrusto un objeto de CRViewer.

para visualizar el informe realizo las siguientes intrucciones

....
CRV_infPartes_JE.ReportSource = crReport
CRV_infPartes_JE.DisplayGroupTree = False
CRV_infPartes_JE.ViewReport
CRV_infPartes_JE.PrintReport
.....

Problemas con los que me he me he encontrado:

1.Quiero imprimir un informe de CR sin necesidad de previsualizarlo.

Si en el codigo anterior ELIMINO la linea CRV_infPartes_JE.ViewReport cuando hace
CRV_infPartes_JE.PrintReport NO HACE absolutamente nada.



2.Quiero imprimir un informe varias veces. Para ello utilizo un bucle, y en cada vuelta del bucle le paso
distintos parametros, con lo cual el resultado del bucle es distinto.

Resultado: No obtengo ningun resultado porque el programa se me queda bloqueado.


do while( )
...
...

CRV_infPartes_JE.ReportSource = crReport
CRV_infPartes_JE.DisplayGroupTree = False
CRV_infPartes_JE.ViewReport
CRV_infPartes_JE.PrintReport

Loop


Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:IMPRIMIR informe SIN necesidad de VISUALIZARLO

Publicado por Belén (37 intervenciones) el 02/11/2005 10:27:06
Yo también estuve mucho tiempo con este problema pero al final di con la solución..

Prueba con

crReport.PrintOut False

Espero que te funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Si funciona,,, pero........???

Publicado por eduardo (5 intervenciones) el 02/11/2005 12:01:53
Muchas Gracias Belen,

Belen funciona perfectamente, pero tengo el siguiente problema.

Dentro de un formulario tengo el CRViewer.

Al cargar el formulario llega un momento que pongo las instrucciones:

crReport.PrintOut False
CRV_infParte_Distrib.ReportSource = crReport
CRV_infParte_Distrib.DisplayGroupTree = False

Imprime directamente pero el formulario donde tengo el objeto CRViewer permanece cargado. Y lo que quiero es descargarlo de memoria, pero NO lo descarga:

Set crReport = Nothing
Set crApp = Nothing

unload frmInfPartes_Distrib ''' NO DESCARGA EL FORMULARIO

¿Por que puede ser que no descargue el formulario????

Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si funciona,,, pero........???

Publicado por Belé (37 intervenciones) el 02/11/2005 17:46:44
Yo lo pongo directamente asi... (antes le he pasado los parametros al reporte)

crReport.PrintOut False
Set crpParamdefs = Nothing
Set crpParamdef = Nothing

Omite

CRV_infParte_Distrib.ReportSource = crReport
CRV_infParte_Distrib.DisplayGroupTree = False

Espero que te ayude.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si funciona,,, pero........???

Publicado por eduardo (5 intervenciones) el 02/11/2005 18:08:31
Muchas Gracias Belen pero te comento el problema que lo continuo teniendo, a ver si me puedes hechar una mano:

El informe se imprime sin visualizar ----->CORRECTO ----> es lo que queria

Pero el formulario que muestra el informe -> sigue apareciendo (vacio pero sigue apareciendo) y

No puedo descargarlo.

¿Como puedo hacer para que el formulario que muestra el informe no aparezca???????


Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si funciona,,, pero........???

Publicado por Belén (37 intervenciones) el 02/11/2005 18:30:20
Creo entenderte..... puede ser que estes llamando al crviewer y no quieras???

Mira te pongo un ejemplo de como lo tengo yo....

Private Sub PrintReport(strReport As String, bPreview As Boolean)

Dim result As Integer
Dim crpParamdefs As CRAXDRT.ParameterFieldDefinitions
Dim crpParamdef As CRAXDRT.ParameterFieldDefinition
Dim streport As String
Dim strDate As String
Dim rst As Recordset

Dim frmRep As New frmreporte

Text1.Text = strReport

If bPreview Then ' Si es previsualización llamo al crviewer
frmRep.Show vbModal
Set frmRep = Nothing

Else

On Error GoTo errhandler
streport = App.Path & "\rpt\" & Text1.Text
Set crReport = crApp.OpenReport(App.Path & "\rpt\" & Text1.Text, 1)

crReport.EnableParameterPrompting = False


Set crpParamdefs = crReport.ParameterFields

For Each crpParamdef In crpParamdefs
With crpParamdef

Select Case .ParameterFieldName
Case "FechaParte"
crpParamdef.AddCurrentValue (strDate & vbNullChar)
Case "FechaImpresion"
crpParamdef.AddCurrentValue (dtFechaImpresion.Value & vbNullChar)
Case "FechaInicial"
crpParamdef.AddCurrentValue (dtIntervaloInicial.Value)

Case "FechaFinal"
crpParamdef.AddCurrentValue (dtIntervaloFinal.Value)

Case "Param1"
If Right(streport, 14) = "Accidentes.rpt" Or Right(streport, 17) = "AccidentesCar.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.MortalesCheck.Value & frmInformes.GravesCheck.Value _
& frmInformes.GravesCheck.Value & frmInformes.LevesCheck.Value _
& frmInformes.IlesosCheck.Value)
Else
crpParamdef.AddCurrentValue (Val(OrdenacionCombo.ListIndex + 1) & vbNullChar)
End If
Case "Param2"
crpParamdef.AddCurrentValue (AgrupaciónText.Text & vbNullChar)
Case "Capitulo"
If Right(streport, 26) = "MaterialesListadoFecha.rpt" Then
crpParamdef.AddCurrentValue (strCapitulos & vbNullChar)
Else
crpParamdef.AddCurrentValue (GrupoCombo.Text & vbNullChar)
End If
Case "Operacion"
If Right(streport, 16) = "OperacionCar.rpt" Or Right(streport, 24) = "OperacionDescripcion.rpt" _
Or Right(streport, 20) = "OperacionCarRend.rpt" _
Then
dbTeravial.ExecuteSelect rst, "TIPOP", "CM_OP", " CI_OP=" & frmInformes.cmoOperaciones.ItemData(frmInformes.cmoOperaciones.ListIndex)
crpParamdef.AddCurrentValue (rst("CM_OP") & vbNullChar)
End If
Case "Grupo"
If Right(streport, 14) = "PersonalOp.rpt" Or _
Right(streport, 17) = "PersonalOpThr.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.ItemData(frmInformes.GrupoCombo.ListIndex))
End If

If Right(streport, 18) = "CategoriaGrupo.rpt" Or _
Right(streport, 21) = "CategoriaGrupoThr.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.ItemData(frmInformes.GrupoCombo.ListIndex))
End If
If Right(streport, 19) = "MaquinariaGrupo.rpt" Or _
Right(streport, 22) = "MaquinariaGrupoThr.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.ItemData(frmInformes.GrupoCombo.ListIndex))
End If

Case Else
Call infPanel.InformationOutput(vbCritical, _
"Error en informe. Nombre de parámetro desconocido")
Exit Sub
End Select

End With
Next

If semaf = False Then
crReport.PrintOut False
semaf = True
End If

Set crReport = Nothing
Set crpParamdefs = Nothing
Set crpParamdef = Nothing
Exit Sub

errhandler:
'If Err.Number = -2147206461 Then
MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _
vbCritical + vbOKOnly
' End If

Screen.MousePointer = vbDefault
End If

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar