¿Alguien sabría como hacer para cargar una imagen dinámicamente en cristal reports? El parámetro (la ruta en donde se encuentra la foto) se lo paso desde visual basic.
Estoy usando Visual Basic 6 y Crystal Reports 9
Desde ya muchas gracias

| |||
Cargar Imagen Crystal y Visual Basic Hola a todos. ¿Alguien sabría como hacer para cargar una imagen dinámicamente en cristal reports? El parámetro (la ruta en donde se encuentra la foto) se lo paso desde visual basic. Estoy usando Visual Basic 6 y Crystal Reports 9 Desde ya muchas gracias ![]() |
| |||
Re: Cargar Imagen Crystal y Visual Basic Hola de nuevo.Ya pude solucionarlo. Es algo que me costó sus buenas horas y es por eso que quiero compartir el código con uds. Quizás a alguien pueda servirle. Saludos !! ![]() 'Variables globales del formulario. 'Cabe mencionar que en el formulario se deben declarar 'tantas variables como parámetros tenga el reporte, 'además de las tres primeras variables, que no deberán 'faltar independientemente del número de parámetros. Private crApp As New CRAXDRT.Application 'Objeto que representa una instancia del programa Crystal Reports. Private crReport As New CRAXDRT.Report 'Objeto que representa el reporte que deseamos abrir. Private mflgContinuar As Boolean 'Variable booleana que nos indica si hubo error al tratar de abrir el archivo RPT. Private paramEmpresa As String 'Variable entera que almacenará el valor que se le pasará al Parametro1 del reporte. Private sAfiliado, sTipoDoc, sNumeroDoc, sNroAfiliado, sFoto As String 'esto lo agregue de una pagina que muestra como cargar imagenes. Dim WithEvents Seccion As CRAXDRT.Section 'Procedimientos del formulario. Public Sub PasarParametros(sParam1 As String) 'Este procedimiento sirve para mandar desde el formulario de parámetros los valores que tendrán los parámetros del reporte. 'Las variables a nivel de formulario sirven para guardar estos valores mientras se abre el reporte. paramEmpresa = sParam1 'mlngParametro2 = lParam2 End Sub Public Sub PasarParametrosCarnet(sPNom, sPApe, sPTD, sPNroDoc, sPNroAf, sPFoto) sAfiliado = sPApe & ", " & sPNom sTipoDoc = sPTD sNumeroDoc = sPNroDoc sNroAfiliado = sPNroAf sFoto = sPFoto End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 27 Then modFormulario.cerrarForm Me End Sub ''Eventos del formulario. Private Sub Form_Resize() 'En este evento hacemos que el control crViewer ocupe toda el área del formulario en el que se encuentra crVer.Top = 0 crVer.Left = 0 crVer.Height = ScaleHeight crVer.Width = ScaleWidth End Sub Private Sub Form_Unload(Cancel As Integer) Set crReport = Nothing Set crApp = Nothing End Sub Private Sub Form_Load() Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions Dim crParamDef As CRAXDRT.ParameterFieldDefinition Dim Cadena As String On Error GoTo ErrHandler 'Abrir el reporte Screen.MousePointer = vbHourglass mflgContinuar = True Select Case GlobalReporte Case "AfiliadoEmpresa" Cadena = App.Path & "\reportes\rptAfiliadosEmpresa.rpt" Set crReport = crApp.OpenReport(Cadena, 1) ' armar la formula en el caso de ser necesario 'Call ArmarFormula ' Parametros del reporte Set crParamDefs = crReport.ParameterFields For Each crParamDef In crParamDefs Select Case crParamDef.ParameterFieldName Case "paramEmpresa" crParamDef.AddCurrentValue (paramEmpresa) End Select Next Case "Carnet" Cadena = App.Path & "\reportes\rptCarnet.rpt" Set crReport = crApp.OpenReport(Cadena, 1) 'Crea la seccion y asigna la 3.- detalle, 'el nothing es por si se da click en el boton mas de una vez Set Seccion = Nothing Set Seccion = crReport.Sections(1) Set crParamDefs = crReport.ParameterFields For Each crParamDef In crParamDefs Select Case crParamDef.ParameterFieldName Case "paramAfiliado" crParamDef.AddCurrentValue (sAfiliado) Case "paramTipodoc" crParamDef.AddCurrentValue (sTipoDoc) Case "paramNumerodoc" crParamDef.AddCurrentValue (sNumeroDoc) Case "paramNroAf" crParamDef.AddCurrentValue (sNroAfiliado) 'Case "paramFoto" ' crParamDef.AddCurrentValue (sFoto) End Select Next End Select 'Ahora sí el reporte está listo para ser desplegado en el crViewer. 'Al asignar la variable crReport al miembro ReportSource del control crViewer estamos propiamente asignando el reporte al control, pero no el reporte no será visible hasta que se mande llamar al método ViewReport del crViewer. crVer.ReportSource = crReport crVer.DisplayGroupTree = False crVer.ViewReport crVer.EnableRefreshButton = False Screen.MousePointer = vbDefault 'If gbVisualizarReporte Then ' visualizar o imprimir directamente ' crViewer.DisplayGroupTree = False ' crViewer.ViewReport ' mflgContinuar = True 'Else ' crReport.PrintOut ' mflgContinuar = False 'End If 'End Select 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 Seccion_format(ByVal pFormattingInfo As Object) 'El evento se dispara cada vez que se formatea la seccion 'Como es seccion de detalle, el evento se dispara por cada registro With Seccion 'Obtiene el ID del registro desde el campo "Id" en el reporte, ' y filtra el Recordset para colocar el cursor en el registro 'Recset.Filter = "ID=" & .ReportObjects("Field1").Value 'Carga la imagen, obteniendo la ruta desde el Recordset Set Seccion.ReportObjects("foto").FormattedPicture = _ LoadPicture(sFoto) End With 'Reestablece el filtro del Recordset 'Recset.Filter = adFilterNone End Sub |