Работает! Спасибо!

Почему-то такой вариант не работает

frm_add_amount.dtp_expdate.DateTime := strtodate(FormatDateTime('yy-MM-DD',strtodate(SQLExecute('SELECT IFNULL(expdate,-1) FROM Amount_delivery WHERE id_goods='+inttostr(frm_add_amount.cb_num.dbItemID)+' ORDER BY ID DESC LIMIT 1'))))

Подскажите как округлить такой запрос в вычисляемом поле:

(  

(SELECT cost FROM goods WHERE amount.id_goods=goods.id)*            
(

((SELECT TOTAL(amount_delivery) FROM amount_delivery WHERE amount_delivery.id_client=client.id AND
    amount_delivery.id_goods=goods.id AND amount_delivery.id_lot=lot.id AND amount_delivery.id_expdate=expdate.id) +
    
(SELECT TOTAL(amount_move) FROM amount_move WHERE amount_move.id_client1=client.id AND
    amount_move.id_goods=goods.id AND amount_move.id_lot=lot.id AND amount_move.id_expdate=expdate.id)) -    
                                                                                                      
((SELECT TOTAL(amount_move) FROM amount_move WHERE amount_move.id_client=client.id AND
    amount_move.id_goods=goods.id AND amount_move.id_lot=lot.id AND amount_move.id_expdate=expdate.id) + 
    
(SELECT TOTAL(amount_shipment) FROM amount_shipment WHERE amount_shipment.id_client=client.id AND
    amount_shipment.id_goods=goods.id AND amount_shipment.id_lot=lot.id AND amount_shipment.id_expdate=expdate.id))
                                                                                    
)    
             
)

Спасибо! Но получилось не совсем то что мне нужно. Может я не правильную модель выбрал.

Мне необходимо посчитать  сумму amount (кол-во) из amount_delivery(приход)  выбирая из условия (опред клиент AND опред товар(goods) AND определённый лот (lot))

если с клиентом и товаром всё понятно, там ключи, то лот (lot) отсортировать у меня не получается(((((

принцип такой

id goods     client         lot         amount
1  сахар   склад 1        12           2
2  сахар   склад 2        12           4
3  масло   склад 1        3             1
4  сахар    склад 1        12            1

и мне нужно чтобы результат был на складе 1

id goods     client         lot         amount
1  сахар   склад 1        12           3
2  сахар   склад 2        12           4
3  масло   склад 1        3             1

Как это реализовать?(

помогите, пожалуйста, нужно очень срочно((

(

(SELECT TOTAL(Amount_delivery) FROM Amount_delivery WHERE Amount_delivery.id_goods=goods.id AND Amount_delivery.id_client=client.id AND Amount_delivery.lot=Amount_shipment.lot) - 

(SELECT TOTAL(Amount_shipment) FROM Amount_shipment WHERE Amount_shipment.id_goods=goods.id AND Amount_shipment.id_client=client.id)                                         
                                                                                                                                                                                       
)         

Мне нужно чтобы при подсчете TOTAL учитывались поля  id_goods, id_client и lot (считал только одинаковые записи лот), т.е. сумму всех amount определённого клиента (client), определённого товара (goods) и определённого лота (lot)

Добрый день!

В таблице Amaount_delivery есть вычисляемое поле calc_ost в нём принцип посчитать разность сумм количества прихода и отгрузки сортируя по клиенту и товару (товар словарь), но мне нужно чтобы и учитывался лот (lot строка в таблице). Никак не получается написать вычисляемое поле, чтобы учитывались эти при условия, помогите, пожалуйста. Проект прилагаю((

И хотелось бы узнать, можно ли скачать самую последнюю версию до 5.0, чтобы активировать на нём купленную минорную лицензию. Спасибо.

9

(20 replies, posted in Russian)

DriveSoft wrote:

Здравствуйте.


Да, у SQLite есть такая особенность, решить ее можно, умножив поле на 1.0, т.е. вместо a/b записать так

a*1.0/b  

Добрый день!
Необходимо рассчитать НДС в вычисляемом поле, выглядит так:
ROUND((Tech.costbeznds*1.00)*(Tech.nds/100.00),2)
Но результат без десятичной части. Пример 1200 руб. НДС 18 % результат 1416, а хотелось бы 1416,00
В чем может быть проблема?  Tech.costbeznds Деньги,  а Tech.nds Вещественное число.
Спасибо!

10

(20 replies, posted in Russian)

DriveSoft wrote:

Здравствуйте.


Да, у SQLite есть такая особенность, решить ее можно, умножив поле на 1.0, т.е. вместо a/b записать так

a*1.0/b  

Добрый день!

Необходимо рассчитать НДС в вычисляемом поле, выглядит так:

ROUND((Tech.costbeznds*1.00)*(Tech.nds/100.00),2)

Но результат без десятичной части. Пример 1200 руб. НДС 18 % результат 1416, а хотелось бы 1416,00
В чем может быть проблема?  Tech.costbeznds Деньги,  а Tech.nds Вещественное число.

Спасибо!

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

bemorhona-qt wrote:

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

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

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

DriveSoft wrote:

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

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

Спасибо!

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, пока экспериментирую.

Добрый день!

Прошу Вас помочь, имеется вычисляемое поле в котором считается остаток на складе.
Если значение в вычисляемом поле равно нулю, то данная запись не должна отображаться в 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))
)

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

Добрый день!

Пожалуйста подскажите,

1. Как при событии OnClick на кнопке frm_main_menu.bt_report_edit в datetimepiker отображалась (frm_report.dtp_report) сохраненная дата и как конвертировать в дальнейшем дату в TextBox в формате ДД.ММ.ГГГГ.

2. А также подскажите, как в таблице frm_main_menu.tg_sites_def в столбце sum_def сделать отображение значений в формате 0.0 (одна цифра после запятой). Бывает ситуация, что при нулевом значении в первой строке у всех остальных чисел в данном столбце отображается только целая часть. 

Спасибо!