|
15.01.2009, 14:18 | #1 |
Программатор
|
Расширенный фильтр в запрос или как то так
Честно говоря, нахожусь в легком ступоре.
Хочу в init датасорса формы добавить что то типа this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value("больше к примеру поля salesPrice"); Пытался сделать чтота типа s = "salesline.CreatedInPurch"; this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value(strFmt('>%1',s)); Но не фурычит. как это сделать? Заранее спасибо Последний раз редактировалось Sada; 15.01.2009 в 14:23. |
|
15.01.2009, 14:26 | #2 |
Moderator
|
Ну, как-то так?
X++: ...value('(SalesLine.SalesQty>SalesLine.SalesPrice)'); X++: ...value('(SalesQty>SalesPrice)'); X++: this.query().dataSourceTable(tableNum(SalesLine)). addRange(fieldNum(SalesLine, RecId)).value('(SalesQty>SalesPrice)'); |
|
|
За это сообщение автора поблагодарили: Sada (1). |
15.01.2009, 14:26 | #3 |
MCITP
|
Цитата:
Сообщение от Sada
Честно говоря, нахожусь в легком ступоре.
Хочу в init датасорса формы добавить что то типа this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value("больше к примеру поля salesPrice"); Пытался сделать чтота типа s = "salesline.CreatedInPurch"; this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value(strFmt('>%1',s)); Но не фурычит. как это сделать? Заранее спасибо Вложенный датасорс с QueryRun Ну только у вас будет что-то типа X++: qbr.value(strFmt('( (%1.%2 > %1.%3) )' ,qbds.name() ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesQty)) ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesPrice)) );
__________________
Zhirenkov Vitaly |
|
15.01.2009, 16:04 | #4 |
Участник
|
Цитата:
X++: FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesQty)) X++: fieldStr(SalesLine, SalesQty) X++: static void jbTableFieldName(Args _args) { ; info( strfmt( "fieldId2Name{SalesLine, SalesQty}: %1", fieldId2Name( tableNum(SalesLine), fieldNum(SalesLine, SalesQty ) ) ) ) ; info( strfmt( "fieldStr(SalesLine, SalesQty): %1", fieldStr( SalesLine, SalesQty ) ) ) ; } |
|
15.01.2009, 16:09 | #5 |
MCITP
|
Согласен, вообще я так вроде обычно и делаю, через fieldStr... Просто тогда скопировал откуда-то, в той теме, на которую ссылку давал, чтоб не набирать, не особо задумываясь... Счас скопировал оттуда ещё раз...
__________________
Zhirenkov Vitaly |
|
15.01.2009, 14:36 | #6 |
Программатор
|
2Gustav последний Ваш вариент работает как надо. Спасибо большое. Делал такое несколько лет назад. Чота забыл все. Всем спасибо. Тему можно закрывать Запомню такое на всю жизнь
|
|
15.01.2009, 14:49 | #7 |
Moderator
|
Это что! Я тут недавно тоже столкнулся с похожей проблемой, так ответ нашёл у... себя, "нескольколетназаднего" : Связи и Query.
Кстати, ловушка была в том, что в моем случае одно поле надо было квалифицировать с именем датасорса, а второе - без. Это тоже надо не забывать - для условий, включающих поля разных датасорсов. |
|
15.01.2009, 14:54 | #8 |
MCITP
|
Цитата:
Согласен, в таком простом случае, когда поля из одной таблицы можно обойтить и вариантом пороще, используемый Вами, но в случае кода связать нужно разные таблицы, то вариант с strFmt мне кажется предпочтительнее. А в случае, когда в квере несколько одинаковых таблиц участвует, то может оказаться и незаменимым..
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: Gustav (1). |