Фильтрирование по разнице во времени

Есть такая таблица:

Иванов ____10.10.2011______9:30:34____Вход
Иванов ____10.10.2011______9:30:36____Выход
Иванов_____10.10.2011_____18:03.02____Выход

Стоит задача создать такой фильтр, который бы убирал записи где:
фамилия одинакова И дата одинакова И время отличается менее чем на 2 минуты.
т.е. должен быть результат:

Иванов ____10.10.2011______9:30:34____Вход
Иванов_____10.10.2011_____18:03.02____Выход

подскажите, пожалуйста можно ли создать такой фильтр?

Нравится

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

Елена, создать подобный фильтр скорее всего не получится. Реализовать функционал можно посредством создания MemoryDataset, который в дальнейшем использовать для отображения данных.
Заполнение MemoryDataset выполнять в событии MemoryDatasetAfterOpen приблизительно таким образом:

var MemoryDataset =;
var Dataset =;
Dataset.DataFields('Name').OrderType = otAsc;
Dataset.DataFields('Name').OrderPosition = 1;
Dataset.DataFields('DateField').OrderType = otAsc;
Dataset.DataFields('DateField').OrderPosition = 2;
Dataset.Open();
CopyMemoryDatasetRowData(Dataset, MemoryDataset);
var PreviousDate = Dataset('DateField');
var PreviousName = Dataset('Name');
Dataset.GotoNext();
while (!Dataset.IsEOF) {
         if ((GetDateDiff(PreviousDate, Dataset('DateField'), 'Minute') < 2) && (PreviousName == Dataset('Name'))) {
                   PreviousDate = Dataset('DateField');
         } else {
                   CopyMemoryDatasetRowData(Dataset, MemoryDataset);
                   PreviousDate = Dataset('DateField');
                   PreviousName = Dataset('Name');
         }
         Dataset.GotoNext();
}
Dataset.Close();

Функция CopyMemoryDatasetRowData реализована в сервисе scr_DB.
Обращаю Ваше внимание, что приведенный код является примером реализации функционала, а не конечным решением.

Наталия, спасибо за ответ. Memory мне врятли подойдет для отображения, но спасибо, буду пробовать!

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