02.07.2015, 09:54 | #1 |
Участник
|
QueryRange условие через И по одному полю?
Добрый день, задался вопросом - можно ли в query сделать условие по одному полю через И?
П.С. Судя по всему меня не понимают. если я напишу "001....009,002", то выпадет очень много записей, точнее все от 001 до 009, ибо два условия ("001..009" и "002") соединяются через или. А есть ли возможность объединить через и? Спасибо! Последний раз редактировалось АртемМелихов; 02.07.2015 в 10:22. |
|
02.07.2015, 10:07 | #2 |
Участник
|
В ADDLink соединение по "ИЛИ"
http://www.axaptapedia.com/Expressions_in_query_ranges там же есть про "И" А вообще это базовые вещи. Документацию посмотрите по программированию в X++. |
|
02.07.2015, 10:17 | #3 |
Участник
|
Цитата:
Сообщение от Logger
В ADDLink соединение по "ИЛИ"
http://www.axaptapedia.com/Expressions_in_query_ranges там же есть про "И" А вообще это базовые вещи. Документацию посмотрите по программированию в X++. |
|
02.07.2015, 10:19 | #4 |
Участник
|
Несколько раз делайте addRange
Из ссылок предоставленных выше: Filter on array fields X++: queryBuildRange.value(strFmt('((%1.%2 == "%4") || (%1.%3 == "%5"))' Последний раз редактировалось Товарищ ♂uatr; 02.07.2015 в 10:23. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
02.07.2015, 10:22 | #5 |
Участник
|
Цитата:
Посмотрите лучше вторую она более информативна. Можно попробовать синтаксис ExtendedQuery. Там хорошо получится. Последний раз редактировалось Logger; 02.07.2015 в 11:38. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
02.07.2015, 10:28 | #6 |
Участник
|
Цитата:
Разве 1 значение в поле может единовременно быть верным для двух различных фиксированных (не like) условий? (тем не менее, решение изложено выше) |
|
02.07.2015, 10:36 | #7 |
Участник
|
Ещё вот так можно Not Like в Query (трюк с адресацией на тоже самое поле но по немного другому номеру при помощи fieldId2Ext)
или с использованием дополнительного джойна Как в range на одно и тоже контейнерное поле поставить условие: "исключ." && like Последний раз редактировалось S.Kuskov; 02.07.2015 в 10:53. |
|
|
За это сообщение автора поблагодарили: АртемМелихов (1). |
02.07.2015, 15:05 | #8 |
Дмитрий Ерин
|
Цитата:
Пример: X++: mainQbds = query.addDataSource(tablenum(InventTable)); mainQbds.addRange(fieldnum(InventTable, ItemId)).value("001..009, 002"); filterQbds = mainQbds.addDataSource(tablenum(InventTable)); filterQbds.relations(true); filterQbds.joinMode(JoinMode::ExistsJoin); filterQbds.addRange(fieldnum(InventTable, ItemId)).value("007..020, 006");
__________________
|
|
02.07.2015, 16:53 | #9 |
Участник
|
Цитата:
Сообщение от Ruff
Судя по постановке, речь идет о том, что одно из условий накладывается программно, а второе - прилетает от пользователя? Если так, то пользовательский фильтр может сам оказаться довольно сложным (типа "001..009, 100..109, 777*"). В этом случае формировать запрос через ExtendedQuery - муторно, IMHO.
Ставим наш программный фильтр на какое нить поле, скрытое от пользователя, например на tableId. А пользователь ставит свои фильтры. Получается пересечение. Примеры на скриншотах - Использован номенклатурный справочник. Только вместо поля TableId использовано поле с наименованием. |
|
|
За это сообщение автора поблагодарили: Ruff (2). |
Теги |
query |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|