none
COMO PUEDO HACER PARA AGREGAR UNA IMAGEN Y SU INFORMACIÓN CON EL "OPENFILEDIALOG1" A UN DATAGRIDVIEW

    Pregunta

  • Buenas tardes como ya se explica el titulo me gustaria saber como puedo agregar una imagen de cualquier formato sea "jpg, pdf entre otros" junto con su información a un "datagridview, con solo seleccionar la imagen con el "openfiledialog1" mi bases de datos es "access.mdb" como lo muestro en la imagenes..

    estes en mi "datagridview" y así como se muestra es como quiero insertar la imagen..

    y este otra imagen es como me gustaría que se insertara solo es un ejemplo de internet..


    miércoles, 11 de enero de 2017 17:52

Respuestas

  • Hola como te había dicho tu consulta es algo compleja y tenías que crear columnas en tiempo de diseño y ponerles nombre, yo tengo un datagridview con dos columnas , a una le puse el nombre dni y a otra el nombre imagen (mirar la imagen),también podrías llegar ahi por el indice de la celda

    en mi caso el índice sería 1

     Dim dni As String = DataGridView1.Rows(indice).Cells(1).Value



    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 20:33
  • pero por que le pones el el "0" en 

    DataGridView1.Rows(indice).Cells(0).Value,es decir si ya les estás poniendo nombres a las columnas sigue así y ubícalo por el nombre que le pongas a la columna del dni,

    te sale ese error porque el campo de imagen el de cells(0) aparentemente está en null en la base de datos.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 20:50
  • justamente quieres quitarlo cuando insertes una imagen no?,

    osea tu tienes una tabla de personas en uno de los campos tienes el dni(asumo es la llave primaria), quieres actualizar la fila de acuerdo al dni y que te permita subir una imagen para ese dni


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    miércoles, 11 de enero de 2017 21:01
  • Esta es masomenos la idea

    https://1drv.ms/u/s!Al4mfBnAOsiVgTKOlzmD-T6XVudD


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 21:13

Todas las respuestas

  • Lo que pides es algo complejo acá te adjunto algo de código pero debes considerar que debes hacer algunas cosas mas en el diseño como ponerle nombres a las columnas del datagridview y crear una columna del tipo DataGridViewImageColumn, según entiendo tu requerimiento es que se actualice cada fila del datagriview dependiendo de la imagen que subas.

     Private Sub btnInsertarImagen_Click(sender As Object, e As EventArgs) Handles btnInsertarImagen.Click
            If IsNothing(DataGridView1.CurrentCell) Then
                MessageBox.Show("seleccione una fila")
                Return
            End If
            Dim indice As Int32 = DataGridView1.CurrentCell.RowIndex
            Dim dni As String = DataGridView1.Rows(indice).Cells("DNI").Value
            OpenFileDialog1.Filter = "GIF|*.gif|JPG|*.jpg;*.jpeg|PNG|*.png|TIFF|*.tif;*.tiff"
            Dim result = OpenFileDialog1.ShowDialog()
            If result = DialogResult.Cancel Then
                Return
            End If
            Dim fs As System.IO.FileStream = New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
            Dim br As New System.IO.BinaryReader(fs)
            Dim abImagen As Byte() = New Byte(fs.Length - 1) {}
            br.Read(abImagen, 0, CInt(fs.Length))
            br.Close()
            fs.Close()
            ActualizarImagen(abImagen, dni)
            ListarDataGridView()
        End Sub
        Public Sub ActualizarImagen(ByVal abImagen As Byte(), ByVal dni As String)
            Dim conn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\prueba.accdb;Persist Security Info=False;")
            Dim cmd As New OleDbCommand("update imagenes set imagen=? where DNI=?", conn)
            cmd.Parameters.AddWithValue("?", abImagen)
            cmd.Parameters.AddWithValue("?", dni)
            conn.Open()
            cmd.ExecuteNonQuery()
            conn.Close()
        End Sub
        Public Sub ListarDataGridView()
            Dim conn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\prueba.accdb;Persist Security Info=False;")
            Dim comm As New OleDbCommand("SELECT * FROM IMAGENES ", conn)
            Dim da As New OleDbDataAdapter(comm)
            Dim dt As New DataTable
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Sub


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.



    miércoles, 11 de enero de 2017 20:03
  • Hola Augusto1982

    Muchas gracias por responder puse mi codigo como me indicaste y me sale el siguiente error..

    Como lo puedo solucionar gracias..

    miércoles, 11 de enero de 2017 20:23
  • Hola como te había dicho tu consulta es algo compleja y tenías que crear columnas en tiempo de diseño y ponerles nombre, yo tengo un datagridview con dos columnas , a una le puse el nombre dni y a otra el nombre imagen (mirar la imagen),también podrías llegar ahi por el indice de la celda

    en mi caso el índice sería 1

     Dim dni As String = DataGridView1.Rows(indice).Cells(1).Value



    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 20:33
  • Gracias por contestar Augusto1982 ahora me sale el siguiente error

    y yo lo tengo de esta manera


    miércoles, 11 de enero de 2017 20:46
  • pero por que le pones el el "0" en 

    DataGridView1.Rows(indice).Cells(0).Value,es decir si ya les estás poniendo nombres a las columnas sigue así y ubícalo por el nombre que le pongas a la columna del dni,

    te sale ese error porque el campo de imagen el de cells(0) aparentemente está en null en la base de datos.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 20:50
  • Gracias por contestar Augusto198

    y como puedo quitar el null en la base de datos?

    miércoles, 11 de enero de 2017 20:59
  • justamente quieres quitarlo cuando insertes una imagen no?,

    osea tu tienes una tabla de personas en uno de los campos tienes el dni(asumo es la llave primaria), quieres actualizar la fila de acuerdo al dni y que te permita subir una imagen para ese dni


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    miércoles, 11 de enero de 2017 21:01
  • Augusto1982 SI EXACTAMENTE ASI ES

    Y CON ESO YA PUEDE FUNCIONAR..

    miércoles, 11 de enero de 2017 21:07
  • Esta es masomenos la idea

    https://1drv.ms/u/s!Al4mfBnAOsiVgTKOlzmD-T6XVudD


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    miércoles, 11 de enero de 2017 21:13
  • Aaaaa ok muchas gracias Augusto1982 ya me funciono correctamente el código y es exactamente lo que quería se te agradece mucho y mas que nada por tu paciencia ;)

    un saludo y que tengas un dia agradable..

    miércoles, 11 de enero de 2017 21:19