Prosím o radu. Pro svoji rozsáhlejší aplikaci jsem se rozhodl použít FireDac, doposud vše správně fungovalo, až s použitím SQL dotazu kde jsou počítaná pole nastal problém.
Jednoduchý příklad, jak se chyba projeví:
Databáze SQLite.
Mám TFDQuery s naplněným SQL dotazem který obsahuje počítaná pole, fieldy jsou persistentní, vygenerované v IDE.
V době generování dotčené tabulky obsahovaly data a fieldy se vytvořily správně - tedy správného typu, v mém případě TFloatField.
Problém nastane když do sql dotazu přidám where kterým odfiltruji všechny záznamy - tedy prázdný recordset.
Po znovuotevření query, Firedac očekává všechny fieldy typu TWideString a skončí chybou. "Expecting: Float actual: WideString". Co s tím?
Mapping použít nemůžu, protože ten nelze aplikovat na jednotlivé fieldy.
Předem dík, za rady.
Edit: abych byl konkrétní, přikládám ještě SQL. Bez toho Where je vše ok, s ním ko.
SELECT MA.NAME,
IFNULL(SUM(DI.DOCITEM_VALUE), 0.0) AS DOCITEM_VALUE,
IFNULL(SUM(DI.DOCITEM_VALUE_BASE), 0.0) AS DOCITEM_VALUE_BASE,
IFNULL(SUM(DI.ID_DOCITEM_VALUE_UNIT), 0) AS ID_DOCITEM_VALUE_UNIT,
IFNULL(AVG(DI.PRICE), 0.0) AS AVG_PRICE
FROM MATERIAL MA LEFT JOIN DOCITEM DI ON DI.ID_MATERIAL = MA.ID
WHERE MA.NAME = 'abcd'
GROUP BY MA.ID