Проблема с обновлением.
При обновлении ошибок нет, но и значения полей не меняются. Т.е. после переоткрытия таблицы вижу старые значения.
Запрос на Select (из двух разных баз данных - гетерогенный):
Основная база kvartal_ekr и kvartal_prem это вторая база, из которой берутся данные для расчетов.
Код: Выделить всё
SELECT u.id
, u.fio
, u.login
, u.id_brigadir
, u.plus_sum_premier
, u.prepayment_premier
, sum(if(dayofweek(d.date_out) = 2, if(a.paid = 0, v.price_d, 0), if(a.paid = 0, v.price, 0))) AS sum_free
, sum(if(dayofweek(d.date_out) = 2, if(a.paid = 1, v.price_d, 0), if(a.paid = 1, v.price, 0))) AS sum_paid
, count(o.id) AS ex_count
, (
CASE count(o.id)
WHEN 0 THEN
20.4
WHEN 1 THEN
25.5
WHEN 2 THEN
30.6
ELSE
35.7
END) AS sum_default
FROM
kvartal_ekr.users u
LEFT JOIN kvartal_prem.ads a
ON (u.id = a.id_user_ekr)
LEFT JOIN kvartal_prem.datas d
ON (d.id_ads = a.id)
LEFT JOIN kvartal_prem.vid v
ON (v.id = a.vid AND v.deleted = 0 /*&dt_start &dt_end*/)
LEFT JOIN kvartal_ekr.object_n o
ON (o.id_infosource_exclusive = u.id AND o.is_deleted = 0)
WHERE
u.is_deleted = 0
AND u.is_blocked = 0
GROUP BY
1
запрос на Insert и Delete (чтобы компонента не генерировала сама запрос):
Код: Выделить всё
/**/
Затем с помощью SQL generator сгенерировал и отредактировал запрос на Update:
Код: Выделить всё
UPDATE users /* пробовал и так: kvartal_ekr.users*/
SET
plus_sum_premier = :plus_sum_premier, prepayment_premier = :prepayment_premier
WHERE
id = :Old_id
У TUniQuery установлены свойства:
KeyFields := 'id';
UpdateTable := 'users';
UniDAC 4.1.6 for Delphi XE2