none
mostrar imagen en control picturebox desde tabla RRS feed

  • Pregunta

  • Buenas a todos,necesito ayuda en un sistema que estoy haciendo en visual.net 2008 con sql server 2005,necesito crear un formulario de consulta donde busco al cliente por codigo o por nombres y me muestre todos los datos del cliente(en un datagridview) y al dar click en una fila me muestre los datos en texbox incluido su foto(control picturebox).la tabla esta creada faltaria agregarle el campo foto(creo q de tipo image como me comentaron) lo demas falta...crear proc almac creo.gracias de antemano..como haria para recuperar esos datos desde la tabla.gracias de antemano
    • Cambiado Enrique M. Montejo miércoles, 14 de septiembre de 2011 15:33 acceso a datos (De:Lenguaje VB.NET)
    miércoles, 23 de junio de 2010 0:08

Todas las respuestas

  • hola

    me base en el ejemplo de este link

    Sending/Receiving PictureBox Image in C# To/From Microsoft SQL SERVER

    ejo el codigo en vb.net, pero le realice algunos cambios

    para recuperar la imagen:

    Private Sub button2_Click(sender As Object, e As EventArgs)
        Dim connect As New SqlConnection("Server=.;database=PictureDb;integrated security=true")
        Dim command As New SqlCommand("select fldPic from tblUsers where fldCode=1", connect)

        Dim dp As New SqlDataAdapter(command)
        Dim dt As New DataTable
        dp.Fill(dt)
       
        Dim myRow As DataRow = dt.Rows(0)
        Dim MyData As Byte() = DirectCast(myRow("fldPic"), Byte())

        pictureBox2.Image = Image.FromStream(stream)
       
    End Sub

    aqui quite el dataset y puse un simple datatable, es ams simple de utilizar

     

    para grabar la imagen en la tabla:

    Private Sub button1_Click(sender As Object, e As EventArgs)

        Dim con As New SqlConnection("Server=.;database=PictureDb;integrated security=true")

        Dim com As New SqlCommand("insert into tblUsers (fldCode,fldPic) values(1,@Pic)", con)


        Dim stream As New MemoryStream()

        pictureBox1.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg)


        Dim pic As Byte() = stream.ToArray()

        com.Parameters.AddWithValue("@Pic", pic)
        Try
            con.Open()
            com.ExecuteNonQuery()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            con.Close()
        End Try
    End Sub

    espero sea de utilidad

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 23 de junio de 2010 3:19
  • Hola:
    Cuando tengas los datos cargados en el DataGridView (dgrDatos).


        Private Sub dgrDatos_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrDatos.CellContentClick
            If Me.dgrDatos.RowCount = 0 Then
                Return
            End If
            Dim loFila As DataGridViewRow = Me.dgrDatos.CurrentRow()
            Me.txtNombre.Text = loFila.Cells("NOMBRE").Value.ToString()
            'LOS DEMAS CAMPOS
            lP_MostrarFoto(loFila.Cells("ID_CLIENTE").Value.ToString())
        End Sub


        Private Sub lP_MostrarFoto(ByVal vsCliente As String)
            Try
                Dim lbHayFoto As Boolean = False
                ' crear sentencia, conexión y comando para obtener la imagen de la base de datos
                Dim lsQuery As String = "Select FOTO From TUTABLA Where ID_CLIENTE=" & vsCliente
                Using loConexion As New SqlConnection(Comun.msCadenaSQL)
                    Dim drFotos As SqlDataReader
                    Dim oMemoryStream As MemoryStream
                    Dim bmpImagen As Bitmap
                    ' crear comando
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        loConexion.Open()
                        drFotos = loComando.ExecuteReader(CommandBehavior.SingleRow)
                        drFotos.Read()
                        'picFoto es un PictureBox
                        If drFotos.IsDBNull(0) = True Then
                            Me.picFoto.Image = Nothing 
                        Else
                            ' recuperar datos binarios de la foto
                            maBytImagen = CType(drFotos("Foto"), Byte())
                            ' crear un objeto stream en memoria conteniendo los datos de la imagen
                            oMemoryStream = New MemoryStream(maBytImagen)
                            ' crear un bitmap con el stream y visualizar la imagen en un control PictureBox
                            bmpImagen = New Bitmap(oMemoryStream)
                            Me.picFoto.Image = bmpImagen
                            lbHayFoto = True
                        End If
                    End Using
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message, "lP_MostrarFoto", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub

    Espero que te sirva
    Un saludo desde Bilbo
    Carlos

    miércoles, 23 de junio de 2010 7:36
  • Hola

     

    ¿Fue posible solucionar su problema?

     

    ¡Saludos!


    Rafael Fagundes - Marque la respuesta como correcta si te ha sido de utilidad!
    miércoles, 30 de junio de 2010 12:58