27.02.2013, 19:29 | #1 |
Участник
|
Сложный Range
Задаем несложный Range:
X++: str60 wrkgroup = "W0123*"; ; queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value( strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) ); queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value( wrkgroup ); Задача: Убрать верхнюю строчку из lookup, т.е. отображать только тех фрезеровщиков у которых есть разряд. Читаем: Expressions in query ranges Сложный Range с датами Пытаемся повторить : X++: str60 wrkgroup = "W0123*"; str60 notwrkgroup = "W012300000"; queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value( strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) ); queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value( strFmt('( (%1 == "%2") && (%1 != "%3") )', fieldStr(wrkCtrTable, WrkCtrId), queryValue( wrkgroup) ) queryValue( notwrkgroup ) ) ); Делаем запрос на таблице, убеждаемся что все таки имеются записи удовлетворяющие нашим условиям: Пытаемся решить задачу своими силами: немного упрощаем Range: X++: str60 wrkgroup = "W0123*"; queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrGroupId )).value( strFmt('(%1 == %2)', fieldStr( wrkCtrTable, WrkCtrGroupId ), fieldStr( wrkCtrTable, WrkCtrId ) ) ); queryBuildDatasource.addRange( fieldNum( wrkCtrTable, WrkCtrId )).value( strFmt(' (%1 == "%2") ', fieldStr(wrkCtrTable, WrkCtrId), queryValue( wrkgroup ) ) ); Что я делаю не так? |
|