Principales respuestas
filtrar datos en textbox por procedimiento almacenado

Pregunta
-
Respuestas
-
¿Dónde presentas problemas? ¿En el manejo de las capas? ¿Al invocar a un método de la capa de negocios? ¿En la implementación del método de acceso a datos?
El objeto de tipo DataGridView de la capa de UI puede obtener los datos vinculándose con un objeto que contenga una estructura de datos -por ejemplo un objeto de tipo DataTable-, para ello se debe de invocar a la función que reside en una capa inferior (negocio, acceso a datos):
DataGridView1.DataSource = ObtenerDatos(txtNombre.Text)
Para ello se entiende que tienes un método llamado ObtenerDatos() que define un parámetro para realizar el filtro. El método en la capa de acceso a datos deberá tener la siguiente forma:
Public Function ObtenerDatos(Nombre As String) As DataTable Using conexion As New SqlConnection("<Colocar cadena de conexión>") Dim SqlCommand cmd New SqlCommand("MiProcedimiento", conexion) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Param", Nombre) Dim SqlDataAdapter da New SqlDataAdapter(cmd) Dim dt As New DataTable() da.Fill(dt) Return dt End Using End Try
Adapta el código según tu caso. Discúlpame si el código tiene algún problema en la sintaxis, por lo general no tengo como probar lo que escribo.
- Propuesto como respuesta José De AlvaModerator miércoles, 6 de julio de 2016 15:08
- Marcado como respuesta Enrique M. MontejoModerator jueves, 7 de julio de 2016 10:22
Todas las respuestas
-
¿Dónde presentas problemas? ¿En el manejo de las capas? ¿Al invocar a un método de la capa de negocios? ¿En la implementación del método de acceso a datos?
El objeto de tipo DataGridView de la capa de UI puede obtener los datos vinculándose con un objeto que contenga una estructura de datos -por ejemplo un objeto de tipo DataTable-, para ello se debe de invocar a la función que reside en una capa inferior (negocio, acceso a datos):
DataGridView1.DataSource = ObtenerDatos(txtNombre.Text)
Para ello se entiende que tienes un método llamado ObtenerDatos() que define un parámetro para realizar el filtro. El método en la capa de acceso a datos deberá tener la siguiente forma:
Public Function ObtenerDatos(Nombre As String) As DataTable Using conexion As New SqlConnection("<Colocar cadena de conexión>") Dim SqlCommand cmd New SqlCommand("MiProcedimiento", conexion) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@Param", Nombre) Dim SqlDataAdapter da New SqlDataAdapter(cmd) Dim dt As New DataTable() da.Fill(dt) Return dt End Using End Try
Adapta el código según tu caso. Discúlpame si el código tiene algún problema en la sintaxis, por lo general no tengo como probar lo que escribo.
- Propuesto como respuesta José De AlvaModerator miércoles, 6 de julio de 2016 15:08
- Marcado como respuesta Enrique M. MontejoModerator jueves, 7 de julio de 2016 10:22
-
hola este es mi cod en la capa datos
Public Function fnBuscarProyecto(ByVal nombrePr As String) As DataTable Try conectado() cmd = New SqlCommand("BuscarProyecto") cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cnn cmd.Parameters.AddWithValue("@nombre", nombrePr) Dim dt As New DataTable Dim da As New SqlDataAdapter(cmd) da.Fill(dt) Return dt Catch ex As Exception MsgBox(ex.Message) Return Nothing End Try End Function
y no puedo hacer que se filtren los datos del datagridview en el textboxPrivate Sub txtBuscar_TextChanged(sender As Object, e As EventArgs) Handles txtBuscar.TextChanged Dim dao As New DmostrarProyecto dgvListaProyectos.DataSource = dao.fnBuscarProyecto(txtBuscar.Text) End Sub
-
A simple vista no tiene nada incorrecto, pero no basta con mencionar "y no puedo hacer que se filtren los datos del datagridview en el textbox", ¿obtienes alguna excepción? ¿has validado que la consulta retorne filas según la condición? ¿tienes alguna pista del problema que nos ayude a apoyarte? Nota que si no das mucha información no hay forma de poder entender lo que sucede.
Estoy asumiendo que intentas decir que los datos del objeto de tipo DataGridView se deben filtrar a razón del valor que hay en un objeto de tipo TextBox, ¿verdad?, porque si tomo textualmente lo que escribes no tiene mucho sentido lo que requieres, en todo caso te agradeceré dejes claro lo que necesitas.
Insistiendo en que la expresión de filtro la obtienes del objeto de tipo TextBox, entonces imagino que en el procedimiento almacenado haces uso de LIKE para devolver filas en base a coincidencias, ¿verdad?
<...> WHERE nombrePr LIKE '%' + @nombrePr + '%'
Esperamos tus comentarios.
- Propuesto como respuesta José De AlvaModerator miércoles, 6 de julio de 2016 15:08