Простая настройка тестирования: отдел: сотрудник, 1: М и форма поиска, которая позволяет выполнять фильтрацию по Emploee FirstName =, фамилия =, адрес электронной почты содержит, возраст> =, дата присоединения <= и соответствующий отдел =. </p>
Форма поиска с виджетами, привязанными к параметрам сценария запроса источника данных облака SQL.
Кнопка отправки в форме поиска, которая открывает страницу результатов запроса с таблицей, привязанной к источнику данных сценария запроса облака SQL.
скрипт запроса
var params = query.parameters;
return getEmployeeRecords_(
params.param_FirstName,
params.param_LastName,
params.param_Email,
params.param_StartDate,
params.param_Age,
params.param_Department
);
и
function getEmployeeRecords_( firstName, lastName, email, startDate, age,
department) {
var ds = app.models.Employee.newQuery();
if ( firstName !== null ) {
ds.filters.FirstName._equals = firstName;
}
if ( lastName !== null ) {
ds.filters.LastName._equals = lastName;
}
if ( email !== null) {
ds.filters.Email._contains = email;
}
if ( startDate !== null) {
ds.filters.StartDate._greaterThanOrEquals = startDate;
}
if ( age !== null) {
ds.filters.Age._lessThanOrEquals = parseInt(age, 10);
}
if ( department !== null) {
ds.filters.Department.Department._equals = department;
}
var records = ds.run();
// intention is to store this value for future use
var recs = records.length;
return records;
}
На странице результатов для подкачки источника данных сценария запросапросто сломанЗапрос, который корректно возвращает 8 записей, для которых размер страницы запроса установлен на 5, позволяет мне заставить пейджер перейти на страницу 1000, если я хочу, но источник данных всегда остается на первой странице записей.Если для размера страницы установлено, например, 100, правильно отображается правильный набор результатов.
Фактически все, что я делаю с такого рода запросами, имеет проблемы с подкачкой страниц.Если я вставлю этот код
var ds = app.models.Employee.newQuery();
//ds.filters.FirstName._equals = firstName;
//ds.filters.LastName._equals = lastName;
//ds.filters.Email._contains = '.com';
//ds.filters.StartDate._greaterThanOrEquals = startDate;
ds.filters.Age._lessThanOrEquals = 40;
//ds.filters.Department.Department._equals = department;
ds.sorting.Age._ascending();
var records = ds.run();
return records;
непосредственно в скрипт запроса источника данных, у меня все еще будут похожие проблемы с подкачкой.
Если я использую скрипт построителя запросов, такой как
(
FirstName =? :param_FirstName and
LastName =? :param_LastName and
Email contains? :param_Email and
StartDate >=? :param_Startdate and
Age <=? :param_Age and
Department.Department =? :param_Department
)
и привязки, такие как
@datasources.Search_Query_Builder.query.parameters.param_FirstName
это работает без проблем.То же самое с прямой фильтрацией, где мы используем привязки, такие как
@datasources.Employee.query.filters.FirstName._equals
У кого-либо есть идеи в отношении того, что не так с этим материалом.Нам нужны скрипты запросов для большего контроля, например, возможность получить количество записей и где вы должны фильтровать для условия, когда вы ограничиваете данные, например, вошедший в систему пользователь связан с клиентом, который, в свою очередь, связан со свойствоми значение свойства ограничено в соответствии с клиентом.
... Просто глядя на разрабатываемое реальное приложение и использование сценария запроса в редакторе сценария запроса источника данных, без параметров, без привязки, только этот код: -
var ds = app.models.Incident.newQuery();
ds.filters.Id._greaterThanOrEquals = 200;
ds.filters.Id._lessThanOrEquals = 300;
var records = ds.run();
return records;
и размер страницы, установленный на 20, и снова подкачка идет вверх по течению, никогда не выходит за пределы первой страницы записей, несмотря на увеличение номера страницы.