Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ¿Cómo usar TClientDataSet? (https://www.clubdelphi.com/foros/showthread.php?t=92574)

strelok 28-11-2017 19:57:38

Como recorrer y agrupar un DataSet?
 
Hola,

a estas horas ya no pienso, por lo que necesito ayuda:

Tengo un Dataset, con N filas, cada fila tiene N columnas, algunas de estas columnas son "iva", "base", "id cliente".

Lo que quiero es calcular el total usando IVA y BASE, de esas N filas, agrupado por id cliente.
Es decir, sumar las N filas de cada cliente, y saber el total de ellos

roman 28-11-2017 20:02:09

Esto lo puedes resolver con una consulta SQL del tipo:

Código SQL [-]
SELECT id_cliente, sum(iva*base)
from tabla
group by id_cliente

LineComment Saludos

strelok 28-11-2017 20:08:26

Si, con SQL es fácil, pero esas N filas las tengo en un DataSet, la verdad tengo poca por no decir nula experiencia con los componentes de Delphi. Por ende, ¿como hago esa consulta SQL a los resultados obtenidos de otra SQL, es decir, a lo que se encuentra en el DataSet?

roman 28-11-2017 21:50:58

Podrías enlazar un ClientDataSet a tu Dataset. El ClientDataset puede manejar campos agregados que sería lo que requires.

LineComment Saludos

jhonny 28-11-2017 23:33:51

Cita:

Empezado por strelok (Mensaje 522955)
Por ende, ¿como hago esa consulta SQL a los resultados obtenidos de otra SQL, es decir, a lo que se encuentra en el DataSet?

Con el componente TFDLocalSQL puedes hacer una consulta a un DataSet.

(MAJ) 29-11-2017 06:49:41

Cita:

Empezado por strelok (Mensaje 522955)
Si, con SQL es fácil, pero esas N filas las tengo en un DataSet, la verdad tengo poca por no decir nula experiencia con los componentes de Delphi. Por ende, ¿como hago esa consulta SQL a los resultados obtenidos de otra SQL, es decir, a lo que se encuentra en el DataSet?

si lo que entiendo es que los datos que querés sumar, son el resultado de otra consulta sql, porque mejor no haces una consulta anidada para poder hacer la operación dentro de la consulta y solo recibir los datos que vas a utilizar...

Código SQL [-]
SELECT id_cliente, sum(iva*base) from tabla
(
  SELECT CampoDePrimeraConsulta
  FROM tabla
  WHERE PrimeraConsulta
)
group by id_cliente

De esta forma no necesitas hacer tanto problema con el dataset que a la larga te va a traer problemas

strelok 29-11-2017 10:12:39

Muchas gracias a todos, lo intentaré :)
Luego les comento que tal.

strelok 29-11-2017 10:18:06

Cierto que no tengo ni idea de como hacerlo, jajaja, que componente es exactamente ClientDataSet o DataSetProvider ¿como se enlazan?

Casimiro Notevi 29-11-2017 10:59:43

Cita:

Empezado por strelok (Mensaje 522969)
Cierto que no tengo ni idea de como hacerlo, jajaja, que componente es exactamente ClientDataSet o DataSetProvider ¿como se enlazan?

Entonces, lo mejor es empezar por aquí.

strelok 29-11-2017 11:30:06

He realizado otra consulta, usando otro DataSet, menos efectivo para por lo menos me da solución

strelok 30-11-2017 13:24:48

¿Cómo usar TClientDataSet?
 
Hola a todos,

Tengo un DataSet con muchísimos campos y algunos de ellos son calculados. Necesito obtener uno de esos campos calculados de ese DataSet, pero si se cumplen ciertas condiciones.
Por lo que opté por crear un TClientDataSet y lo enlacé con un TDataSetProvieder, a este último lo enlacé con mi DataSet.

1- No tengo idea si los enlacé correctamente
2- ¿Cómo puedo consultar el dataset?

Necesito obtener "total" siempre y cuando se cumplan 3 condiciones, pero la principal pregunta es SELECT TOTAL FROM [¿AQUÍ NO SE QUE VA, NOMBRE DEL DATASET O TABLA A LA QUE APUNTA EL DATASET?]

Casimiro Notevi 30-11-2017 14:19:20

http://terawiki.clubdelphi.com/Delph...phi_4_pdf_.zip
http://www.intitec.com/varios/La_pot...entDataSet.pdf

strelok 30-11-2017 14:22:05

Gracias, pero ya vi ese ejemplo en otra web y en ningún momento usa la propiedad "CommandText", también abrí ese libro y no lo encontré :(

TOPX 30-11-2017 14:53:57

~ http://www.clubdelphi.com/foros/show...62&postcount=5


La franja horaria es GMT +2. Ahora son las 11:34:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi