05.12.2007, 13:42 | #1 |
Участник
|
while (queryRun.next())
День добрый
Я понимаю, что все уже в этом смысле набили руку и все запросы работают в лет, но возник вопрос и я не знаю что в поиске писать, чтоб найти ответ на этот вопрос: при ситуации, когда queryRun пуст, он весь код, который содержиться в цикле while (queryRun.next()) { } пропускает... кроме условий if !!! почему? мне не надо, чтоб он это условие отбрабатывал, т.к. оно должно работать только если queryRun что-то выбрал (в самом условии конечно это не прописано, там обработка простой переменной). Что делать? (или где читать про это?)
__________________
MBS-Axapta 3.0 CIS SP3 |
|
05.12.2007, 13:50 | #2 |
Участник
|
If находится в цикле WHILE???
Приведите код. ЗЫ.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
05.12.2007, 14:43 | #3 |
Участник
|
продолжение той же темы про 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 |
Участник
|
Silence, Вы так удивились тому, что в цикле находится условие, почему? Это как-то противоестественно? У меня куча таких вот использований, но с такой проблемой столкнулась впервые (в тех циклах все зашибись и правильно работалет, как ни странно)
__________________
MBS-Axapta 3.0 CIS SP3 |
|
05.12.2007, 15:10 | #5 |
Участник
|
Цитата:
Цитата:
А как Вы определили, что QueryRun пустой? У вас наверняка логическая ошибка в запросе. Проверьте группировки и агрегирующие функции. Скорее всего QueryRun, что то выбрал, но с группировкой. Соответственно в таблице не полная запись, а лишь те поля по которым шла группировка. И при попытке X++: ltvd1 = qr.get(tablenum(SUG_LedgerTransDimentionsDetails)); select Description from dim where dim.Num == ltvd1.Dimension[i]
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
05.12.2007, 15:14 | #6 |
Участник
|
Есть ли у Вас в запросе:
X++: qbdsltvd1.OrderMode(OrderMode::GroupBy));
qbdsltvd1.AddSortField(fieldNum(ltvd1, Dimension));
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу) |
|
06.12.2007, 07:38 | #7 |
Участник
|
ну да, ltvd1 полностью пустая.. но я уже разобралась с этим сначала код работал нормально, потом что-то исправила не то - начал работать не так, как должен, шагаешь в дебагере и видишь, что он заходит на if, хотя все предыдущие строчки просто пролетает... короче, нужно думать, прежде чем делать... у меня обычно получается наоборот
спасибо за участие
__________________
MBS-Axapta 3.0 CIS SP3 |
|