Фильтр запроса

Здравствуйте.

Помогите пожалуйста разобраться:

В запросе добавила параметр CreditTypeID и фильтр с тем же именем (рис. sq)
Передала значение параметру CreditTypeID (рис. sq_Parametr)
Присвоила филтру значение параметра (рис. sq_Where)
Сохранила запрос и посмотрела в Preview (рис. sq_Preview)
На рисунке видно условие where. Но когда работает запрос, в профайлере нет условия where(рис. Profiler), и данные не фильтруются.

Спасибо.

Нравится

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

Добрый день Марина!!!

вопрос. В базе данных  CreditTypeID.Type какой имеет тип? Так как называете вы параметр CreditTypeID, по логике данный параметр должен иметь тип  uniqueidentifier , а в вашем случае данный параметр имеет Числовой тип. Это не ошибка?

Не ошибка, имена параметра и условия неудачно написала, в базе данных CreditDetails.Type типа int.

Версия программы 3.2.0.90

Такое поведение, что вы описали может происходить когда вы программно отключаете Фильтр, при выполнение запроса. Приведите в пример тот кусок кода где вы обращаетесь к Датасету или Запросу и исполняете его.

function RefreshWorkspace() {

var GridDataset = BaseWorkspace.GridDataset;
if (!GridDataset) {
return;
}
try {
GridDataset.Close();
GridDataset.Open(); // здесь profiler захватывает запрос(без фильтра)

Попробовала так:
написала в скрипте грида, который должен фильтроваться

function dlDataOnDatasetBeforeOpen(Dataset, DoOpen)
{
ApplyDatasetFilter(Dataset, 'CreditDetailType', 52, true);
}

но фильтр все еще не работает

после моей фильтрации работает следующая функция написанная в scr_ContactCreditWorkspace

function dlContactCreditOnDatasetBeforeOpen(Dataset) {
var IsInSingleRowMode = GetIsInSingleRowMode();
if (IsInSingleRowMode != true) {
ApplyStandardWorkspaceFilter();
}
}

и грид не фильтруется. Но если писать мой фильтр прямо в этой функции, после ApplyStandardWorkspaceFilter()

function dlContactCreditOnDatasetBeforeOpen(Dataset) {
var IsInSingleRowMode = GetIsInSingleRowMode();
if (IsInSingleRowMode != true) {
ApplyStandardWorkspaceFilter();
ApplyDatasetFilter(Dataset, 'CreditDetailType', 52, true);
}
}
то работает.

Вопрос, можно ли так писать?

Добрый день Марина!!!

да так можно включать преднастроенные фильтры в SQL запросе. Молодцы что разобрались сами.

Спасибо Михаил.

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