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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.12.2007, 13:42   #1  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
while (queryRun.next())
День добрый
Я понимаю, что все уже в этом смысле набили руку и все запросы работают в лет, но возник вопрос и я не знаю что в поиске писать, чтоб найти ответ на этот вопрос:
при ситуации, когда queryRun пуст, он весь код, который содержиться в цикле
while (queryRun.next())
{
}
пропускает... кроме условий if !!! почему? мне не надо, чтоб он это условие отбрабатывал, т.к. оно должно работать только если queryRun что-то выбрал (в самом условии конечно это не прописано, там обработка простой переменной). Что делать? (или где читать про это?)
__________________
MBS-Axapta 3.0 CIS SP3
Старый 05.12.2007, 13:50   #2  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
If находится в цикле WHILE???
Приведите код.

ЗЫ.
Цитата:
Сообщение от Tiruvileijadal' Посмотреть сообщение
оно должно работать только если queryRun что-то выбрал
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 05.12.2007, 14:43   #3  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
продолжение той же темы про Dimensions
X++:
    while (qr.next())
    {
       ltvd1 = qr.get(tablenum(SUG_LedgerTransDimentionsDetails));
       select Description from dim where dim.Num == ltvd1.Dimension[i]
                                      && dim.DimensionCode == sysDimGroup;
       medt.insertValue2(num_count, counter, dim.Description);
       medt.insertValue2(num_count+1, counter, int2str(i));
       counter++;
        if (h <= conLen(numDimens))
        {
            h = _idx + 1;
            this.SelDimens(qr.query(), h, sysDimGroup, ltvd1.Dimension[i], i);
        }
    }
__________________
MBS-Axapta 3.0 CIS SP3
Старый 05.12.2007, 14:47   #4  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
Silence, Вы так удивились тому, что в цикле находится условие, почему? Это как-то противоестественно? У меня куча таких вот использований, но с такой проблемой столкнулась впервые (в тех циклах все зашибись и правильно работалет, как ни странно)
__________________
MBS-Axapta 3.0 CIS SP3
Старый 05.12.2007, 15:10   #5  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от Tiruvileijadal' Посмотреть сообщение
Silence, Вы так удивились тому, что в цикле находится условие, почему? Это как-то противоестественно?
Да как раз наоборот. Просто первое что пришло в голову это:
  1. QueryRun что то выбрал
  2. цикл не While, а Do...While
  3. If находится все цикла QueryRun
Цитата:
Сообщение от Tiruvileijadal' Посмотреть сообщение
У меня куча таких вот использований, но с такой проблемой столкнулась впервые (в тех циклах все зашибись и правильно работалет, как ни странно)
У меня Ваш код работает как и должен, без каких либо несанкционированных телодвижений.


А как Вы определили, что QueryRun пустой? У вас наверняка логическая ошибка в запросе. Проверьте группировки и агрегирующие функции.
Скорее всего QueryRun, что то выбрал, но с группировкой. Соответственно в таблице не полная запись, а лишь те поля по которым шла группировка.
И при попытке
X++:
ltvd1 = qr.get(tablenum(SUG_LedgerTransDimentionsDetails));
       select Description from dim where dim.Num == ltvd1.Dimension[i]
ltvd1.Dimension не имеет значения.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 05.12.2007, 15:14   #6  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Есть ли у Вас в запросе:
X++:
qbdsltvd1.OrderMode(OrderMode::GroupBy));
qbdsltvd1.AddSortField(fieldNum(ltvd1, Dimension));
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 06.12.2007, 07:38   #7  
Tiruvileijadal' is offline
Tiruvileijadal'
Участник
Аватар для Tiruvileijadal'
 
92 / 10 (1) +
Регистрация: 15.03.2007
Адрес: Сургут
ну да, ltvd1 полностью пустая.. но я уже разобралась с этим сначала код работал нормально, потом что-то исправила не то - начал работать не так, как должен, шагаешь в дебагере и видишь, что он заходит на if, хотя все предыдущие строчки просто пролетает... короче, нужно думать, прежде чем делать... у меня обычно получается наоборот
спасибо за участие
__________________
MBS-Axapta 3.0 CIS SP3
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка while next niktata DAX: Программирование 11 20.02.2009 15:18
Простой QueryRun не работает miklenew DAX: Программирование 13 20.01.2009 14:17
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
axStart: Please keep the AOT reports in Dynamics AX next release alive Blog bot DAX Blogs 2 13.12.2008 12:18
Ошибка при выполнении queryRun.next() Poleax DAX: Программирование 6 23.07.2008 18:49

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

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

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