Principales respuestas
VB.NET llenar Textbox consulta a MySQL por procedimeinto envienado parametros

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 EstadoFROM tipodocumento;
ENDHaciendo 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
.. Jesus Albeiro Gaviria R
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ú
- Editado Pedro Ávila miércoles, 8 de junio de 2016 0:05 ...
- Propuesto como respuesta José De AlvaModerator lunes, 13 de junio de 2016 15:56
- Marcado como respuesta José De AlvaModerator viernes, 17 de junio de 2016 15:58