22.04.2002, 18:49 | #1 |
Moderator
|
Запрос
Абстрактный вопрос с которым я столкнулся и который неожиданной вызвал у меня затруденение.
При удалении одной из строк заказа считать сумму оставшихся строк этого заказа. Я реализовал это так: Дописал 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; естественно считает сумму по всем строкам всех заказов. |
|