16.11.2006, 16:00 | #1 |
MCTS
|
select sum(amount)
select sum(amount) from payTrans
where payTrans.sourceTableId == rPayAverageEarnEmplPeriodTable.tableId && payTrans.sourceRecId == rPayAverageEarnEmplPeriodTable.recId; ??? amount - это я так понимаю переменная EDT RpayTrans, тогда если ей происходит присвоение, по какому полю считается сумма? |
|
16.11.2006, 16:03 | #2 |
MCTS
|
то есть типа RPayAmount
|
|
16.11.2006, 16:03 | #3 |
NavAx
|
amount это поле в таблице payTrans, по которому и считается сумма.
|
|
16.11.2006, 16:04 | #4 |
MCTS
|
чему тогда эта сумма присваивается?
|
|
16.11.2006, 16:05 | #5 |
Злыдни
|
Это поле таблицы RPayTrans
|
|
16.11.2006, 16:05 | #6 |
MCTS
|
вообще смысл этой конструкции?
|
|
16.11.2006, 16:07 | #7 |
NavAx
|
значит где то дальше у вас для расчетов используется payTrans.amount
|
|
16.11.2006, 16:13 | #8 |
MCTS
|
то есть считается сумма по полю amount по всем записям данной таблицы, удовлетворяющим заданному условию, а затем эта сумма попадает в поле amount какой-то ЗАПИСИ таблицы "RPayTrans payTrans", но опять возникает вопрос: какая это ЗАПИСЬ, новая, последняя, первая?
|
|
16.11.2006, 16:16 | #9 |
MCTS
|
кстати, payTrans.amount действительно используется далее, но какая это запись данной таблицы?
|
|
16.11.2006, 16:16 | #10 |
Программатор
|
|
|
16.11.2006, 16:16 | #11 |
Программатор
|
|
|
16.11.2006, 16:18 | #12 |
MCTS
|
вот в этом то и проблема этот кусок кода только и стоит:
if (! rPayAverageEarnEmplPeriodTable.sumOnHand) { select sum(amount) from payTrans where payTrans.sourceTableId == rPayAverageEarnEmplPeriodTable.tableId && payTrans.sourceRecId == rPayAverageEarnEmplPeriodTable.recId; ttsbegin; // --> localRecId = rPayAverageEarnEmplPeriodTable.RecId; select forupdate rPayAverageEarnEmplPeriodTable where rPayAverageEarnEmplPeriodTable.RecId == localRecId; // <-- rPayAverageEarnEmplPeriodTable.sumOnHand =/* payTrans.amount + */this.Calc_VacationSum(); rPayAverageEarnEmplPeriodTable.update(); ttscommit; } |
|
16.11.2006, 16:19 | #13 |
MCTS
|
|
|
16.11.2006, 16:19 | #14 |
Участник
|
Please note, that the results will always be returned in the table variable. If you use a field list in the select statement, only those fields will be available in the table variable. If you use aggregate functions such as sum or count, the sums or counts are returned in the fields you perform the sum or count over. This also means that you cannot count average or sum date-fields as the result is not a date.
__________________
любитель портвейна и снов с прокисшей капустой в усах |
|
|
За это сообщение автора поблагодарили: RVS (1), Eldar9x (1). |
16.11.2006, 16:26 | #15 |
Сенбернар
|
Переведу : Eldar9x, в Вашем случае - это НИКАКАЯ запись. Это ПЕРЕМЕННАЯ типа "запись таблицы" payTrans, ЕДИНСТВЕННОЕ поле которой имеет осмысленное значение. В этом поле сидит СУММА, которую Вы заказывали.
Вот. ЗЫ : Опять CAPS LOCK заедать начал
__________________
Best Regards, Roman |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
16.11.2006, 16:28 | #16 |
MCTS
|
RVS и всем, огромное спасибо! Выручили )
|
|
16.11.2006, 16:46 | #17 |
Moderator
|
Eldar9x, мне примерно понятно ваше недоумение. Я сам через это проходил.
Недоумение возникает из-за того, что глядя на конструкцию: select sum(amount) from payTrans where... человек, знакомый с "нормальным" SQL (и пока не очень знакомый с "аксаптовским"), понимает, что "нормальный" SQL предъявит в качестве результата такого запроса "сумму поля amount из таблицы payTrans по тем записям, которые отбираются условием where...". Причем в контексте конкретной процедуры (метода) возникает естественный вопрос: "А где же оператор присваивания? Чему это полученное значение присваивается?" На "аксаптовском SQL", а точнее на X++, вышеупомянутая конструкция означает, что "результат запроса на нормальном SQL" будет помещен в поле amount табличной переменной payTrans. Т.е. на некотором псевдокоде можно записать примерно так: payTrans.amount = (select sum(amount) from RPayTrans where ... ) Это просто нужно немножко переварить и прочувствовать (рюмка хорошего коньяка будет нелишней!). |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |
16.11.2006, 16:54 | #18 |
MCTS
|
Вот вот, мне тоже вначале хотелось увидеть что нибудь типа
blablabla = (select sum(amount) from RPayTrans where ... ), где blablabla, какая то переменная... |
|
16.11.2006, 17:05 | #19 |
Программатор
|
|
|
16.11.2006, 18:21 | #20 |
Участник
|
спасибо за тему - понастольгтировал
|
|