Foros del Web » Programación para mayores de 30 ;) » .NET »

Mostrar filtro mediante TextBox y Combobox[VB.net]

Estas en el tema de Mostrar filtro mediante TextBox y Combobox[VB.net] en el foro de .NET en Foros del Web. Hola amigos, quisiera saber is me pueden pasar algún ejemplo de esto: Filtrar un registro dependiendo del resultado de una consulta usando 2 Textbox y ...
  #1 (permalink)  
Antiguo 27/03/2012, 17:00
Avatar de UNDR4  
Fecha de Ingreso: marzo-2012
Ubicación: Death Valley
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 2
Pregunta Mostrar filtro mediante TextBox y Combobox[VB.net]

Hola amigos, quisiera saber is me pueden pasar algún ejemplo de esto:

Filtrar un registro dependiendo del resultado de una consulta usando 2 Textbox y un Combobox (Ya sea juntos o de manera individual) Presionando un boton BTNBuscar, lo valores son clave,nombre y marcas, actualmente ya tengo funcionando el Combobox (Marcas) , pero no logro realizar el filtro con los Textbox, todo esto lo muesto en un data grid. Espero y puedan orientarme


Codigo:
Código vb:
Ver original
  1. Private Sub BTNPSea_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNPSea.Click
  2.         'Crear Conexion
  3.        Dim Conexion As MySqlConnection
  4.         Conexion = New MySqlConnection
  5.         Conexion.ConnectionString = "Server = localhost ; Database = test ; User Id=root ; Password=102530"
  6.         'Crear Adaptador
  7.        oDataAdapter = New MySqlDataAdapter("Select clave,nombre,descripcion,precioc,preciou from productos where id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre", Conexion)
  8.         Dim Table As New DataTable
  9.         'Crear CommandBuilder
  10.        Try
  11.             Dim oComBuild As MySqlCommandBuilder = New MySqlCommandBuilder(oDataAdapter)
  12.             'Crear Dataset
  13.            Me.oDataset = New DataSet
  14.             'AbriConexion
  15.            Conexion.Open()
  16.             'Llenar adaptador
  17.            Me.oDataAdapter.Fill(Table)
  18.             DTVProductos.DataSource = Table
  19.             Conexion.Close()
  20.         Catch ex As Exception
  21.             MsgBox("Error")
  22.         End Try
  23.     End Sub
__________________
†UNDR4†
Un programador es un mamífero nocturno de ojos rojos capaz de conversar con objetos inanimados.
  #2 (permalink)  
Antiguo 28/03/2012, 08:30
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Hola UNDR4, eso lo puedes validar en la acción click de tu boton de esta manera :
Código vb:
Ver original
  1. 'Creas una variable string que contendra la consulta
  2. Dim query As String
  3. If txtTUTEXTBOX1.Text.Trim.Length == 0 And txtTUTEXTBOX2.Text.Trim.Length == 0 Then
  4. query = "Select clave,nombre,descripcion,precioc,preciou from productos where id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  5. Else IF txtTUTEXTBOX1.Text.Trim.Length <> 0 And txtTUTEXTBOX2.Text.Trim.Length == 0 Then
  6. query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave='" txtTUTEXTBOX1.Text.Trim & "' and id_marca ='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  7. Else IF txtTUTEXTBOX1.Text.Trim.Length == 0 And txtTUTEXTBOX2.Text.Trim.Length <> 0 Then
  8. query = "Select clave,nombre,descripcion,precioc,preciou from productos where nombre='" txtTUTEXTBOX2.Text.Trim & "' and id_marca ='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  9. Else ' txtTUTEXTBOX1.Text.Trim.Length <> 0 And txtTUTEXTBOX2.Text.Trim.Length <> 0 Then
  10. query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave='" txtTUTEXTBOX1.Text.Trim & "' and nombre = '" & txtTUTEXTBOX2.Text.Trim & "'and id_marca ='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  11. End If
  12.  
  13. 'Y al final se lo pasas a tu adapter
  14. 'Crear Adaptador
  15. oDataAdapter = New MySqlDataAdapter(query, Conexion)
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 28/03/2012, 10:58
Avatar de UNDR4  
Fecha de Ingreso: marzo-2012
Ubicación: Death Valley
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Gracias por el ejemplo amigo, esta bastante completo , otra pregunta es como poner el primer valor del ComoboBox vació, este es el codigo que eso para llenar el combo:

Código vb:
Ver original
  1. CBMarca.DataSource = dt
  2. CBMarca.DisplayMember = "nombre"
  3. CBMarca.ValueMember = "id_marca"
__________________
†UNDR4†
Un programador es un mamífero nocturno de ojos rojos capaz de conversar con objetos inanimados.

Última edición por UNDR4; 28/03/2012 a las 12:02
  #4 (permalink)  
Antiguo 28/03/2012, 16:23
Avatar de ldcd  
Fecha de Ingreso: enero-2010
Ubicación: Distrito Federal
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Puedes ponerle el selected Index en -1, si mal no recuerdo con eso lo pone vacío, ahora, otra forma un poco mejor es que a la lista que pones en el Combo le agregues un elemento al inicio con un valor "Seleccione un elemento", se vería mejor
  #5 (permalink)  
Antiguo 29/03/2012, 11:48
Avatar de UNDR4  
Fecha de Ingreso: marzo-2012
Ubicación: Death Valley
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Cita:
Iniciado por ldcd Ver Mensaje
Puedes ponerle el selected Index en -1, si mal no recuerdo con eso lo pone vacío, ahora, otra forma un poco mejor es que a la lista que pones en el Combo le agregues un elemento al inicio con un valor "Seleccione un elemento", se vería mejor
Lo eh intentado amigo pero aun así no me da por default el campo vacio y/o me muestra el mensaje Seleccionar...

este es el codigo completo con el que lleno el combobox

Código vb:
Ver original
  1. Try
  2.     da = New MySqlDataAdapter(sSel, CConexion)
  3.      dt = New DataTable
  4.      'Llenar la tabla con los datos indicados
  5.     da.Fill(dt)
  6. Catch ex As Exception
  7.      MsgBox("Error")
  8. End Try
  9.  
  10. CBMarca.SelectedIndex = -1
  11. CBMarca.DataSource = dt
  12. CBMarca.DisplayMember = "nombre"
  13. CBMarca.ValueMember = "id_marca"

la única forma que encontrado de dejar vació el combobox por defecto es la de CBMarca.ResetText() pero eso solo lo uso en el botón de limpiar datos, ya que al cargar el formulario no me funciona del todo.
__________________
†UNDR4†
Un programador es un mamífero nocturno de ojos rojos capaz de conversar con objetos inanimados.
  #6 (permalink)  
Antiguo 30/03/2012, 07:10
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Hola UNDR4, el CBMarca.SelectedIndex = -1, colocalo al final despues de cargarlo por eso que no refleja. Saludos!..
Código vb:
Ver original
  1. CBMarca.DataSource = dt
  2. CBMarca.DisplayMember = "nombre"
  3. CBMarca.ValueMember = "id_marca"
  4. CBMarca.SelectedIndex = -1
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 30/03/2012 a las 07:20
  #7 (permalink)  
Antiguo 30/03/2012, 13:48
Avatar de UNDR4  
Fecha de Ingreso: marzo-2012
Ubicación: Death Valley
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola UNDR4, el CBMarca.SelectedIndex = -1, colocalo al final despues de cargarlo por eso que no refleja. Saludos!..
seré idiota, tienes razón, muchas gracias por contestar

Solo una ultima cosa, al hacer esto me viene un problema con los filtros: Referencia a objeto no establecida como instancia de un objeto con CBMarca.SelectedValue.ToString en la linea 9

Así es como eh puesto los filtros de registros

Código vb:
Ver original
  1. Dim Query As String
  2.         If TBPClave.Text.Trim.Length = 0 And TBPNombre.Text.Trim.Length = 0 Then
  3.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  4.         ElseIf TBPClave.Text.Trim.Length = 0 And CBMarca.SelectedIndex.Equals(-1) Then
  5.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like '" & TBPClave.Text & "' order by nombre"
  6.         ElseIf TBPClave.Text.Trim.Length = 0 And CBMarca.SelectedIndex.Equals(-1) Then
  7.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like '" & TBPNombre.Text & "' order by nombre"
  8.         ElseIf TBPClave.Text.Trim.Length <> 0 And TBPNombre.Text.Trim.Length = 0 Then
  9.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like '" & TBPClave.Text & "' and id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  10.         ElseIf TBPClave.Text.Trim.Length = 0 And TBPNombre.Text.Trim.Length <> 0 Then
  11.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where nombre like '" & TBPNombre.Text & "' and id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  12.         Else
  13.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like'" & TBPClave.Text & "' and nombre like '" & TBPNombre.Text & "'and id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  14.         End If
  15.         'Crear Adaptador
  16.        oDataAdapter = New MySqlDataAdapter(Query, Conexion)

También eh intentado con (CBMarca.Text = "") supongo que estaré haciendo algo mal, pero necesito verificar que el combobox este vació para poder implementar mejor los filtros
__________________
†UNDR4†
Un programador es un mamífero nocturno de ojos rojos capaz de conversar con objetos inanimados.

Última edición por UNDR4; 30/03/2012 a las 14:08
  #8 (permalink)  
Antiguo 30/03/2012, 14:28
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Hola UNDR4!, eso se debe a que no estas validando bien... mira esta linea que creo que es en la que se cae :
Código vb:
Ver original
  1. ElseIf TBPClave.Text.Trim.Length <> 0 And TBPNombre.Text.Trim.Length = 0 Then
  2.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like '" & TBPClave.Text & "' and id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
Como ves tu campo clave puede tener contenido y el nombre puede estar vacío... hasta allí bien, pero que pasa si además tu combobox está como indice -1?? pasa a la siguiente linea tú obligadamente jalas su valor cuando en realidad no nay nada ningun valor instanciado. por eso es que te sale eferencia a objeto no establecida como instancia de un objeto. Para ello lo que tendrás que hacer es tbm decir en tu condicional que tu combobox sea distinto a -1 :
Código vb:
Ver original
  1. ElseIf TBPClave.Text.Trim.Length <> 0 And TBPNombre.Text.Trim.Length = 0 And CBMarca.SelectedIndex <> -1 Then
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #9 (permalink)  
Antiguo 30/03/2012, 15:18
Avatar de UNDR4  
Fecha de Ingreso: marzo-2012
Ubicación: Death Valley
Mensajes: 46
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Mostrar filtro mediante TextBox y Combobox[VB.net]

Aquaventus gracias por responder, tu código funciona perfecto, pero que pasa en la ultima linea

Código vb:
Ver original
  1. Else
  2.             Query = "Select clave,nombre,descripcion,precioc,preciou from productos where clave like'" & TBPClave.Text & "' and nombre like '" & TBPNombre.Text & "'and id_marca='" & CBMarca.SelectedValue.ToString & "' order by nombre"
  3. End If

al implementar otro condicional ElseIF me genera un error en la variable Query dando una referencia nula y por lo tanto un error al momento de ejecutarla

Código vb:
Ver original
  1. 'Crear Adaptador
  2.        oDataAdapter = New MySqlDataAdapter(Query, Conexion)
__________________
†UNDR4†
Un programador es un mamífero nocturno de ojos rojos capaz de conversar con objetos inanimados.

Etiquetas: combobox, mysql, textbox, vbnet, filtros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:21.