• Lunes 29 de Abril de 2024, 10:53

Autor Tema:  ¿Como mostrar fotos en crystal report?  (Leído 6770 veces)

venusita

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
¿Como mostrar fotos en crystal report?
« en: Martes 23 de Junio de 2009, 18:44 »
0
Hola que tal, tengo un problema  :oops:  . En mi reporte de crystal report se muestran los datos de los empleados pero la fotografia no puedo lograr mostrarla, el campo de mi tabla lo llamo foto y hay almaceno la ruta donde se guarda la foto tomada. En realidad en la Tabla no guardo la foto solo la ruta.....

Como le puedo hacer para mostrar esas fotografias en el reporte de crystal, utilizo visual basic 2005.

Ya intente de varias formas y de ninguna me la muestra: Por ejemplo  creo y asigno la tabla por codigo
            dt.Columns.Add("cveempl", System.Type.GetType("System.Int32"))
            dt.Columns.Add("foto", System.Type.GetType("System.Byte[]")) .......... etc...
despues con el select para recuperar los empleados voy llenando mi tabla
                drow = dt.NewRow
                drow(0) = dtr_emp("cveempl")
                drow(13) = ImageToByte(System.Drawing.Image.FromFile(strutafoto))

'funcion para convertir a byte la imagen , esta funcion la encontre en este mismo foro, de un usuario que tenia el mismo problema pero nunca postearon nada (nunca le ayudaron).
Public Function ImageToByte(ByVal pImagen As Image) As Byte()
        Dim mImage() As Byte
        Try
            If Not IsNothing(pImagen) Then
                Dim ms As New System.IO.MemoryStream
                pImagen.Save(ms, pImagen.RawFormat)
                mImage = ms.GetBuffer
                ms.Close()
                Return mImage
            End If
        Catch
        End Try
    End Function

de hecho e utilizado otra funcion como esta

fs = New FileStream('aqui coloco la ruta guardada en la tabla, FileMode.Open)
 br = New BinaryReader(fs)
 Dim imgbyte(fs.Length) As Byte
 imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)))
 drow(13) = imgbyte 'este es el campo ya convertido.
  br.Close()
 fs.Close()



Ya en mi reporte de crystal con el databaseexpert cargo la tabla (otra que cree en el dataser del proyecto de visual), para poder acomodar los campos.los CREO igual y en el mismo orden que aqui en el codigo......
YA AL MOMENTO DE LLAMAR AL REPORTE SI ME MUESTRA TODOS LOS DATOS EXCEPTO LA IMAGEN NO ME MARCA ERROR ALGUNO,SOLO NO LA MUESTRA EN LOS REGISTROS EL CAMPO FOTO LO COLOCA ASI.  SYSTEM.BYTE[] , ESO MUESTRA EN EL REPORTE.  de hecho mi campo foto es como si fuera un campo cualquira al jalarlo da la tabla al reporte.. y me he fijado que debe ser como un cuadro.................................AYUDA PLEASEEEEEEEEEEEEEEEEEEE

venusita

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: ¿Como mostrar fotos en crystal report?
« Respuesta #1 en: Miércoles 24 de Junio de 2009, 02:38 »
0
Ya lo solucione gracias  :P , para empezar tuve que realizar otra tabla en el dataset porque la que usaba no se actualizaba y el campo foto que lo ponia tipo dato system.byte lo colocaba como string, en fin. PAra terminar solo tuve agregar esas lineas para guardar la foto... strutafoto es la ruta que tengo guardada en la tabla de la BD, drow("imagen") es el campo donde guardo la foto.
(obvio use mas codigo para agregar todos los demas campos sencillos).

Dim oStream As New System.IO.MemoryStream
  System.Drawing.Image.FromFile(strutafoto).Save(oStream, System.Drawing.Imaging.ImageFormat.Jpeg)
  drow("imagen") = oStream.ToArray()
  oStream.Close()


 :devil:    :good:    :lol:    :comp:   :P   ;)   :rolleyes:  

La clase MemoryStream crea secuencias que utilizan como almacén de respaldo la memoria
en lugar de un disco o una conexión de red. MemoryStream encapsula los datos
almacenados como una matriz de bytes, y es la que se usa para convertir la imagen a bytes.