PDA

Ver la Versión Completa : ¿Cómo usar TClientDataSet?


strelok
28-11-2017, 18:57:38
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, 19:02:09
Esto lo puedes resolver con una consulta SQL del tipo:


SELECT id_cliente, sum(iva*base)
from tabla
group by id_cliente


LineComment Saludos

strelok
28-11-2017, 19: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, 20: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, 22:33:51
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, 05:49:41
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...

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, 09:12:39
Muchas gracias a todos, lo intentaré :)
Luego les comento que tal.

strelok
29-11-2017, 09: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, 09:59:43
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í (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip).

strelok
29-11-2017, 10:30:06
He realizado otra consulta, usando otro DataSet, menos efectivo para por lo menos me da solución

strelok
30-11-2017, 12:24:48
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, 13:19:20
http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip
http://www.intitec.com/varios/La_potencia_de_los_TClientDataSet.pdf

strelok
30-11-2017, 13: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, 13:53:57
~ http://www.clubdelphi.com/foros/showpost.php?p=522962&postcount=5