none
Recuperar imagen de una base de datos MS Access RRS feed

  • Pregunta

  • Buenas noches, camaradas, tengo un problema al querer recuperar una imagen desde una base de datos de Microsoft Access desde un programa WinForm.

    En la base de datos las imagenes están adjuntas como un objeto OLE y son .bmp

    Y el código que yo tengo es el siguiente:

    Dim Conexion As New OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database.accdb;Persist Security Info=False;")
        Public Function ByteArrayToImage(ByVal byteArrayIn As Byte()) As Image
            Dim ms As New MemoryStream(byteArrayIn)
            Return Image.FromStream(ms)
        End Function
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim CMD As New OleDb.OleDbCommand("SELECT * From Empleados Where Cargo='" & Cargos.SelectedItem & "'", Conexion)
            Dim DR As OleDb.OleDbDataReader
            Conexion.Open()
            DR = CMD.ExecuteReader
            If DR.Read Then
                Nombres.Text = DR(1)
                Apellidos.Text = DR(2)
                Cedula.Text = DR(3)
                Telefono.Text = DR(4)
                email.Text = DR(5)
                Dim img() As Byte = DirectCast(DR(6), Byte())
                FotoEmpleado.Image = ByteArrayToImage(img)
            End If
            Conexion.Close()
        End Sub

    Me arroja un error en "Return Image.FromStream(ms)"

    Uso Windows seven y ocupo el Microsoft Office 2010

    ¡Saludos y gracias por su colaboración!

    • Cambiado Enrique M. Montejo jueves, 25 de febrero de 2016 12:53 Pregunta relacionada con el acceso a datos con Access.
    viernes, 14 de diciembre de 2012 23:57

Todas las respuestas

  • Me arroja un error en "Return Image.FromStream(ms)"

    y se podrias saber cual es el error ?

    ademas prodrias usar el

    File.WriteAllBytes()

    y grabar en un archivo la imagen para validar si es correcto lo que recuperas de la db, quizas el campo este en null para ese registro por eso falle

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 15 de diciembre de 2012 0:40
  • Disculpa, el error es: "El parámetro no es válido." En el argumento.

    ¿Qué es lo qué debo hacer con File.WriteAllBytes()?

    sábado, 15 de diciembre de 2012 0:49
  • ese campo de imagen permite null ?

    porque quizas estes recuperando un null y eso produce el fallo

    si haces

    If DR(6) IsNot DbNull.Value Then
    
         Dim img() As Byte = DirectCast(DR(6), Byte())            
    
         FotoEmpleado.Image = ByteArrayToImage(img)
    
    End If

    que sucede

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Ricardo Russo lunes, 17 de diciembre de 2012 15:40
    • Desmarcado como respuesta Enrique M. Montejo jueves, 25 de febrero de 2016 12:52
    sábado, 15 de diciembre de 2012 1:17