none
Como ver mi imagen al seleccionar el dgv en el picturebox RRS feed

  • Pregunta

  • todos los datos cargan a cada textbox pero la imagen no y da error todo

    Mi codigo es:

    Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
            If txtNombre.Text.Trim().Length = 0 Or
            txtRuc.Text.Trim().Length = 0 Or
           txtDireccion.Text.Trim().Length = 0 Or
           txtTelefono.Text.Trim().Length = 0 Or
           lblMensaje.Text = "Complete los campos" Then
                Exit Sub
            End If
            Try
                conex.Open()
                Dim textosqIngresar As New String(CType("Insert into Empresa (Nombre,Ruc,Direccion,Telefono,Logo)values(@Nombre,@Ruc,@Direccion,@Telefono,@Logo)", Char()))
                Dim cmda As New SqlCommand(textosqIngresar, conex)
                cmda.Parameters.AddWithValue("@Nombre", Me.txtNombre.Text)
                cmda.Parameters.AddWithValue("@Ruc", Me.txtRuc.Text)
                cmda.Parameters.AddWithValue("@Direccion", Me.txtDireccion.Text)
                cmda.Parameters.AddWithValue("@Telefono", Me.txtTelefono.Text)
                Dim Imag As Byte()
                Imag = Imagen_Bytes(Me.Imagen.Image)
                cmda.Parameters.AddWithValue("@Logo", Imag)
                If conex.State = ConnectionState.Open Then
                    cmda.ExecuteNonQuery()
                End If
                conex.Close()
                lblMensaje.Text = ("Los datos se agregaron")
                Me.datagrid2()
                pre = 0
                Disable()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    
            btnGuardar.Enabled = False
            btnNuevo.Enabled = True
    
            btnEliminar.Enabled = False
            Call Limpiar()
        End Sub

    Guardar la imagen no hay problema

     'convertir binario a imagen
        Private Function Bytes_Imagen(ByVal Imagen As Byte()) As Image
            Try
                'si hay imagen
                If Not Imagen Is Nothing Then
                    'caturar array con memorystream hacia Bin
                    Dim Bin As New MemoryStream(Imagen)
                    'con el método FroStream de Image obtenemos imagen
                    Dim Resultado As Image = Image.FromStream(Bin)
                    'y la retornamos
                    Return Resultado
                Else
                    Return Nothing
                End If
            Catch ex As Exception
                Return Nothing
            End Try
        End Function
    
        'convertir imagen a binario
        Private Function Imagen_Bytes(ByVal Imagen As Image) As Byte()
            'si hay imagen
            If Not Imagen Is Nothing Then
                'variable de datos binarios en stream(flujo)
                Dim Bin As New MemoryStream
                'convertir a bytes
                Imagen.Save(Bin, Imaging.ImageFormat.Jpeg)
                'retorna binario
                Return Bin.GetBuffer
            Else
                Return Nothing
            End If
        End Function

    Private Sub dgvEmpresa_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvEmpresa.CellContentClick
            If e.RowIndex < 0 Then Exit Sub
            txtId.Text = dgvEmpresa.Item(0, e.RowIndex).Value
            txtNombre.Text = dgvEmpresa.Item(1, e.RowIndex).Value
            txtRuc.Text = dgvEmpresa.Item(2, e.RowIndex).Value
            txtDireccion.Text = dgvEmpresa.Item(3, e.RowIndex).Value
            txtTelefono.Text = dgvEmpresa.Item(4, e.RowIndex).Value
            
            
        End Sub

    Aqui me falta añadir la parte que haga la conversion para la Imagen pero no me sale, segun el codigo que estoy mostrando cual seria la linea que falta para mi caso.

    en mi tabla sql el tipo de datos de la columna Logo es image

    Gracias

    jueves, 5 de mayo de 2016 5:14

Respuestas

  • Hola,

    No muestras el código de como estás listando los datos al DataGridView, si estás listando las imágenes eb Byte(), tienes que castear el valor de la columna para poder enviar al método que te convertirá en imagen.

              If Not IsDBNull(dgvEmpresa.Item(5, e.RowIndex).Value) Then
                PictureBox1.Image = Bytes_Imagen(CType(dgvEmpresa.Item(5, e.RowIndex).Value, Byte()))
            End If

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta AcuTau jueves, 5 de mayo de 2016 11:28
    jueves, 5 de mayo de 2016 5:33

Todas las respuestas

  • Hola,

    No muestras el código de como estás listando los datos al DataGridView, si estás listando las imágenes eb Byte(), tienes que castear el valor de la columna para poder enviar al método que te convertirá en imagen.

              If Not IsDBNull(dgvEmpresa.Item(5, e.RowIndex).Value) Then
                PictureBox1.Image = Bytes_Imagen(CType(dgvEmpresa.Item(5, e.RowIndex).Value, Byte()))
            End If

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta AcuTau jueves, 5 de mayo de 2016 11:28
    jueves, 5 de mayo de 2016 5:33
  • Es justo esa linea que no me salia habia echo algo similar pero los parentesis mal. Muchas gracias.

    Ya que eres de Peru como yo puedas ayudarme con esto-

    https://social.msdn.microsoft.com/Forums/es-ES/810c1295-ab45-4395-8ee0-623f0a958db0/validar-rucperu-y-emails?forum=vbes

    tengo un texto txtruc habia seguido de un foro un codigo pero al momento de escribir el segundo digito error tienes algun otro metodo para eso.

    Gracias 

    Piura - Peru

    jueves, 5 de mayo de 2016 11:31