фильтры Вчера, Сегодня, Завтра

В разделе создала вот такой вот фильтр

111

Все вроде как работает, но если ставить промежуток времени за Вчера, Сегодня, Завтра фильтр убирает все записи. При выставлении периода ,например с 10.10 по 12.10, записи за 12.10 не отображаются. Получается если дата = верхней границы фильтра она уже не отображается.

Код ф-ии ApplyFilters:

function ApplyCustomWorkspaceFilters(Dataset) {
// Period filter
if (!IsEmptyValue(dtcFromDate.DataField.Value) && !IsEmptyValue(dtcToDate.DataField.Value)) {
var FromDate = new Date(dtcFromDate.DataField.Value);
var ToDate = new Date(dtcToDate.DataField.Value);
Dataset.SelectQuery.Parameters('StartDate').Value = FromDate.getVarDate();
Dataset.SelectQuery.Parameters('EndDate').Value = ToDate.getVarDate();
EnableDatasetFilters(Dataset, chbShowForPeriod.IsChecked, 'DatePeriod');
} else {
EnableDatasetFilters(Dataset, false, 'DatePeriod');
}
// Owner filter
if (!IsEmptyValue(edtContact.Value)) {
ApplyDatasetFilter(Dataset, 'OwnerID', edtContact.Value,
chbShowForContact.IsChecked);
} else {
ApplyDatasetFilter(Dataset, 'OwnerID', null, false);
}
}

Фильтр DatePeriod состоит из:

Compare Filter StartDate:
tbl_Attendance.Date >= Parameter StartDate [Дата/Время]
Compare Filter EndDate:
tbl_Attendance.Date = Parameter EndDate [Дата/Время]

Нравится

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

Здравствуйте Елена
Проверьте, пожалуйста debugger'ом значения которые передаются в реальном времени. Мое предположение что параметр ToDate = new Date(dtcToDate.DataField.Value); мы получаем в формате 12.10.2011 при этом время будет 12.10.2011 00:00:00 следовательно в выборке не будет записей за 12.10.2011 так как мы проверяем все что есть меньше времени 00:00:00, для решения нужно добавить +1 день к дате ToDate

Проблема действительно была в том что сравнивалось время, которое было = 00:00:00.

Изменила код на

function ApplyCustomWorkspaceFilters(Dataset) {
// Period filter
if (!IsEmptyValue(dtcFromDate.DataField.Value) && !IsEmptyValue(dtcToDate.DataField.Value)) {
var FromDate = new Date(dtcFromDate.DataField.Value);
var ToDate = new Date(dtcToDate.DataField.Value);
Dataset.SelectQuery.Parameters('StartDate').Value = FromDate.getVarDate();
// Добавила
ToDate.setHours(ToDate.getHours() + 24);

Dataset.SelectQuery.Parameters('EndDate').Value = ToDate.getVarDate();
EnableDatasetFilters(Dataset, chbShowForPeriod.IsChecked, 'DatePeriod');
} else {
EnableDatasetFilters(Dataset, false, 'DatePeriod');
}
...

Все работает!
Спасибо за помощь!

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