03.08.2005, 14:28 | #1 |
Участник
|
Почему суммируется только последнее значение?
Господа знатоки, объясните мне пожалуйста, почему в представленном ниже запросе в поле попадает только последнее суммарное значение contractSpecification.QuotaDelivered +purchLine.OR_InvoiceQty,
а не сумма всех строк запроса purchLine.OR_InvoiceQty + contractSpecification.QuotaDelivered? Пример: contractSpecification.QuotaDelivered = 15 запрос возвращает 20; 30; 40 Итог работы процедуры : 55 НО ДОЛЖНО БЫТЬ, по моей логике, 105! while select forupdate contractSpecification join purchLine where contractSpecification.ItemId == purchLine.ItemId && contractSpecification.Licence == purchLine.OR_Licence && contractSpecification.CIP == purchLine.PurchPrice && purchLine.PurchId == purchTable.PurchId { contractSpecification.QuotaDelivered += purchLine.OR_InvoiceQty; contractSpecification.update(); } |
|
03.08.2005, 14:42 | #2 |
Модератор
|
PHP код:
Георгий |
|
03.08.2005, 14:47 | #3 |
Участник
|
это глобально определенная таблица в классе. Она определена и значение PurchId !=0
|
|
03.08.2005, 14:49 | #4 |
Модератор
|
Ну. Так работает?
|
|
03.08.2005, 14:52 | #5 |
Участник
|
нет, не работает.
Я просто пояснила про значение глобально определенной таблицы Секунду, там изменили запрос! Вообще не так! Куда ушил фигурные скобки и суммирование полей?? В этом же смысл! |
|
03.08.2005, 15:11 | #6 |
Модератор
|
Блин, гражданка vesna! Я ж там уже сумму выбираю!!
С Уважением, Георгий |
|
03.08.2005, 15:23 | #7 |
Участник
|
Гражданин знаток, посмотрите внимательней логику того, что было и что Вы предлагаете. Это разные вещи!
Обе таблицы имеют несколько записей. Их связывают по ключевым полям. И далее меняют у одной из таблиц поле, суммируя значения в соответствии с ключами Здесь никак не выйдет просто одна сумма. Или надо делать цикл в цикле....... |
|
03.08.2005, 15:24 | #8 |
Участник
|
12-го поговорим тет-а-тет по логике этой дамы Аксапты
|
|
03.08.2005, 15:29 | #9 |
Модератор
|
Хм.
Напишите так, как я сказал, и все заработает. Ну, добавьте цикл по всем записям. PHP код:
|
|
03.08.2005, 15:43 | #10 |
Участник
|
я еще засомнивалась сначала как-то........
Всё так и есть. Не хватает Group by! Но если я для PurchLine его определяю, то не отрабатывают, что естественно для Аксапты, связи с таблицей contractSpecification. Ее RecId возвращает нулевое значение и ошибка о том, что непонятно, у какой строчки я хочу сделать update значения. |
|
03.08.2005, 15:52 | #11 |
Модератор
|
А что добавить группировку у contractSpecification?
Правда, возможно, что в план запроса придется включить PurchTable и группировать по нему. Короче, не мучайте меня. Напишите [дисплей] - метод и юзайте его: PHP код:
Увидимся! |
|
03.08.2005, 16:23 | #12 |
----------------
|
Цитата:
почему в представленном ниже запросе в поле попадает только последнее суммарное значение
|
|
03.08.2005, 16:28 | #13 |
Участник
|
Поняла. Спасибо всем
|
|
03.08.2005, 16:33 | #14 |
----------------
|
И еще
Лучше сделать внешним циклом запрос по purchLine
PHP код:
|
|
03.08.2005, 17:47 | #15 |
Участник
|
спасибо. отличный вариант. Воспользовалась им
|
|