AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.09.2011, 13:45   #1  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Временная таблица
Здраствуйте! Есть такой алгоритм:
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;
 ..
Вообщем, в методе1 я хочу делать суммирование по полю временной таблицы кот. заполняется в цикле. Возможно ли как нибудь в этод метод передать временную таблицу???
Сейчас под отладчиком я ни каких данных в ней не вижу!
Спасибо!

Последний раз редактировалось JuniorAx; 06.09.2011 в 13:47.
Старый 06.09.2011, 13:53   #2  
denni is offline
denni
Участник
 
5 / 11 (1) +
Регистрация: 06.09.2011
Адрес: Ekb
хм... сначала стоит разобраться в написании "вышестоящего" запроса и там получать агрегированные данные?
Если вы все же решили пойти непростым путем, то
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  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Идея я думаю не сложная!?
Заполняем на каждом шаге поля врем. таблицы нужными данными, а как только if становиться верным берем нужные поля этой таблицы, формируем строку с результатами и запихиваем её в буфер! Через while select sum(..) не получиться сделать, там в условии есть поле Dimension[n] т.е. делаю это через qbds! как в этом случае передать туда таблицу? т.е. я же не могу написать qbds.addDataSource(tablenum(_tmpTable))!!! Сейчас написал так:
X++:
qbds.addDataSource(tablenum(TmpTable))
selectionfield::sum    ..
И данных не вижу!
Старый 06.09.2011, 14:18   #4  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Посмотрите тут
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
За это сообщение автора поблагодарили: JuniorAx (1).
Старый 06.09.2011, 14:44   #5  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Всем Спасибо! QueryRun.setCursor(TmpTable) помогло!

Последний раз редактировалось JuniorAx; 06.09.2011 в 14:48.
Старый 06.09.2011, 15:18   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
Через while select sum(..) не получиться сделать, там в условии есть поле Dimension[n] т.е. делаю это через qbds!
Чего-то я не понял. Что такое может qbds, чего нельзя сделать через while select?
Старый 06.09.2011, 15:28   #7  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
попробовал, агрегация по полю-массиву не работает, хотя и условие и группировка работает:
X++:
LedgerTrans ledgerTrans;
    ;
    while select maxof(Dimension[1])
        from ledgerTrans
        group by Dimension[2]
        where ledgerTrans.Dimension[3] != ''
    {
        abs(1);
    }
AX 4.0 SP2

maxOf генерирует ошибку.
Но если речь идет об условии, все должно работать... Какая у вас версия?
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!

Последний раз редактировалось plumbum; 06.09.2011 в 15:28. Причина: Версия системы
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 06.09.2011, 16:06   #8  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
X++:
str dim; // допустим получаем значение с поля на форме
LedgerTrans   _ledgerTrans;
while select _ledgerTrans
where _ledgerTrans.Dimension[2] == dim;
Ошибка: контейнерные и текстовые поля не могут быть использованны в выражении where!
Axapta 3.0.SP5
Старый 06.09.2011, 16:20   #9  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от JuniorAx Посмотреть сообщение
X++:
str dim; // допустим получаем значение с поля на форме
LedgerTrans   _ledgerTrans;
while select _ledgerTrans
where _ledgerTrans.Dimension[2] == dim;
Ошибка: контейнерные и текстовые поля не могут быть использованны в выражении where!
Axapta 3.0.SP5
Он ругается на объявленную переменную
X++:
str dim;
Замените ее на
X++:
name dim;
(например) и все будет в порядке. Или создайте свой строковый расширенный тип и опишите переменную dim под ним.
Да есть такая беда не глатает аксаптовский sql переменные описанные как str в выражении where, он просит конкретный расширенный тип.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 06.09.2011 в 16:27.
Старый 06.09.2011, 20:16   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Pustik Посмотреть сообщение
Да есть такая беда не глатает аксаптовский sql переменные описанные как str в выражении where, он просит конкретный расширенный тип.
Не совсем так. Он просит конкретную размерность. Т.е. вполне достаточно будет явно указать количество символов

X++:
str 10   dim;
За это сообщение автора поблагодарили: Pustik (2), JuniorAx (1).
Старый 06.09.2011, 20:45   #11  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Не совсем так. Он просит конкретную размерность. Т.е. вполне достаточно будет явно указать количество символов
Спасибо за информацию. Вообще, логично было бы это упомянуть в ошибке . По моему это было бы правильно.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Group by и временная таблица S.Kuskov DAX: Программирование 31 16.01.2015 10:25
dataSetLookup(), временная таблица и Query rDenis2 DAX: Программирование 3 19.05.2010 00:22
Временная таблица Antoncheg DAX: Программирование 21 15.08.2008 18:25
производительность: map или временная таблица kitty DAX: Программирование 5 15.11.2007 12:36
select sum(amount) from временная таблица ATimTim DAX: Программирование 6 11.06.2004 14:16
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:18.