Добрый день !

Есть такой запрос:

var select = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Equipment1C" });
select.isDistinct = true;
select.addColumn("OwnerCode1C");
select.addColumn("OwnerName");
select.addColumn("Account");
select.addColumn("AccountOrganizationChart");
select.addColumn("Contact");

var emptyStr = "";
select.filters.add("ownerCode1CFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "OwnerCode1C", emptyStr, Terrasoft.DataValueType.TEXT));

условие where при этом не создается.
Если, например, написать

var emptyStr = "00057";
select.filters.add("ownerCode1CFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.NOT_EQUAL, "OwnerCode1C", emptyStr, Terrasoft.DataValueType.TEXT));

то работает.

Как создать фильтр для условия

OwnerCode1C > ''

?

Нравится

2 комментария

Здравствуйте!
Попробуйте такой фильтр

select.filters.add("ownerCode1CFilter", Terrasoft.createColumnIsNotNullFilter("OwnerCode1C"));

Спасибо, получилось.
В запросе такое условие получается

NOT [Equipment1C].[OwnerCode1C] = @P1

если кому-то интересно

Показать все комментарии

Добрый день.

Хотелось бы узнать как можно отфильтровать Dataset по пустой строке. (т.е. строка не указана)
Напр. в таблице есть поле 'Number', тип - строка.
Казалось бы ApplyDatasetFilter(Dataset, 'Number', '', true) должно решить проблему, но нет. (false, null тоже не работают).

Также хотелось бы узнать как можно фильтровать по полю >, , >= и т.д. (по числовому полю)

Благодарю за помощь.

Нравится

6 комментариев

Ваши вопросы решаются добавлением новых фильтров в сервис Select Query.

В первом случае нужно сделать отдельный фильтр типа "Is Null" для этой строки. Если она кроме Null может быть и "", то надо сделать ещё и фильтр сравнения со строкой (равной пустой строке) и оба фильтра связать условием "или".

Для больше и меньше аналогично, создаются фильтры сравнения и в них вместо равенства выбирается больше или меньше.

"Зверев Александр" написал:

Ваши вопросы решаются добавлением новых фильтров в сервис Select Query.

В первом случае нужно сделать отдельный фильтр типа "Is Null" для этой строки. Если она кроме Null может быть и "", то надо сделать ещё и фильтр сравнения со строкой (равной пустой строке) и оба фильтра связать условием "или".

Для больше и меньше аналогично, создаются фильтры сравнения и в них вместо равенства выбирается больше или меньше.

Понятно, а как мне их применить, когда необходимо? Они будут нужны в зависимость от определенных условий.

Если параметры заданы прямо в фильтре, то функцией EnableDatasetFilters.

"Зверев Александр" написал:

Если параметры заданы прямо в фильтре, то функцией EnableDatasetFilters.


А если их необходимо задать в коде?

Тогда SetParameterValue.

Или ApplyDatasetFilter для одновременного включения фильтра и передачи значения. Нужно смотреть, подойдёт ли это для самодельного сложного фильтра.

"Зверев Александр" написал:

Тогда SetParameterValue.

Или ApplyDatasetFilter для одновременного включения фильтра и передачи значения. Нужно смотреть, подойдёт ли это для самодельного сложного фильтра.


Спасибо за быстрый отклик, буду пробовать.

Показать все комментарии