Запрос
Абстрактный вопрос с которым я столкнулся и который неожиданной вызвал у меня затруденение.
При удалении одной из строк заказа считать сумму оставшихся строк этого заказа. Я реализовал это так:
Дописал delete у SalesLine_ds (то есть того, который содержится в форме следующими строками):
st = SalesLine.SalesId;
print st;
t = (select * from SalesTable where SalesTable.SalesId == SalesLine.SalesId).RecId;
print t;
n = (select sum(LineAmount) from SalesLine where SalesLine.SalesID==
(select * from SalesTable where SalesTable.RecId==t).SalesId).LineAmount;
print n;
Это работает. Но зачем такая сложность. Неужели нельзя проще ?????
Очень хотелось сделать так:
n = (select sum(LineAmount) from SalesLine where SalesLine.SalesId==st).LineAmount;
Но Аксапта ругается, что в SQL выражениях нельзя осуществлять сравнение со строками. Что это за фигня ? Как нельзя ? И это при том, что почте все ключевые поля наследованы от строк !!!!!!! Может быть кто-нибудь сможет мне объяснить - в чем здесь смысл ????
А выражение
n = (select sum(LineAmount) from SalesLine where SalesLine.SalesId==SalesLine.SalesId).LineAmount;
естественно считает сумму по всем строкам всех заказов.
|