Topic: скрипт добавления записи в таблицу по процедуре OnClose

День добрый. Имеются 2 таблицы: TableGrid2, TableGrid3, Есть поле с формулой для расчета суммы данных в этих гридах: (CALCULATED:(\r\n(SELECT SUM(raboty.price) FROM raboty WHERE raboty.id_application ^equally^ application.id)\r\n+\r\n(SELECT SUM(detall.price) FROM detall WHERE detall.id_application ^equally^ application.id)\r\n)\r\n)

Проблема в том, что если в одной таблице нет данных, то сумма нерасчитывается, думаю как можно сделать, чтобы при добавлении записи в таблицу во второй автоматом падало нулевое значение.

Пробовал через скрипт

procedure uslugi_OnClose (Sender: string; Action: string);
begin
   Detali.Button1.Click;

не работает, так как перед сохранением форму нужно выделить.

Может есть какой нибудь скрипт SQL для добавления новой ID записи в таблицу

форма  frmApplication (c двумя гридами) и 2 идентичных формы uslugi, Detali с кнопками сохранений и memo с нулевыми дефолтными значениями

Re: скрипт добавления записи в таблицу по процедуре OnClose

Проще говоря как можно сделать чтобы эта процедура работала, если нет данных в таблице detall.price
(
(SELECT SUM(raboty.price) FROM raboty WHERE raboty.id_application = application.id)
+
(SELECT SUM(detall.price) FROM detall WHERE detall.id_application = application.id)
)

Re: скрипт добавления записи в таблицу по процедуре OnClose

попробуйте вместо SUM использовать TOTAL

Dmitry.

Re: скрипт добавления записи в таблицу по процедуре OnClose

если правельно понял задачу то не подойдет ваш вариант

Re: скрипт добавления записи в таблицу по процедуре OnClose

Спасибо, TOTAL сработал, видимо он умеет складывать даже с учетом отсутствующих записей, а вот SUM работает только с целыми данными

Re: скрипт добавления записи в таблицу по процедуре OnClose

TOTAL сработал для расчета в таблицах, но не в отчетах))). Подскажите пожалуйста как в строчке ниже добавить ноль к сложению, мне нужно чтобы получалось целое число, тоесть если поле было пустым то добавляется ноль

[SUM(StrToFloat(<Report."detall_price">),MasterData2)]



[SUM(StrToFloat(<Report."detall_price">),MasterData2) +0] не работает

Re: скрипт добавления записи в таблицу по процедуре OnClose

может как то можно привязать к отчету или запросу функцию isNull чтобы поле не было пустым по умолчанию

Re: скрипт добавления записи в таблицу по процедуре OnClose

попробуйте так

,ifnull(

(SELECT SUM(detall.price) FROM detall WHERE detall.id_application = application.id)

,0) AS SumDetallPrice
Dmitry.

Re: скрипт добавления записи в таблицу по процедуре OnClose

DriveSoft wrote:

попробуйте так

,ifnull(

(SELECT SUM(detall.price) FROM detall WHERE detall.id_application = application.id)

,0) AS SumDetallPrice

можно по подробней, такого вида?

,is null(,0) AS SumDetallPrice
(SELECT SUM(detall.price) FROM detall WHERE detall.id_application = application.id)

Re: скрипт добавления записи в таблицу по процедуре OnClose

mitrich45
не понял вопроса

Dmitry.

Re: скрипт добавления записи в таблицу по процедуре OnClose

именно ifnull вписывать?

12 (edited by mitrich45 2014-06-21 12:31:16)

Re: скрипт добавления записи в таблицу по процедуре OnClose

не знал про функцию ifnull, как понимаю она проверяет на заполнение данных на истину или ложь, если истина то пропускает, если false то  присваивает 0

Re: скрипт добавления записи в таблицу по процедуре OnClose

ifnull(a1,a2)
функция возвращает первый аргумент, который не равен NULL

т.е. если результат запроса будет NULL, функция вернет второй аргумент, который равен 0

Dmitry.

Re: скрипт добавления записи в таблицу по процедуре OnClose

спасибо попробую

Re: скрипт добавления записи в таблицу по процедуре OnClose

УРААА!! ЗАРАБОТАЛО! Спасибо Вам!