Filtrar registros de DataSet

13/07/2007 - 12:46 por juan | Informe spam
Hola:
tengo una aplicación para windows que conecta con una base de datos. La he
programado con Visual Basic 2005. Quiero filtrar registros cuando se carga el
DataSet. Es decir, no quiero que de la base de datos se carguen todos los
registros sino sólo los que coinciden en un determinado campo con un cierto
valor.
He utilizado la propiedad "Filter" del "BindingSource":
MiBindingSource.Filter="Localidad='Soria'"
Esta propiedad la manejo en el evento Load del formulario, pero no da
resultado.
También he intentado manejar la sentencia SQL en el DataSet, pero el
problema es que me pide el valor del parámetro y resulta que todavía no se
conoce. He intentado utilizar el nombre de una variable que adoptará más
adelante el valor que corresponda, pero Visual Basic (el DataSet) no me
acepta la maniobra.
Yo preferiría poder filtrar los registros en el evento Load porque pienso
que sería más versatil.
Si alguien tiene una solución, gracias.
Saludos, Juan.

Preguntas similare

Leer las respuestas

#1 Juan Diego Bueno
13/07/2007 - 16:03 | Informe spam
A ver si te entendemos: ¿Qué es lo que no se conoce a priori, el campo a
filtrar o el criterio de filtro?

¿Usas datasets tipados (los que se generan en xml) o genéricos?

Saludos

Juan Diego Bueno www.moondance.tk
"juan" escribió en el mensaje
news:
Hola:
tengo una aplicación para windows que conecta con una base de datos. La he
programado con Visual Basic 2005. Quiero filtrar registros cuando se carga
el
DataSet. Es decir, no quiero que de la base de datos se carguen todos los
registros sino sólo los que coinciden en un determinado campo con un
cierto
valor.
He utilizado la propiedad "Filter" del "BindingSource":
MiBindingSource.Filter="Localidad='Soria'"
Esta propiedad la manejo en el evento Load del formulario, pero no da
resultado.
También he intentado manejar la sentencia SQL en el DataSet, pero el
problema es que me pide el valor del parámetro y resulta que todavía no se
conoce. He intentado utilizar el nombre de una variable que adoptará más
adelante el valor que corresponda, pero Visual Basic (el DataSet) no me
acepta la maniobra.
Yo preferiría poder filtrar los registros en el evento Load porque pienso
que sería más versatil.
Si alguien tiene una solución, gracias.
Saludos, Juan.

Respuesta Responder a este mensaje
#2 juan
15/07/2007 - 15:42 | Informe spam
Se conocen los dos conceptos. Pero lo que no conozco a priori el es valor
concreto que adoptará el criterio de filtro. Por ejemplo no conozco que el
valor concreto será "Soria" en el campo "Localidad". No sé si eso responde a
tu pregunta.
Saludos, Juan.


"Juan Diego Bueno" wrote:

A ver si te entendemos: ¿Qué es lo que no se conoce a priori, el campo a
filtrar o el criterio de filtro?

¿Usas datasets tipados (los que se generan en xml) o genéricos?

Saludos

Juan Diego Bueno www.moondance.tk
"juan" escribió en el mensaje
news:
> Hola:
> tengo una aplicación para windows que conecta con una base de datos. La he
> programado con Visual Basic 2005. Quiero filtrar registros cuando se carga
> el
> DataSet. Es decir, no quiero que de la base de datos se carguen todos los
> registros sino sólo los que coinciden en un determinado campo con un
> cierto
> valor.
> He utilizado la propiedad "Filter" del "BindingSource":
> MiBindingSource.Filter="Localidad='Soria'"
> Esta propiedad la manejo en el evento Load del formulario, pero no da
> resultado.
> También he intentado manejar la sentencia SQL en el DataSet, pero el
> problema es que me pide el valor del parámetro y resulta que todavía no se
> conoce. He intentado utilizar el nombre de una variable que adoptará más
> adelante el valor que corresponda, pero Visual Basic (el DataSet) no me
> acepta la maniobra.
> Yo preferiría poder filtrar los registros en el evento Load porque pienso
> que sería más versatil.
> Si alguien tiene una solución, gracias.
> Saludos, Juan.
>



Respuesta Responder a este mensaje
#3 Juan Diego Bueno
16/07/2007 - 08:38 | Informe spam
Vale, tienes varias opciones.

1. Si usas datasets tipados, cuando arrastras una tabla al dataset, tienes
la opción de ver y configurar a tu gusto el método Fill (que es el que llena
el datatable desconectado con los registros de la base de datos). Si pinchas
con el botón derecho sobre esa zona, te deja definir un nuevo Fill (lo que
se llamaría un FillBy), es decir, una nueva consulta de llenado. Ahí, lo que
debes hacer es definir la misma consulta que tienes añadiendo el where de
esta forma: "select * from tabla where ciudad=@ciudad". El asistente te
pedirá un nombre para este método (por ejemplo, FillByCiudad). Una vez hecho
eso, cuando necesites llenar un datatable con estos datos únicamente has de
hacer: TableAdapterquesea.FillbyCiudad(dataset.datatable, "Soria"), por
poner un ejemplo.
2. Si no usas datasets tipados, puedes usar un dataadapter convencional y un
dataset genérico. Lo que debes hacer entonces es ajustar el selectcommand
del dataadapter con la consulta en sí:
dataadapter1.selectcommand.commandtext="select * from tabla where
ciudad='Soria'"; El problema que tienes aquí es que este tipo de consulta no
es muy segura, puesto que puede presentar vulnerabilidades por inyección de
código. Puedes usar parámetros en el selectcommand de forma similar a como
te expliqué antes con el fillby (select * from tabla where ciudad=@ciudad).
Para eso, es más práctico añadir el dataadapter como elemento insertable en
tu formulario en vez de definirlo únicamente desde código, aunque también es
posible, pero en este caso, debes añadir todo el código del parámetro o
parámetros que uses, mientras que en el caso del elemento insertable, un
asistente lo hace por tí

Espero que haya quedado claro. Si hay conceptos que no entiendes de aquí, te
aconsejo mires cualquier tutorial de ado.net

Saludos


"juan" escribió en el mensaje
news:
Se conocen los dos conceptos. Pero lo que no conozco a priori el es valor
concreto que adoptará el criterio de filtro. Por ejemplo no conozco que el
valor concreto será "Soria" en el campo "Localidad". No sé si eso responde
a
tu pregunta.
Saludos, Juan.


"Juan Diego Bueno" wrote:

A ver si te entendemos: ¿Qué es lo que no se conoce a priori, el campo a
filtrar o el criterio de filtro?

¿Usas datasets tipados (los que se generan en xml) o genéricos?

Saludos

Juan Diego Bueno www.moondance.tk
"juan" escribió en el mensaje
news:
> Hola:
> tengo una aplicación para windows que conecta con una base de datos. La
> he
> programado con Visual Basic 2005. Quiero filtrar registros cuando se
> carga
> el
> DataSet. Es decir, no quiero que de la base de datos se carguen todos
> los
> registros sino sólo los que coinciden en un determinado campo con un
> cierto
> valor.
> He utilizado la propiedad "Filter" del "BindingSource":
> MiBindingSource.Filter="Localidad='Soria'"
> Esta propiedad la manejo en el evento Load del formulario, pero no da
> resultado.
> También he intentado manejar la sentencia SQL en el DataSet, pero el
> problema es que me pide el valor del parámetro y resulta que todavía no
> se
> conoce. He intentado utilizar el nombre de una variable que adoptará
> más
> adelante el valor que corresponda, pero Visual Basic (el DataSet) no me
> acepta la maniobra.
> Yo preferiría poder filtrar los registros en el evento Load porque
> pienso
> que sería más versatil.
> Si alguien tiene una solución, gracias.
> Saludos, Juan.
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida