Topic: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

Добрый день!

Прошу Вас помочь, имеется вычисляемое поле в котором считается остаток на складе.
Если значение в вычисляемом поле равно нулю, то данная запись не должна отображаться в TableGrid.
Как это можно реализовать.

Вычисляемое поле:

(
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
)

Заранее спасибо!

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

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

Case when

(
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
) > 0 then (
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
)  else ""

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

bemorhona-qt wrote:

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

Case when

(
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
) > 0 then (
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
)  else ""

Честно говоря, пока не работает, внес данные корректировки в вычисляемое поле и скорее всего ругается на кавычки возле else, пока экспериментирую.

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

avmakarov91
Пожалуйста, приложите ваш проект (zip файл без exe и dll), с указанием на какой форме используется данное вычисляемое поле.

Dmitry.

5 (edited by avmakarov91 2017-04-11 13:03:36)

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

DriveSoft wrote:

avmakarov91
Пожалуйста, приложите ваш проект (zip файл без exe и dll), с указанием на какой форме используется данное вычисляемое поле.

Таблица Amount вычисляемое поле Amount на главной форме frmmainmenu - tgequip

Спасибо!

Post's attachments

Attachment icon NDTpro_lite_1.1.7z 62.94 kb, 378 downloads since 2017-04-11 

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

попробуйте так
Case when
(
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
) > 0 then (
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActAddAmountEquip IN
(SELECT ActAddAmountEquip.id FROM ActAddAmountEquip WHERE ActAddAmountEquip.id_object=amount.id_object))
+
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object1=amount.id_object))
-
(SELECT TOTAL(ActAddAmountEquip_details.amount) FROM ActAddAmountEquip_details WHERE ActAddAmountEquip_details.id_equipment = amount.id_equipment AND ActAddAmountEquip_details.id_ActMoveAmountEquip IN
(SELECT ActMoveAmountEquip.id FROM ActMoveAmountEquip WHERE ActMoveAmountEquip.id_object=amount.id_object))
)  else "" end

У меня заработало.

7 (edited by avmakarov91 2017-04-11 14:29:39)

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

bemorhona-qt wrote:

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

У меня заработало.

Спасибо, действительно значение в столбце Количество в TG не отображается но сама строка остаётся, а хотелось чтобы её не было.

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

этот вопрос к Дмитрию, я не силен в этом.

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

Проще всего скрыть записи можно с помощью скрипта, пример

procedure frmmainmenu_tgeqiup_OnChange (Sender: string);
var
    i,c: integer;
begin
    c := frmmainmenu.tgeqiup.RowCount-1;
    if frmmainmenu.tgeqiup.Columns.Count > 3 then
        for i:= c downto 0 do
            if frmmainmenu.tgeqiup.Cells[3,i]='0' then frmmainmenu.tgeqiup.DeleteRow(i);
end;
Dmitry.

Re: Отображение записей в TabGrid в зависимости от знач.вычисляемого поля

Спасибо! Решение подходит.