![]() |
#5 |
MCITP
|
![]() Цитата:
Сообщение от DTD
![]() Забыл упомянуть что SQL, AX4 SP2 ... ваши ссылки на "похожие темы" лишь подтверждают, что да, не работает такая комбинация на SQL.
Запрос по таблице параметров. Вопрос был как вы обходите такое ограничение ? Пока не придумал ничего красивее чем в update обновлять специальное новое поле комбинацией значений полей по которым требуется OR, а потом его фильтровать обычным образом. Попробуйте этот джоб: у меня работают оба варианта - у вас вероятно будет только 2-ой.. X++: static void Job12(Args _args) { Query q; QueryRun qr; QueryBuildDataSource qbds; QueryBuildRange qbr1; QueryBuildRange qbr2; InventTable InventTable; ; //1 q = New Query(); qbds = q.addDataSource(tableNum(InventTable)); qbr1 = qbds.addRange(fieldNum(InventTable, RecId)); qbr1.value(strFmt('((%4.%1 like "%3") || (%4.%2 like "%3"))', fieldStr(InventTable, ItemName), fieldStr(InventTable, NameAlias), "трусы*", qbds.name())); info(qbds.toString()); qr = New QueryRun(q); qr.next(); InventTable = qr.get(tableNum(InventTable)); info(InventTable.itemName); //2 q = New Query(); qbds = q.addDataSource(tableNum(InventTable)); qbr1 = qbds.addRange(fieldNum(InventTable, RecId)); qbr2 = qbds.addRange(fieldNum(InventTable, RecId)); qbr1.value(strFmt('(%1.%2 like "%3")', qbds.name(), fieldStr(InventTable, ItemName), "трусы*")); qbr2.value(strFmt('(%1.%2 like "%3")', qbds.name(), fieldStr(InventTable, NameAlias), "трусы*")); info(qbds.toString()); qr = New QueryRun(q); qr.next(); InventTable = qr.get(tableNum(InventTable)); info(InventTable.itemName); } X++: SELECT * FROM InventTable WHERE ((((InventTable_1.ItemName like "трусы*") || (InventTable_1.NameAlias like "трусы*")))) SELECT ..... FROM INVENTTABLE A WHERE ((SUBSTR(NLS_LOWER(DATAAREAID),1,3)=NLS_LOWER(:in1)/*'mil'*/) AND ((SUBSTR(NLS_LOWER(ITEMNAME),1,100) LIKE NLS_LOWER(:in2)/*'трусы*'*/ ESCAPE '\' ) OR (SUBSTR(NLS_LOWER(NAMEALIAS),1,50) LIKE NLS_LOWER(:in3)/*'*'*/ ESCAPE '\' ))) ORDER BY SUBSTR(NLS_LOWER(A.DATAAREAID),1,3),SUBSTR(NLS_LOWER(A.ITEMID),1,20) SELECT * FROM InventTable WHERE (((InventTable_1.ItemName like "трусы*")) OR ((InventTable_1.NameAlias like "трусы*"))) SELECT ..... FROM INVENTTABLE A WHERE ((SUBSTR(NLS_LOWER(DATAAREAID),1,3)=NLS_LOWER(:in1)/*'mil'*/) AND ((SUBSTR(NLS_LOWER(ITEMNAME),1,100) LIKE NLS_LOWER(:in2)/*'трусы*'*/ ESCAPE '\' ) OR (SUBSTR(NLS_LOWER(NAMEALIAS),1,50) LIKE NLS_LOWER(:in3)/*'*'*/ ESCAPE '\' ))) ORDER BY SUBSTR(NLS_LOWER(A.DATAAREAID),1,3),SUBSTR(NLS_LOWER(A.ITEMID),1,20)
__________________
Zhirenkov Vitaly |
|
Теги |
like, запрос (query), критерии |
|
|