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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2011, 14:23   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Стандартное назначение метода fetch - это вывод данных запроса в отчёт. Т.е. если метод fetch не перекрывать, то в отчёт автоматически выведуться все строки запроса. Если нужно управлять выводом данных (например заблокировать вывод некоторых строк), то нужно перекрыть метод fetch и организовать самостоятельный обход запроса и вручную посылать нужные строки запроса в отчёт. Делается это при помощи методов element.send() или element.execute, в зависимости от используемых вами типов секций отчёта
Старый 31.03.2011, 14:49   #2  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
эта мне нужно писать select в цикле с условием
и отправлять
qr = new QueryRun(queryRun.query());

while (qr.next())
{
portJournal = qr.get(tableNum(FlxPortJournal));


if
(portJournal.FlxNumPassengersTotalArrival == !0 && portJournal.FlxNumPassengersTotalDeparture == !0)

continue;

Select......

element.send(portJournal);


}
Старый 31.03.2011, 15:00   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от romanja Посмотреть сообщение
эта мне нужно писать select
Что-то у вас полнейший сумбур в голове.

Никакого дополнительного select'а не нужно. У вас уже есть QueryRun.
QueryRun - это такой способ пробежаться по запросу Query, структуру, которого вы заблоговременно сконструировали всякими там addRange, addSortField, addSelectionField и т.д.

т.е цикл "while (qr.next()) {}" делает не что иное как перебирает записи сконструированного вами запроса. Строчка кода "portJournal = qr.get(tableNum(FlxPortJournal));" нужна для того чтобы получить текущую запись перебираемого запроса. "qr.next()" переходит на следующую строку.

Итого: в send вам нужно отправить portJournal. Дополнительно ничего выбирать не нужно
За это сообщение автора поблагодарили: kornix (1).
Старый 31.03.2011, 15:15   #4  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
ничего не понимаю, она у меня не удалила, а
добавела запись с двумя 0

qr = new QueryRun(queryRun.query());

while (qr.next())
{
portJournal = qr.get(tableNum(FlxPortJournal));


if
(portJournal.FlxNumPassengersTotalArrival == 0 && portJournal.FlxNumPassengersTotalDeparture == 0)


element.send(portJournal);


}
Старый 31.03.2011, 15:24   #5  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Вы неправильно применили правильный совет S.Kuskov'а Смотрите, вместо:
X++:
if (portJournal.FlxNumPassengersTotalArrival == 0 && portJournal.FlxNumPassengersTotalDeparture == 0)

element.send(portJournal); // так вы наоборот выводите если выполняется условие
напишите
X++:
if (portJournal.FlxNumPassengersTotalArrival == 0 && portJournal.FlxNumPassengersTotalDeparture == 0)
    continue; // если условие выполнится - цикл перейдет к след. записи
else
    element.send(portJournal); // если нет (т.е. будут не нули) в отчет попадет строка
Старый 31.03.2011, 15:38   #6  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
у меня сейчас написан код
qr = new QueryRun(queryRun.query());

while (qr.next())
{
portJournal = qr.get(tableNum(FlxPortJournal));

if
(portJournal.FlxNumPassengersTotalArrival == 0 && portJournal.FlxNumPassengersTotalDeparture == 0)

continue;
else
element.send(portJournal);

}



результат например
12
34
00
12
34


а нужно
12
34
Старый 31.03.2011, 15:44   #7  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
У вас этот код написан в методе fetch() ?
Старый 31.03.2011, 15:49   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Сразу после строки "qr = new QueryRun(queryRun.query());" вставьте ради отладки
"info(qr.query().datasourceNo(1).toString);"
Тогда вы получите сам текст сконструированного запроса. Возможно он поможет разобраться в чём проблема
Старый 31.03.2011, 15:28   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от romanja Посмотреть сообщение
ничего не понимаю, она у меня не удалила, а
добавела запись с двумя 0
Ну так что написали, то и получили.

Вы знаете как работает инструкция if?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 EP: Работа с данными в C# LEXAR DAX: Программирование 3 28.05.2010 09:10
Данные в отчете Rect DAX: Программирование 1 29.08.2007 14:12
Динамические контролы в отчете основанные на display-методе petr DAX: Программирование 19 18.09.2006 15:29
Работа с полями-массивами в отчете Dubinski Serguei DAX: Программирование 2 15.04.2004 17:03
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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