Есть такая таблица:
Иванов ____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____Выход
подскажите, пожалуйста можно ли создать такой фильтр?
Нравится
Елена, создать подобный фильтр скорее всего не получится. Реализовать функционал можно посредством создания 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 мне врятли подойдет для отображения, но спасибо, буду пробовать!