|  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, 14:18 | #4 | 
| Участник | 
			
			Посмотрите тут
		 
				__________________ http://www.axdevposts.blogspot.com Пришел, уведел.... отойди, дай другому увидеть! | 
|  | |
| За это сообщение автора поблагодарили: JuniorAx (1). | |
|  06.09.2011, 14:44 | #5 | 
| Участник | 
			
			Всем Спасибо! QueryRun.setCursor(TmpTable) помогло!
		 Последний раз редактировалось JuniorAx; 06.09.2011 в 14:48. | 
|  | 
|  06.09.2011, 15:18 | #6 | 
| Участник | |
|  | 
|  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;  . Или создайте свой строковый расширенный тип и опишите переменную 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 | 
| Участник | Цитата:  . По моему это было бы правильно. 
				__________________ -Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. | 
|  |