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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2011, 15:00   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 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   #2  
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   #3  
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   #4  
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   #5  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
У вас этот код написан в методе fetch() ?
Старый 31.03.2011, 15:48   #6  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
вот такой код там еще добавились поля


void getRangeValues()

{
QueryRun qr;
FlxPortJournal portJournal;

QueryBuildDataSource qbds = this.queryRun().query().dataSourceTable(tableNum(FlxPortJournal));
;

if (this.queryRun())
{

qbds = this.queryRun().query().dataSourceTable(tableNum(FlxPortJournal));
}
else
{

qbds = this.query().dataSourceTable(tableNum(FlxPortJournal));
}



rv1 = qbds.findRange(fieldNum(FlxPortJournal,CalculatingPort)).value();
rv3 = qbds.findRange(fieldNum(FlxPortJournal,ArrivalDate)).value();
rv5 = qbds.findRange(fieldNum(FlxPortJournal,DepartureDate)).value();
rv7 = qbds.findRange(fieldNum(FlxPortJournal,PierOfArrival)).value();
rv8 = qbds.findRange(fieldNum(FlxPortJournal,ShipsName)).value();
qbds.addSortField(FieldNum(FlxPortJournal,ShipsType));
qbds.orderMode(OrderMode::GroupBy);
qbds.addSortField(FieldNum(FlxPortJournal,ShipsName));
qbds.orderMode(OrderMode::GroupBy);
rv10 = qbds.findRange(fieldNum(FlxPortJournal,CustName)).value();
rv2 = qbds.addRange(fieldNum(FlxPortJournal, ArrivalStatus)).value("2");
qbds.addSelectionField(fieldNum(FlxPortJournal,FlxNumPassengersTotalArrival),SelectionField::Sum);
qbds.addSelectionField(element.getcruisepassengers(),SelectionField::Sum);


qbds.addSelectionField(fieldNum(FlxPortJournal,FlxPortPcsArrival),SelectionField::Sum);
qbds.addSelectionField(fieldNum(FlxPortJournal,FlxNumPassengersTotalDeparture),SelectionField::Sum);
qbds.addSelectionField(fieldNum(FlxPortJournal,FlxPortPcsDeparture),SelectionField::Sum);
qbds.addSelectionField(fieldNum(FlxPortJournal,FlxNumPassengersTransitArrival),SelectionField::Sum);




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);


}

}



public boolean fetch()
{
boolean ret;
QueryBuildDataSource qbds;



if (this.queryRun())
{
qbds = this.queryRun().query().dataSourceTable(tableNum(FlxPortJournal));
}
else
{
qbds = this.query().dataSourceTable(tableNum(FlxPortJournal));
}



this.getRangeValues();
ret = super();

qbds = this.query().dataSourceTable(tableNum(FlxPortJournal));



return ret;
}
Старый 31.03.2011, 15:49   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Сразу после строки "qr = new QueryRun(queryRun.query());" вставьте ради отладки
"info(qr.query().datasourceNo(1).toString);"
Тогда вы получите сам текст сконструированного запроса. Возможно он поможет разобраться в чём проблема
Старый 31.03.2011, 15:28   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 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, время: 07:40.