|
![]() |
#1 |
Участник
|
![]() Никакого дополнительного select'а не нужно. У вас уже есть QueryRun. QueryRun - это такой способ пробежаться по запросу Query, структуру, которого вы заблоговременно сконструировали всякими там addRange, addSortField, addSelectionField и т.д. т.е цикл "while (qr.next()) {}" делает не что иное как перебирает записи сконструированного вами запроса. Строчка кода "portJournal = qr.get(tableNum(FlxPortJournal));" нужна для того чтобы получить текущую запись перебираемого запроса. "qr.next()" переходит на следующую строку. Итого: в send вам нужно отправить portJournal. Дополнительно ничего выбирать не нужно |
|
|
За это сообщение автора поблагодарили: kornix (1). |
![]() |
#2 |
Участник
|
ничего не понимаю, она у меня не удалила, а
добавела запись с двумя 0 qr = new QueryRun(queryRun.query()); while (qr.next()) { portJournal = qr.get(tableNum(FlxPortJournal)); if (portJournal.FlxNumPassengersTotalArrival == 0 && portJournal.FlxNumPassengersTotalDeparture == 0) element.send(portJournal); } |
|
![]() |
#3 |
MCP
|
Вы неправильно применили правильный совет 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); // если нет (т.е. будут не нули) в отчет попадет строка |
|
![]() |
#4 |
Участник
|
у меня сейчас написан код
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 |
|
![]() |
#5 |
MCP
|
У вас этот код написан в методе fetch() ?
|
|
![]() |
#6 |
Участник
|
вот такой код там еще добавились поля
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; } |
|
![]() |
#7 |
Участник
|
Сразу после строки "qr = new QueryRun(queryRun.query());" вставьте ради отладки
"info(qr.query().datasourceNo(1).toString);" Тогда вы получите сам текст сконструированного запроса. Возможно он поможет разобраться в чём проблема |
|
![]() |
#8 |
Участник
|
|
|
|
![]() |
||||
Тема | Ответов | |||
DAX2009 EP: Работа с данными в C# | 3 | |||
Данные в отчете | 1 | |||
Динамические контролы в отчете основанные на display-методе | 19 | |||
Работа с полями-массивами в отчете | 2 |
|