Solución a Imagenes Dínamicas con Ruta de la Foto
Publicado por Daniel Pro (15 intervenciones) el 28/07/2006 05:53:44
Ante todo que DIOS los bendiga a todos y Saludos desde Guanare - Venezuela.
Esta es la Solución a Imagenes Dínamicas en los reportes solo guardando la Ruta de la Foto en un campo en la Base de Datos, explicare detalladamente como lo realize:
-Diseñé una Base de Datos sencilla en Access con una tabla que contiene los siguientes campos: Cedula, Apellidos, Nombres y un campo Ruta donde almaceno la ruta donde se encuentra el archivo de imagen, por ejemplo en este campo se guardaria algo como esto C:\MiFoto.jpg sin incluir dobles comillas ni al principio ni al final.
-Luego diseñé un reporte dentro de Visual Basic usando una conexion Ado con el Asistente de Informes de Crystal Report y este reporte lo muestra al ejecutar el programa un CrViewer, el reporte posee 5 secciones de la siguiente manera:
Sección 1: Encabezado del Informe.
Sección 2: Encabezado de página.
Sección 3: Detalles.
Sección 4: Pie del Informe.
Sección 5: Pie de Página.
-En la Sección 3 agrege los campos Cedula, Apellidos, Nombres, Ruta y LO MÁS IMPORTANTE inserte manualmente una imagen en esta sección al lado del campo ruta dandole un tamaño apropiado porque si se inserta una imagen muy grande el reporte tendra mal aspecto, esta imagen es un Objeto ICROleObject y por defecto Visual Basic le asigna como nombre Imagen1 ya que es la primera imagen en este reporte.
-Finalmente solo necesite de 3 Líneas de Programación para que esta imagen varie segun lo que tiene el campo Ruta, prestar mucha atención a lo siguiente: le di Doble click a la Sección 3 del Repote y allí agregre este código:
Private Sub Sección3_Format(ByVal pFormattingInfo As Object)
Dim Archivo As StdPicture
Set Archivo = LoadPicture(Campo4.Value) 'Campo4 es el campo Ruta
Set Imagen1.FormattedPicture = Archivo
End Sub
Y en el formulario que muestra el Reporte con el CrViewer lo siguiente:
Dim Report As New CrystalReport1'CrystalReport1 es el Reporte en Visual Basic
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
CRViewer1.Zoom (100)
End Sub
Ejecuta el formulario y listo!!!! Espero haber sido bastante explicito, no lo he probado aun pero me imagino que funcionara igual si la Base de Datos esta en MySql, SqlServer u otra, utilizo Visual Basic 6.0 y Crystal Report 8.0, esto hasta ahora habia sido un gran problema al cual no se le encontraba solución ni en Internet (eso lo digo porque vi muchas preguntas acerca de esto en varios foros y quizas estoy equivocado pero no consegui respuestas) pero gracias a DIOS ya esta solucionado, cualquier duda continuen escribiendo en esta nota que estare pendiente y si les sirve o averiguan mejoras tambien escribanme por aqui o a mi correo indicado en el titular de la nota arriba.
Esta es la Solución a Imagenes Dínamicas en los reportes solo guardando la Ruta de la Foto en un campo en la Base de Datos, explicare detalladamente como lo realize:
-Diseñé una Base de Datos sencilla en Access con una tabla que contiene los siguientes campos: Cedula, Apellidos, Nombres y un campo Ruta donde almaceno la ruta donde se encuentra el archivo de imagen, por ejemplo en este campo se guardaria algo como esto C:\MiFoto.jpg sin incluir dobles comillas ni al principio ni al final.
-Luego diseñé un reporte dentro de Visual Basic usando una conexion Ado con el Asistente de Informes de Crystal Report y este reporte lo muestra al ejecutar el programa un CrViewer, el reporte posee 5 secciones de la siguiente manera:
Sección 1: Encabezado del Informe.
Sección 2: Encabezado de página.
Sección 3: Detalles.
Sección 4: Pie del Informe.
Sección 5: Pie de Página.
-En la Sección 3 agrege los campos Cedula, Apellidos, Nombres, Ruta y LO MÁS IMPORTANTE inserte manualmente una imagen en esta sección al lado del campo ruta dandole un tamaño apropiado porque si se inserta una imagen muy grande el reporte tendra mal aspecto, esta imagen es un Objeto ICROleObject y por defecto Visual Basic le asigna como nombre Imagen1 ya que es la primera imagen en este reporte.
-Finalmente solo necesite de 3 Líneas de Programación para que esta imagen varie segun lo que tiene el campo Ruta, prestar mucha atención a lo siguiente: le di Doble click a la Sección 3 del Repote y allí agregre este código:
Private Sub Sección3_Format(ByVal pFormattingInfo As Object)
Dim Archivo As StdPicture
Set Archivo = LoadPicture(Campo4.Value) 'Campo4 es el campo Ruta
Set Imagen1.FormattedPicture = Archivo
End Sub
Y en el formulario que muestra el Reporte con el CrViewer lo siguiente:
Dim Report As New CrystalReport1'CrystalReport1 es el Reporte en Visual Basic
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
CRViewer1.Zoom (100)
End Sub
Ejecuta el formulario y listo!!!! Espero haber sido bastante explicito, no lo he probado aun pero me imagino que funcionara igual si la Base de Datos esta en MySql, SqlServer u otra, utilizo Visual Basic 6.0 y Crystal Report 8.0, esto hasta ahora habia sido un gran problema al cual no se le encontraba solución ni en Internet (eso lo digo porque vi muchas preguntas acerca de esto en varios foros y quizas estoy equivocado pero no consegui respuestas) pero gracias a DIOS ya esta solucionado, cualquier duda continuen escribiendo en esta nota que estare pendiente y si les sirve o averiguan mejoras tambien escribanme por aqui o a mi correo indicado en el titular de la nota arriba.
Valora esta pregunta
0