Проблема с повторным запросом на выборку данных, сервиса Select Query
Есть следующая функция в которой создается SQL QUERY сервис, при повторном вызове данной функции не происходит обнуление сервиса и в результате в нем содержатся данные предыдущего запроса. Как обнулить сервис или сделать новую выборку?
if (FieldName == 'CountryID') {
// Получить CountryTelAreaCode по CountryID
if (!Assigned(SelectQuery)) {
SelectQuery = Services.GetSingleItemByUSI('sq_Country');
}
SetParameterValue(SelectQuery.Parameters, 'Name', Self.DataFields.ItemsByName('CountryID').DisplayValue);
var TotalsDataset = SelectQuery.Open();
try {
var CountryTelAreaCode = TotalsDataset.ValAsStr('CountryTelAreaCode');
var TelAreaCodeDataField = Self.DataFields.ItemsByName('TelAreaCode');
if (Self.DataFields.ItemsByName('CityTelAreaCode').Value==null)
TelAreaCodeDataField.Value=CountryTelAreaCode+'()';
else
TelAreaCodeDataField.Value=CountryTelAreaCode+'('+ Self.DataFields.ItemsByName('CityTelAreaCode').Value+')';
}
finally {
TotalsDataset.Close();
}
}
}
Нравится
Здравствуйте!
В SelectQuery данные не содержатся. В нем хранятся только значения параметров. Я предполагаю что у Вас не изменяется значение параметра. Более точно об этом Вы сможете узнать посмотрев SQL profiler.
Проверял отладчиком MSVS параметр Self.DataFields.ItemsByName('CountryID').DisplayValue изменяется, а вот результат выборки нет. Версия TS CRM 3.2.1.11.
Значит фильтр по Name не включается. Вместо SetParameterValue используйте - ApplySelectQueryFilter. А в "работает" - это совпадение, так как Вы видете первую запись из набора данных...