Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problemas con firedac con funcion Sum (https://www.clubdelphi.com/foros/showthread.php?t=95676)

Elias011267 05-05-2022 19:28:38

Problemas con firedac con funcion Sum
 
Buen Dia.
Desarrollo en Firebird 4.0 y Delphi 10.3. Mi pregunta al grupo es: En firebird, Los select que incluyo la funcion sum y por supuesto group by me arroja los resultados esperados, pero cuando voy a delphi y aplico ese mismo select en un query firedac la funcion me da un resultado vacio y el campo donde arrojo la suma (totmonto) lo coloca tipo string ¿?.

Código SQL [-]
Select p.prov_rif, p.prov_nombre, p.prov_banco, 
 sum(d.dpa_monto+d.dpa_iva-d.dpa_iae-d.dpa_islr) as totmonto 
from proveedor p 
inner join det_pago d on p.prov_rif= d.dpa_rif
where d.dpa_fecpag is null and d.dpa_autori is not null
group by 1,2,3
Cual es la razon que Firedac no me de los resultado tal cual lo da Firebird...
Saludos

oscarac 05-05-2022 20:10:06

has revisado los campos persistentes en el query?

Casimiro Notevi 05-05-2022 21:38:29

Además de que sin ver tu código, poco podemos hacer.

egostar 06-05-2022 18:34:10

Hola

Como lo menciona Casimiro, si muestras como haces la llamada en código Delphi ayudaría, sin embargo, obviando dicho código yo suelo incluir la función COALESCE() cuando se trata de operaciones aritméticas y de concatenación.

Código SQL [-]
SELECT 
  P.PROV_RIF, 
  P.PROV_NOMBRE, 
  P.PROV_BANCO, 
  SUM(COALESCE(D.DPA_MONTO,0) + 
      COALESCE(D.DPA_IVA, 0) - 
      COALESCE(D.DPA_IAE, 0) - 
      COALESCE(D.DPA_ISLR, 0) ) AS TOTMONTO 
FROM 
  PROVEEDOR P 
  INNER JOIN DET_PAGO D ON P.PROV_RIF= D.DPA_RIF
WHERE 
  D.DPA_FECPAG IS NULL 
  AND 
  D.DPA_AUTORI IS NOT NULL
GROUP BY 1,2,3

Saludos

Elias011267 08-05-2022 15:48:14

Hola Buen dia. La solucion que consegui es parecida a la tuya, solo que use un cast en vez de coalesce. En otros grupos me dicen que ese es un bug de delphi y firedac ya que en C funciona bien.
Les recuerdo que en firebird funciona perfecto. El problema es en el componente tquery de firedac.

Elias011267 08-05-2022 15:54:34

El codigo es el mismo select pero en un componente Tquery firedac


La franja horaria es GMT +2. Ahora son las 08:13:36.

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