none
VB.NET llenar Textbox consulta a MySQL por procedimeinto envienado parametros RRS feed

  • Pregunta

  • Buen Dia,

    Hace poco me colaboraron con este código, estoy realizando una aplicación simple en vb.net (para mi es complejo, soy básico en programación).

    Hasta el momento tengo el código en tres capas que me hace la consulta por medio de un procedimiento almacenado y me regresa todos los datos. Pero ahora quiero hacer una consulta de un registro especifico,  digitar un valor en un Textbox y que me devuelva la información de ese registro. (es igual si quiero hacer la búsqueda con el valor de tos Textbox, es decir,  se envían los parámetros igual para uno  o varios).

    Este es el código que tengo.

    Procedimiento para buscar todos los registros____Funciona

    CREATE DEFINER=`root`@`localhost` PROCEDURE `mostrar_tipodocumento`()
    BEGIN
     SELECT tip_codigo Codigo, tip_nombre Nombre, tip_estado Estado

    FROM tipodocumento;
    END

    Haciendo los cambios el Procedimiento para buscar según criterios registros____ Funciona el sql

    CREATE DEFINER=`root`@`localhost` PROCEDURE `mostrar_tipodocumento`(
    IN _tip_nombre varchar(40),
    IN _tip_estado varchar(10) 
    )
    BEGIN
     SELECT tip_codigo Codigo, tip_nombre Nombre, tip_estado Estado 
     FROM tipodocumento;
     WHERE tip_nombre =_tip_nombre  AND tip_estado=_tip_estado
    END
    
    

    La capa lógica  Tengo un código para insertar, en este envió los parámetros  y el código ara mostrar este muestra todo sin para metros (intente unir estos dos de alguna forma, uno envía los parámetros que necesito y el otro me los retorna pero no pude)

    Public Class FTipodocumento
        Inherits FConexion
        Dim cmd As New MySqlCommand
    
        Public Function FnMostrarTipodocuemnto() As DataTable
            Try
                FnConectado()
    
                cmd = New MySqlCommand("mostrar_tipodocumento")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
    
                Dim dt As New DataTable
                Dim da As New MySqlDataAdapter(cmd)
                da.Fill(dt)
    
                Return dt
    
            Catch ex As Exception
                MsgBox(ex.Message)
                Return Nothing
    
            Finally
                FnDesconectado()
    
            End Try
        End Function
    
    
        Public Function FnInsertarTipodocumento(ByVal dts As MTipodocumento) As Boolean
            Try
                FnConectado()
                cmd = New MySqlCommand("insertar_tipodocumento")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Connection = cnn
    
                cmd.Parameters.AddWithValue("_codigo", dts.Tip_codigo1)
                cmd.Parameters.AddWithValue("_nombre", dts.Tip_nombre1)
                cmd.Parameters.AddWithValue("_estado", dts.Tip_estado1)
    
                If cmd.ExecuteNonQuery Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                Return False
            Finally
                FnDesconectado()
            End Try
            Return True
        End Function
    End Class

    Por ultimo los llamo desde el formulario, el mostrar al cargar  o llamo el sub desde un botón, y el guardar desde otro botón

    Sub SubMostrarTipoDocumento()
            Try
                Dim fun As New FTipodocumento
                dt = fun.FnMostrarTipodocuemnto
    
                If dt.Rows.Count <> 0 Then
                    DataGridView1.DataSource = dt
                Else
                    DataGridView1.DataSource = Nothing
                End If
    
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
      End Sub
    
    
    
    Private Sub BtGuardar_Click(sender As Object, e As EventArgs) Handles BtGuardar.Click
            Try
                Dim funciones As New FTipodocumento
                Dim logica As New MTipodocumento
    
                logica.Tip_codigo1 = Me.TbCodigo.Text
                logica.Tip_nombre1 = Me.TbNombre.Text
                logica.Tip_estado1 = Me.TbEstado.Text
    
                If funciones.FnInsertarTipodocumento(logica) Then
                    MsgBox("inserto")
                    SubMostrarTipoDocumento()
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    End Sub

    Gracias por la ayuda, espero me haga entender, es realizar una consulta con los datos digitados en el formulario

    El formulario


    .. Jesus Albeiro Gaviria R

    martes, 7 de junio de 2016 19:13

Respuestas

  • @AlbeiroGaviria

    Pero ahora quiero hacer una consulta de un registro especifico,  digitar un valor en un Textbox y que me devuelva la información de ese registro.

    Para hacer la búsqueda de un registro tienes que enviarle parámetros.

    Public Function Buscar(ByVal codigo As Integer)
            Try
                Using cn As MySqlConnection = Conexión.Conectar("default")
                    cn.Open()
                    Using cmd As MySqlCommand = cn.CreateCommand
                        cmd.CommandText = "SELECT nombre, direccion, ciudad, telefono FROM Cliente" _
                                          & " WHERE idCliente=?codigo"
                        cmd.Parameters.Add("?codigo", MySqlDbType.Int32).Value = codigo
                        Using reader As MySqlDataReader = cmd.ExecuteReader()
                            Dim _Cliente As New E.Cliente
                            If reader.Read Then
                                _Cliente.Nombre = reader("nombre").ToString
                                _Cliente.Direccion = reader("direccion").ToString
                                _Cliente.Ciudad = reader("ciudad").ToString
                                _Cliente.Telefono = reader("telefono").ToString
                            End If
                            Return _Cliente
                        End Using
                    End Using
                End Using
            Catch ex As Exception
                Throw New ArgumentException("No se encontro el registro solicitado", ex)
            End Try
        End Function

    No veo necesario crear un store procedure para dicho proceso, este código es de ejemplo modificalo a tus necesidades, también te sirve para poder crear tu store procedure me refiero a la consulta.

    Espero te sirva de ayuda.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    miércoles, 8 de junio de 2016 0:00