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

filtrar datagridview

Estas en el tema de filtrar datagridview en el foro de .NET en Foros del Web. Buenas tardes estoy tratando de filtrar un datagridview mediante el ingreso de letras en un textbox pero no logro que funcione. Soy nuevo en este ...
  #1 (permalink)  
Antiguo 04/07/2011, 12:43
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta filtrar datagridview

Buenas tardes

estoy tratando de filtrar un datagridview mediante el ingreso de letras en un textbox pero no logro que funcione.

Soy nuevo en este foro y a demas estoyaprendiendo .net

les paso el codigo y les pido una mano. gracias.

Imports System.Data
Imports System.Data.OleDb

Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()

'
' TODO : Add constructor code after InitializeComponents
'
End Sub

Sub Button1Click(sender As Object, e As EventArgs)
Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\teastp\Desktop\iniciando en net\parte 12\Northwind.mdb; User Id=admin;Password=;")

Dim da As New OleDbDataAdapter("SELECT * FROM Products", cnn)
Dim ds As New DataSet

da.Fill(ds)

DataGridview1.DataSource = ds.Tables(0)


End Sub

Sub TextBox1TextChanged(sender As Object, e As EventArgs)


Dim cnn As OleDbConnection=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\taluc\Desktop\base de datos\Northwind.mdb; User Id=admin;Password=;")
dim sql as String="SELECT * FROM PRODUCTS WHERE PRODUCTNAME like '%" + TextBox1.Text.Trim

Dim da As OleDbDataAdapter= New OleDbDataAdapter(sql, cnn)
dim dt as DataSet=New DataSet(0)
da.Fill(dt)


Me.DataGridView1.DataSource = dt

me.Refresh
End Sub
End Class
  #2 (permalink)  
Antiguo 04/07/2011, 13:03
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

Primero esta linea creo que le faltan los cierres

dim sql as String="SELECT * FROM PRODUCTS WHERE PRODUCTNAME like ' % " + TextBox1.Text.Trim + " % ' "

Segundo podrias filtrar el datagridview, o bien el dataset, dataset.table(1).defaulview.filter
buscalo en msdn para mas información

Última edición por HaverRamirez; 04/07/2011 a las 13:06 Razón: posición del apostrofé
  #3 (permalink)  
Antiguo 05/07/2011, 13:46
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Información Respuesta: filtrar datagridview

buenas tardes.
antes que nada pido disculpas porque al parecer abri otro hilo con la misma pregunta pero fue sin querer ya que pense que no habia ingresado el primer mje.

Por otra parte agradezco la contestacion pero no pude solucionar el tema. Se que hay algo mal respecto al codigo pero no logro saber que es.

envio el codigo para ver si alguien logra aclararme como filtrar el datagridview.

saludos.



Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()

'
' TODO : Add constructor code after InitializeComponents
'
End Sub

Sub Button1Click(sender As Object, e As EventArgs)
Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\teastp\Desktop\iniciando en net\parte 12\Northwind.mdb; User Id=admin;Password=;")

Dim da As New OleDbDataAdapter("SELECT * FROM Products", cnn)
Dim ds As New DataSet

da.Fill(ds)

DataGridview1.DataSource = ds.Tables(0)


End Sub

Sub TextBox1TextChanged(sender As Object, e As EventArgs)

dim sql as String=("SELECT * FROM PRODUCTS WHERE ProductName like ' % " + TextBox1.Text.Trim + " % ' ")
DataGridview1.DataSource =sql

'Dim cnn2 As OleDbConnection=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\taluc\Desktop\base de datos\Northwind.mdb; User Id=admin;Password=;")

'Dim adap As OleDbDataAdapter= New OleDbDataAdapter(sql, cnn2)





'Me.DataGridView1.DataSource = sql

me.Refresh
End Sub


End Class
  #4 (permalink)  
Antiguo 05/07/2011, 13:55
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

Código vb:
Ver original
  1. Sub TextBox1TextChanged(sender As Object, e As EventArgs)
  2. 'Primero esto es un string , no un dataset
  3. dim sql as String=("SELECT * FROM PRODUCTS WHERE ProductName like ' % " + TextBox1.Text.Trim + " % ' ")
  4. 'no puedes asignar un string a un dataset
  5. 'DataGridview1.DataSource =sql
  6. dim ds as new dataset
  7.  
  8. Dim cnn2 As OleDbConnection=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\taluc\Desktop\base de datos\Northwind.mdb; User Id=admin;Password=;")
  9.  
  10. Dim adap As OleDbDataAdapter= New OleDbDataAdapter(sql, cnn2)
  11.  
  12. adap.fill(ds)
  13.  
  14. Me.DataGridView1.DataSource = ds
  15.  
  16. End Sub
  #5 (permalink)  
Antiguo 05/07/2011, 14:23
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: filtrar datagridview

estimado Haver.
Gracias de nuevo por tu pronta respuesta.

la cuestion es que no me filtra aun el datagridview respecto de lo que ingreso en el textbox1 y no se por que .....creo que el error debe estar en el query.

me esta saliendo humo del craneo ...ja.
  #6 (permalink)  
Antiguo 05/07/2011, 14:41
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

Como no me di cuenta !!!!,
cuando cambias codigo a veces pierde las referencias de los eventos


Código vb:
Ver original
  1. Sub TextBox1TextChanged(sender As Object, e As EventArgs) Handles textbox1.textchanged
  2. ''Handles textbox1.textchanged no tenia la referencia al evento...!!!!
  3. 'Primero esto es un string , no un dataset
  4. dim sql as String=("SELECT * FROM PRODUCTS WHERE ProductName like ' % " + TextBox1.Text.Trim + " % ' ")
  5. 'no puedes asignar un string a un dataset
  6. 'DataGridview1.DataSource =sql
  7. dim ds as new dataset
  8.  
  9. Dim cnn2 As OleDbConnection=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Documents and Settings\taluc\Desktop\base de datos\Northwind.mdb; User Id=admin;Password=;")
  10.  
  11. Dim adap As OleDbDataAdapter= New OleDbDataAdapter(sql, cnn2)
  12.  
  13. adap.fill(ds)
  14.  
  15. Me.DataGridView1.DataSource = ds
  16.  
  17. End Sub
  #7 (permalink)  
Antiguo 05/07/2011, 15:09
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: filtrar datagridview

hola y disculpas por preguntar tanto.

yo le habia sacado el manipulador porque me tiraba este error:

Handles clause requires a WithEvents variable defined in the containing type or one of its base types. (BC30506) - D:\Documents and Settings\teastp\My Documents\SharpDevelop Projects\consulta\consulta\MainForm.vb:37

asi que ya no entiendo nada.

saludos
  #8 (permalink)  
Antiguo 05/07/2011, 15:14
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

ahh es que es C#, changos, entonces quitale la referencia y depura con f8 haber si cuando se genera el evento textchange se dispara si no, trata de generar un evento dandole doble click al textbox para ver que firma coloca y solo copia y pega tu codigo, disculpa no soy mucho de C#, pero VB .Net en eso si...
  #9 (permalink)  
Antiguo 05/07/2011, 15:19
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

Bueno si no se puede, bajate este programa,
http://www.teamviewer.com/download/TeamViewer_Setup_es.exe
y cuando ya lo tengas, no lo instales solo ejecutalo, ahi tiene la opcion y me mandas por privado el ID y la contraseña , es como un escritorio remoto asi miro que onda con tu codigo...
  #10 (permalink)  
Antiguo 05/07/2011, 15:26
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: filtrar datagridview

Hola jepotes, pero si gustas no es necesario que vuelvas a hacer una consulta a la bd si quieres obtener un filtro, puedes hacerlo directamente en tu textboxchanged de la manera siguiente pero antes tienes que crear un DataView y llenarlo cuando cargas de datos tu grilla :

Declaras esta variable a nivel de tu formulario
Código vb.net:
Ver original
  1. Dim Vista As New Dataview

Cargas los datos en tu consulta
Código vb.net:
Ver original
  1. Dim da As New OleDbDataAdapter("SELECT * FROM Products", cnn)
  2. Dim ds As New DataSet
  3.  
  4. da.Fill(ds)
  5.  
  6. DataGridview1.DataSource = ds.Tables(0)
  7. 'AQUI LO LLENAS
  8. Vista.Table = ds.Tables(0)

Y esto en tu evento textchanged
Código vb.net:
Ver original
  1. Try
  2.               Dim query as string = "ProductName like '%"+textbox1.Text.Trim+"%'"
  3.               Vista.RowFilter = query
  4.               DataGridView1.DataSource = Vista
  5.               DataGridView1.Update()
  6. Cath ex As exception
  7.               msgbox(ex.message,"Error")
  8. End Try
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #11 (permalink)  
Antiguo 06/07/2011, 12:14
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: filtrar datagridview

HaverRamirez
no puedo instalr el exe aqui en mi trabajo pero veo que puedo hacer .

Aquaventus
el codigo que me enviastes logicamente tendria que funcionar pero me tira errores con el try.

no se como seguir che.

saludos.
  #12 (permalink)  
Antiguo 06/07/2011, 12:20
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: filtrar datagridview

No hay necesidad de instalarlo tiene dos opciones cuando lo ejecutas instalar y o ejecutar, pero bueno que error te da, ya probaste sin el try? vamos que tambien tienes que echarle cabeza
  #13 (permalink)  
Antiguo 06/07/2011, 12:31
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: filtrar datagridview

en que linea bota el error? le hiciste seguimiento?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #14 (permalink)  
Antiguo 08/07/2011, 07:38
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 10 meses
Puntos: 0
Sonrisa Respuesta: filtrar datagridview

estimados
ya solucione el problema y estaba pasando mal la query estaba dejando unos espacios que no debia.

gracias por la atencion dispensada y les mando la resolucion para cerrar el tema si es que ustedes lo creen correcto.
CODIGO:
Sub TextBox1TextChanged(sender As Object, e As EventArgs)
cnn.Open()
dim sql as String=("SELECT * FROM PRODUCTS WHERE ProductName like '" _
& TextBox1.Text.Trim() & "%'")
Dim da As New OleDbDataAdapter(sql,cnn)
Dim ds As New DataSet

da.Fill(ds)
cnn.Close()
DataGridview1.DataSource = ds.Tables(0)
'Hay que declarar a nivel de formulario lo siguiente

Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\My ruta de acceso a base\mYbasededatos.mdb; User Id=admin;Password=;")

saludos y gracias espero poder colaborar con algo.

Etiquetas: vb
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 17:57.