jueves, 6 de febrero de 2020

Enviar campo imagen a sql server desde vb.net / Send image field to sql server from vb.net

Para evitar el error al convertir string a byte[] por la manipulacion de imagenes en formulario visual studio.net con Picturebox y enviarlo a sql server campo tambien image

- Se debe convertir a byte. En este ejmplo en el codigo del BtnActualizar_Click. se realiza.
- La función que ejecuta el store procedure,se debe modificar para que reciba un objeto y no solo un  estring. convertida en publica el acceso.


 Private Sub BtnActualizar_Click(sender As Object, e As EventArgs) Handles BtnActualizar.Click
        Try

            Dim VId_AplicacionTextBox As String
            Dim Vcbidmodulo As Integer
            Dim VtbCodigoAplicacion As String
            Dim VtbNombAplicacion As String
            Dim VtbArchiEjecut As String
            Dim VtbNombImg As String
            Dim VCBEdoActivo As Boolean
            Dim VtbVersion As String
            'Dim VimagenAplic As Image
            Dim ImgByte As Byte()
            If Id_AplicaciónTextBox.Text <> "" Then
                If tbCodigoAplicacion.Text.Equals("") = False And tbNombAplicacion.Text.Equals("") = False Then
                    VId_AplicacionTextBox = Id_AplicaciónTextBox.Text
                    Vcbidmodulo = GLUmodulos.EditValue
                    VtbCodigoAplicacion = tbCodigoAplicacion.Text
                    VtbNombAplicacion = tbNombAplicacion.Text
                    VtbArchiEjecut = tbArchiEjecut.Text
                    VtbNombImg = tbNombImg.Text
                    VCBEdoActivo = CBEdoActivo.Text
                    VtbVersion = tbVersion.Text
                    'VimagenAplic = PictureBox1.Image
                    Me.PictureBox1.Image.Save(ms, Me.PictureBox1.Image.RawFormat)
                    ImgByte = ms.GetBuffer
                    ms.Close()
                    ConexionSQL.Ejecutar("SP_SISTEMA_APLICACIONES_ABMTABLE_APTUALIZAR", VId_AplicacionTextBox,
                                                                                    Vcbidmodulo,
                                                                                    UCase(VtbCodigoAplicacion),
                                                                                    UCase(VtbNombAplicacion),
                                                                                    VtbArchiEjecut,
                                                                                    ImgByte,
                                                                                    VCBEdoActivo,
                                                                                    My.Application.IDUSUARIO,
                                                                                    VtbNombImg,
                                                                                    VtbVersion)
                    ' Convert.ToString(VimagenAplic),
                Else
                    GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "No se pudo actualizar, algunos campos estan vacios. ").ShowDialog()
                    Exit Sub
                End If
                LIMPIAR_CAMPOS()
                CARGAR_DATOS()
            Else
                GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "Para modificar, debe ingrezar primero la aplicación. ").ShowDialog()
                Exit Sub
            End If

        Catch ex As Exception
            GestorMensajes.MensajeDelSistema(MensajeSistema.TipoDeMensaje.Adveretencia, "#ERROR, 9987, Error al intentar acutalizar la aplicacion" + ex.Message).ShowDialog()
        End Try
    End Sub

-----------------------------------------------------------------------------------------------------------------------
El procedimiento esta acontinuacion:

    Public Shared Function Ejecutar(Procedimiento As String, ParamArray Parametro() As Object) As DataTable
        Try
            i = 0
            mCon.Open()
            mCom = New SqlCommand
            mCom.CommandText = Procedimiento
            mCom.CommandType = CommandType.StoredProcedure
            mCom.Connection = mCon
            mDt = New DataTable
            SqlCommandBuilder.DeriveParameters(mCom)
            For i = 0 To Parametro.Length
                If i > 0 Then
                    CType(mCom.Parameters(i), SqlParameter).Value = Parametro(i - 1)
                End If
            Next
            mDt = CargarDataTable(mCom.ExecuteReader)
            Return mDt
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Mensaje de Sistema")
            mDt = Nothing
            Return mDt
        Finally
            mCon.Close()
        End Try
    End Function

No hay comentarios:

Publicar un comentario

Los mail de oulook no se pueden reenviar.

 cuando en el asunto poseen un caracter especial por ejemplo @#$ los correos no salen y no te muestra ningun correo de rebote, especialmente...