Conectar un reporte de crystal report 10 desde visual
Ya tengo hecho el reporte en crystal report 10, pero ahora necesito llamarlo desde mi aplicación en Visual Basic 6.0
1 Respuesta
Respuesta de emperador20
1
1
Yo lo que hago es lo siguiente
TE ACLARO, no soy experto en crystal report. mi msn es [email protected]
Capaz que podemos ayudarnos.
Acá te dejo el código.
Es un formulario puse un Crviewer que abarca toda el formulario.
Después de los distintos formularios solo para el reporte que quiero abrir
(Form externo)
Frmreporte.VerReporte ("puntos.rpt")
Formulario del reporte
variables globales del form
Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report
(no te olvides las referencias!!!!!)
Public Sub VerReporte(ReporteNom As String)
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
' On Error GoTo ErrHandler
Screen.MousePointer = vbHourglass
YO TENGO ASIGNADA LA BASE SQL
Set crReport = Nothing
Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
crReport.DiscardSavedData
crReport.EnableParameterPrompting = False
crReport.Application.LogOnServer "pdssql.dll", "NOMBRE DEL SERVIDOR", "NOMBRE DE LA BASE", "SA", "CONTRASEÑA"
For i = 1 To crReport.Database.Tables.Count
crReport.Database.Tables(i).SetLogOnInfo "NOMBRE DEL SERVIDOR", "NOMBRE DE LA BASE", "SA", "CONTRASEÑA"
Next i
mflgContinuar = True
' Parametros del reporte
'ACLARACION IMPORTANTE LOS PARAMETROS SE TIENE QUE LLAMAR IDENTICOS A LOS DEL CRYSTAL, Y LO MAS IMPORTANTE NO ES NECESARIO QUE LOS PASES TODOS,
SOLO LOS QUE NECESITAS!!!!
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "AñoSel"
crParamDef.AddCurrentValue (AñoSel)
Case "TipoSel"
crParamDef.AddCurrentValue (TipoLiqSel)
Case "Messel"
crParamDef.AddCurrentValue (MesSel)
Case "MadreSel"
crParamDef.AddCurrentValue (CodMadreSel)
Case "SubColSel"
crParamDef.AddCurrentValue (SubColSel)
Case "NombreCol"
crParamDef.AddCurrentValue (SubColNombre)
Case "Parametro1"
crParamDef.AddCurrentValue (Parametro1)
Case "NombreMes"
crParamDef.AddCurrentValue (MesSelNombre)
End Select
Next
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = 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
Else
MsgBox Err.Description, vbCritical + vbOKOnly
End If
mflgContinuar = False
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdcerrar_Click()
Unload Frmreporte
End Sub
Espero que te sirva, a mi me anda perfecto y refresca siempre.
TE ACLARO, no soy experto en crystal report. mi msn es [email protected]
Capaz que podemos ayudarnos.
Acá te dejo el código.
Es un formulario puse un Crviewer que abarca toda el formulario.
Después de los distintos formularios solo para el reporte que quiero abrir
(Form externo)
Frmreporte.VerReporte ("puntos.rpt")
Formulario del reporte
variables globales del form
Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report
(no te olvides las referencias!!!!!)
Public Sub VerReporte(ReporteNom As String)
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
' On Error GoTo ErrHandler
Screen.MousePointer = vbHourglass
YO TENGO ASIGNADA LA BASE SQL
Set crReport = Nothing
Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
crReport.DiscardSavedData
crReport.EnableParameterPrompting = False
crReport.Application.LogOnServer "pdssql.dll", "NOMBRE DEL SERVIDOR", "NOMBRE DE LA BASE", "SA", "CONTRASEÑA"
For i = 1 To crReport.Database.Tables.Count
crReport.Database.Tables(i).SetLogOnInfo "NOMBRE DEL SERVIDOR", "NOMBRE DE LA BASE", "SA", "CONTRASEÑA"
Next i
mflgContinuar = True
' Parametros del reporte
'ACLARACION IMPORTANTE LOS PARAMETROS SE TIENE QUE LLAMAR IDENTICOS A LOS DEL CRYSTAL, Y LO MAS IMPORTANTE NO ES NECESARIO QUE LOS PASES TODOS,
SOLO LOS QUE NECESITAS!!!!
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "AñoSel"
crParamDef.AddCurrentValue (AñoSel)
Case "TipoSel"
crParamDef.AddCurrentValue (TipoLiqSel)
Case "Messel"
crParamDef.AddCurrentValue (MesSel)
Case "MadreSel"
crParamDef.AddCurrentValue (CodMadreSel)
Case "SubColSel"
crParamDef.AddCurrentValue (SubColSel)
Case "NombreCol"
crParamDef.AddCurrentValue (SubColNombre)
Case "Parametro1"
crParamDef.AddCurrentValue (Parametro1)
Case "NombreMes"
crParamDef.AddCurrentValue (MesSelNombre)
End Select
Next
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = 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
Else
MsgBox Err.Description, vbCritical + vbOKOnly
End If
mflgContinuar = False
Screen.MousePointer = vbDefault
End Sub
Private Sub cmdcerrar_Click()
Unload Frmreporte
End Sub
Espero que te sirva, a mi me anda perfecto y refresca siempre.
Gracias por tu ayuda, pero me perdí, no sé donde poner la instrucción
Frmreporte.VerReporte ("puntos.rpt")
Ademas desde la ejecución me manda un error en la siguiente línea
Private crApp As New CRAXDRT.Application
que dice:
No se ha definido el tipo definido por "el usuario". Por favor ayudame
Frmreporte.VerReporte ("puntos.rpt")
Ademas desde la ejecución me manda un error en la siguiente línea
Private crApp As New CRAXDRT.Application
que dice:
No se ha definido el tipo definido por "el usuario". Por favor ayudame
Esta linea Frmreporte. VerReporte ("puntos.rpt"), va en donde tienes el formulario donde quieres mostrar el reporte.
Para lo Otro ¿pusiste las referencias al Crystal?
Para lo Otro ¿pusiste las referencias al Crystal?
Entiendo, pero en qué evento, procedimiento o función debo poner la linea FrmReporte.VerReporte ("punto.rpt"), Y acerca de las referencias perdón pero nunca he trabajado con estas, ¿podrías ayudarme?
Si tienes un botón que dice "Imprimir", lo pones ahí adentro, si lo tienes en el load del form también.
Depende de la lógica que utilices en tu programa, lo importante es que esa linea llama al reporte y lo muestra.
Con Respecto a las Referencias,
Si vas a usar un componente externo de cualquier aplicación tienes que referenciarlo para poder usar sus propiedades y métodos, cuando digo aplicaciones externas (excel, word, crystal, datareport, etc.)
En el menu Proyectos, vas a Referencias
Ahí tienes que buscar las que correspondan A LA VERSION DEL CRYSTAL QUE ESTÉS UTILIZANDO.
Sino sabes cuales van pones todas
Lybrari, active, design son principales
Depende de la lógica que utilices en tu programa, lo importante es que esa linea llama al reporte y lo muestra.
Con Respecto a las Referencias,
Si vas a usar un componente externo de cualquier aplicación tienes que referenciarlo para poder usar sus propiedades y métodos, cuando digo aplicaciones externas (excel, word, crystal, datareport, etc.)
En el menu Proyectos, vas a Referencias
Ahí tienes que buscar las que correspondan A LA VERSION DEL CRYSTAL QUE ESTÉS UTILIZANDO.
Sino sabes cuales van pones todas
Lybrari, active, design son principales
Muchas gracias por tu ayuda no sabes cuanto te lo agradezco la verdad que lo que me dijiste ya lo había hecho y que tonta como no se me había ocurrido pensé en otras cosas y no en eso, pero lo hice si parámetros, ahora mi lucha viene usando parámetros.
Ademas cambie una de las líneas de código que me enviaste porque me decía no encontrar archivo y es la siguiente:
Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
entonces la reemplace por:
Set crReport = crApp.OpenReport("D:\reportes\ReporteNom.rpt", 1)
Y ya me funciona. ESTOY FELIZ, FELIZ, FELIZ... GRACIAS.
Ademas cambie una de las líneas de código que me enviaste porque me decía no encontrar archivo y es la siguiente:
Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
entonces la reemplace por:
Set crReport = crApp.OpenReport("D:\reportes\ReporteNom.rpt", 1)
Y ya me funciona. ESTOY FELIZ, FELIZ, FELIZ... GRACIAS.
Me alegro y te repito en el msn somos como una comunidad ya, si quieres [email protected].
Después y disculpa que te corriga
Al "anclar" la ruta en d:, estas obligada a siempre poner la carpeta en d:reportes, el app. Path me salva de hacer eso.
Después y disculpa que te corriga
Al "anclar" la ruta en d:, estas obligada a siempre poner la carpeta en d:reportes, el app. Path me salva de hacer eso.
Disculpa que no te di las gracias anteriormente, pero más vale tarde que nunca.
Experto, no sabes cuanto te agradezco la ayuda que me has ofrecido por este medio, ya que es muy útil para persona que estamos empezando en la rama de programación. Te lo agradezco y felicidades por lo que sabes y por los conocimientos que compartes.
Espero no ser tan cursi, sino te gusta también acláramelo.
Flavia
Experto, no sabes cuanto te agradezco la ayuda que me has ofrecido por este medio, ya que es muy útil para persona que estamos empezando en la rama de programación. Te lo agradezco y felicidades por lo que sabes y por los conocimientos que compartes.
Espero no ser tan cursi, sino te gusta también acláramelo.
Flavia
- Compartir respuesta
- Anónimo
ahora mismo