|
06.09.2011, 13:45 | #1 |
Участник
|
Временная таблица
Здраствуйте! Есть такой алгоритм:
X++: while queryRun.next() { 1 = queryRun.get(1) if ( != 1.1) { textBuffer.appendText(1(1, 2..)) } = 1.1; select 2 where .....; ttsbegin; while select 1 .1 = 2.1; .2 = 1.2; .3 = 1.3; .insert(); } ttscommit; .. Сейчас под отладчиком я ни каких данных в ней не вижу! Спасибо! Последний раз редактировалось JuniorAx; 06.09.2011 в 13:47. |
|
06.09.2011, 13:53 | #2 |
Участник
|
хм... сначала стоит разобраться в написании "вышестоящего" запроса и там получать агрегированные данные?
Если вы все же решили пойти непростым путем, то X++: void myMethod(TmpTable _tmpTable) {; while select sum(myField) from _tmpTable { // to do } } Последний раз редактировалось denni; 06.09.2011 в 13:54. Причина: поиск и матчасть в помощь :) |
|
|
За это сообщение автора поблагодарили: JuniorAx (1). |
06.09.2011, 14:05 | #3 |
Участник
|
Идея я думаю не сложная!?
Заполняем на каждом шаге поля врем. таблицы нужными данными, а как только if становиться верным берем нужные поля этой таблицы, формируем строку с результатами и запихиваем её в буфер! Через while select sum(..) не получиться сделать, там в условии есть поле Dimension[n] т.е. делаю это через qbds! как в этом случае передать туда таблицу? т.е. я же не могу написать qbds.addDataSource(tablenum(_tmpTable))!!! Сейчас написал так: X++: qbds.addDataSource(tablenum(TmpTable)) selectionfield::sum .. |
|
06.09.2011, 15:18 | #4 |
Участник
|
|
|
06.09.2011, 14:18 | #5 |
Участник
|
Посмотрите тут
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! |
|
|
За это сообщение автора поблагодарили: JuniorAx (1). |
06.09.2011, 14:44 | #6 |
Участник
|
Всем Спасибо! QueryRun.setCursor(TmpTable) помогло!
Последний раз редактировалось JuniorAx; 06.09.2011 в 14:48. |
|
06.09.2011, 15:28 | #7 |
Участник
|
попробовал, агрегация по полю-массиву не работает, хотя и условие и группировка работает:
X++: LedgerTrans ledgerTrans; ; while select maxof(Dimension[1]) from ledgerTrans group by Dimension[2] where ledgerTrans.Dimension[3] != '' { abs(1); } maxOf генерирует ошибку. Но если речь идет об условии, все должно работать... Какая у вас версия?
__________________
http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! Последний раз редактировалось plumbum; 06.09.2011 в 15:28. Причина: Версия системы |
|
|
За это сообщение автора поблагодарили: S.Kuskov (1). |
06.09.2011, 16:06 | #8 |
Участник
|
X++: str dim; // допустим получаем значение с поля на форме LedgerTrans _ledgerTrans; while select _ledgerTrans where _ledgerTrans.Dimension[2] == dim; Axapta 3.0.SP5 |
|
06.09.2011, 16:20 | #9 |
Участник
|
Цитата:
X++: str dim; X++: name dim; Да есть такая беда не глатает аксаптовский sql переменные описанные как str в выражении where, он просит конкретный расширенный тип.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 06.09.2011 в 16:27. |
|
06.09.2011, 20:16 | #10 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Pustik (2), JuniorAx (1). |
06.09.2011, 20:45 | #11 |
Участник
|
Спасибо за информацию. Вообще, логично было бы это упомянуть в ошибке . По моему это было бы правильно.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|