consulta sobre consulta

19/02/2004 - 20:56 por momak | Informe spam
Buenas:
A ver si puedo explicar lo que pretendo.
Quiero relizar una serie consecutiva de consultas, pero necesito que que
cada una se ejecute sobre la anterior.Es decir, quiero hacer una cosulta
sobre una tabla con unos parámetros que le pueda aportar desde fuera, y
sobre esa consulta realizar otra que elija a su vez entre los registros
de la primera en función de otros parámetros, y así sucesivamente unas
cuantas veces. Yo he trabajado bastante con access, no con sql server, y
en access llege a conseguir lo que cuento pero no puede o no supe evitar
que para cada consulta se tuvieran que ejecutar todas las anteriores
cada vez. Primero ejecutaba la primera y veía los resultados, y cuando
quería hacer la segunda consulta tenía que volver a realizar la primera
y así siempre, es decir no podía guardar los registros anteriores en
algún recipiente y contra dicho recipiente realizar la siguiente consulta.
Bueno me temo que he metido demasiado rollo. Si alguien me puede decir
cómo guardar los registros resultantes de una consulta en algún sitio
contra el que pueda hacer una nueva consulta lo agradecería mucho.
No sé si los procedimientos almacenados de sql tienen algo que ver con
esto, o sí podría utilizar de alguna forma los dataset de ADO.NET.
Gracias por vuestra atención, Momak.

Preguntas similare

Leer las respuestas

#6 momak
20/02/2004 - 17:36 | Informe spam
Hola Javier:
No estoy seguro de haber explicado bien el problema.
El problema radica en el tiempo que tarda en hacerse las consultas.
En la primera consulta contra todos los registros de una tabla que
contiene, pongamos 10 millones de registros, voy a seleccionar el 15%,
así que cuando quiera hacer un segundo filtro, no quiero que se tenga
que ejecutar tambien el primero, sino que debo alojar los registros
seleccionados en otro recipiente.
Creo que la contestación que tú me das, el primer filtro, sí que me
aloja los registros deseados en un datatable, pero, los siguientes
filtros que quiera aplicar, se ejecutaran contra los que haya puesto en
dicho datatable luego se tendrán que aplicar en la segunda criba el
segundo parámetro, en la tercera, el segundo y el tercero, en la cuarta
el segundo el tercero y el cuarto y así sucesivamente.
Si estoy equivocado te agradecería que me lo hicieses ver.

¿Sería posible rellenar cada vez un nuevo datatable con los registros
seleccionados para ejecutar contra el mismo el nuevo filtro?.
Gracias por tu atención , Momak.
Respuesta Responder a este mensaje
#7 Javier Loria
20/02/2004 - 18:00 | Informe spam
Hola Momak:
Creo que si entendi, pero veamos a ver si estoy en lo correcto:
Inicio
=Usuario Abre Form y tiene una consulta X.
1.a) Con un SLQDataAdapter o SQLCommand traes los datos del Servidor
1.b) Llenas el DataSet/DataTable
1.c) Presentas al usuario los datos en el formulario.

Opcion 1: Condicion EXTRA.
==2.a) Como la condicion es ADICIONAL (tiene que cumplirse la primera
condicion Y la nueva condicion) , defines un DATAVIEW basado en la Tabla que
llenaste en 1.b.
2.b) Agregas RowFilter con la condicion, escrita igual que un WHERE pero sin
la palabra WHERE.
2.c) Hace en DataBind al DataView y NO al DataTable.
Tiene la ventaja que no requiere un viaje nuevo al servidor.

Opcion 3: Condicion ALTERNATIVA
==3.a) Como la condicion es Nuevo (debe cumplirse la primera O la segunda..
3.b) Llenas el DataSet/Datatable con el nuevo adaptador, sin hacer CLEAR al
DataSet. Esto agregara las nuevas filas, y reemplazara las que existen si
han cambiando (Asumiendo que tiene llave primaria).
3.c) Haces DataBind a la Tabla o a un DataView con o sin Filtro dependiendo
de lo que desees presentas.

El DataSet de ADO.NET es 2 conceptos en 1.
Como tiene tablas, con columnas y filas, tiene llaves y tiene llaves
foraneas y le aplicamos el principio del PATO: "Si parece un pato, camina
como un pato y hace CUACK es un PATO" y el segundo es un CACHE de las
consultas realizadas!!!, y evita volver 1 y otra vez al servidor por los
mismos datos.
En cuando a tu consulta si es posible rellenar un DATATABLE una y otra
vez. Cada FILL del SQLDataAdapter agrega nuevas filas y reemplaza las viejas
basado en la llave primaria.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

momak escribio:
Hola Javier:
No estoy seguro de haber explicado bien el problema.
El problema radica en el tiempo que tarda en hacerse las consultas.
En la primera consulta contra todos los registros de una tabla que
contiene, pongamos 10 millones de registros, voy a seleccionar el 15%,
así que cuando quiera hacer un segundo filtro, no quiero que se tenga
que ejecutar tambien el primero, sino que debo alojar los registros
seleccionados en otro recipiente.
Creo que la contestación que tú me das, el primer filtro, sí que me
aloja los registros deseados en un datatable, pero, los siguientes
filtros que quiera aplicar, se ejecutaran contra los que haya puesto
en dicho datatable luego se tendrán que aplicar en la segunda criba el
segundo parámetro, en la tercera, el segundo y el tercero, en la
cuarta el segundo el tercero y el cuarto y así sucesivamente.
Si estoy equivocado te agradecería que me lo hicieses ver.

¿Sería posible rellenar cada vez un nuevo datatable con los registros
seleccionados para ejecutar contra el mismo el nuevo filtro?.
Gracias por tu atención , Momak.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida