Filtrar registros de un dataset????

15/01/2007 - 21:37 por manuel | Informe spam
Holas

Me gustaria saber si es posible establecer filtros a un dataset ya cargado
en una aplicacion vb.net.

En mi aplicación cargo un dataset por medio de una conexion sql y quisiera
filtrar algunos registros sobre el dataset ya cargado para no estar haciendo
la consulta nuevamente a la base de datos (tengo entendido que esta forma es
mas rapida por ser desconectada)

Gracias
 

Leer las respuestas

#1 Alberto Poblacion
19/01/2007 - 08:24 | Informe spam
"manuel" wrote in message
news:
Me gustaria saber si es posible establecer filtros a un dataset ya cargado
en una aplicacion vb.net.

En mi aplicación cargo un dataset por medio de una conexion sql y quisiera
filtrar algunos registros sobre el dataset ya cargado para no estar
haciendo la consulta nuevamente a la base de datos (tengo entendido que
esta forma es mas rapida por ser desconectada)



Para eso está el DataView, que se interpone entre una tabla de tu dataset
y el consumidor de esos datos (por ejemplo, un datagrid) y permite
establecer filtros y también cambiar la ordenación. Por ejemplo, supongamos
que estás visualizando los datos de tu dataset en un datagrid con un código
como este:

Dim ds as DataSet
'(Se carga el DataSet con un Fill)
Dim dt as DataTable = ds.Tables(0)
DataGrid1.DataSource = dt

Bien, pues para ponerle filtros lo cambias asi:

Dim ds as DataSet
'(Se carga el DataSet con un Fill)
Dim dt as DataTable = ds.Tables(0)
Dim dv as DataView = dt.DefaultView
DataGrid1.DataSource = dv

Como ves, el único cambio es que ahora en lugar de conectar directamente
el DataTable con el DataGrid, hemos interpuesto entre medias un DataView.
Ahora, para filtrar los registros, no hace falta más que cambiar la
propiedad Filter del DataView:

dv.Filter = "Campo1>'valor' AND Campo2<=otroValor"

La sintaxis del string que se le pasa al Filter es similar a la que
usarías tras el WHERE de SQL si fueras a enviar la consulta a un servidor,
pero el DataView no la envía a ningún sitio sino que la procesa en memoria.
También existe un dv.Sort que te permite mostrar los registros en otro
orden.

Preguntas similares