|
14.01.2014, 12:35 | #1 |
Участник
|
Так работает
Цитата:
X++: qbds.addRange(fieldnum(table1,field1)).value(strfmt("!1*")); qbds.addRange(fieldnum(table1,field1)).value(strfmt("!2*")); Последний раз редактировалось maldini; 14.01.2014 в 12:37. |
|
14.01.2014, 13:22 | #2 |
Участник
|
Во внутреннем представление кодов полей. В первом случае query считает что поля разные, а условия на разные поля соединяются по 'И'.
Сравните X++: info("%1", fieldnum(table1,field1)); info("%1", fieldId2Ext(fieldnum(table1,field1), 1)); |
|
14.01.2014, 13:54 | #3 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Во внутреннем представление кодов полей. В первом случае query считает что поля разные, а условия на разные поля соединяются по 'И'.
Сравните X++: info("%1", fieldnum(table1,field1)); info("%1", fieldId2Ext(fieldnum(table1,field1), 1)); X++: addRange(fieldnum(table1,field1)).value(strfmt("!1*,!2*")); X++: queryBuildDataSource = query.addDataSource(tablenum(InventTable)); queryBuildDataSource.addSelectionField(fieldnum(InventTable, ItemId)); queryBuildDataSource.addRange(fieldnum(InventTable, ItemId)).value(strfmt("!1*,!2*")); Код: Оператор SQL: (InventTable) SELECT A.ITEMID,A.RECID FROM INVENTTABLE A WHERE ((DATAAREAID=?) AND ( NOT ((ITEMID LIKE ? ESCAPE '\' )) AND NOT ((ITEMID LIKE ? ESCAPE '\' )))) ORDER BY A.DATAAREAID,A.ITEMID Последний раз редактировалось maldini; 14.01.2014 в 13:57. |
|
14.01.2014, 16:24 | #4 |
Участник
|
А это уже по другой причине. Это не расширенный синтаксис, а обыкновенный. И через запятую в нём обычные условия добавляются по ИЛИ, но в случае добавления отрицания - по ИЛИ. Так всегда было
P.S.: См. также Отличия операторов ! и != в фильтрах |
|