Тема: Запрос
Показать сообщение отдельно
Старый 22.04.2002, 18:49   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Запрос
Абстрактный вопрос с которым я столкнулся и который неожиданной вызвал у меня затруденение.

При удалении одной из строк заказа считать сумму оставшихся строк этого заказа. Я реализовал это так:

Дописал 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;

естественно считает сумму по всем строкам всех заказов.