Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Исключение записи из выборки


Страницы:   1 2

Rouse_ ©   (2004-05-25 14:03:00) 

Ситуация:
при помощи ADOQuery делаю выборку записей и модифицирую их по определенному алгоритму...
Но иногда бывает что в выборку попадают записи которые в данный момент мне не нужны.
В качестве примера:
производим поиск всех записей начинающихся с букв "ул"
в результате имеем кучу записей выглядящих как:
"улица Каширская"
"ул. Пролетарская"
но среди них затесывается иногда и такое:
"Ульяновск"
"Улан-Удэ"
(данные привел просто как пример)

Теперь вопрос:
Можно ли как нибудь исключить записи мне не подходящие в данный момент из общей выборки?
Свойства Remove я к сожалению не нашел...

Почему не подходит модификация запроса в виде WHERE?
Потому что сам запрос выполняется в течении нескольких секунд и с каждой удаленной таким макаром записью ждать заново еще несколько секунд некрасиво...

Почему не подходит фильтр?
Фильтр может быть и подходит, но в дальнейшем я передаю всю выборку в таблицу таким способом:
ADOTable.RecordSet := ADOQuery.RecordSet;
и продолжаю работать уже через таблицу...
По всей видимости придется плодить строку фильтра с каждым удалением.

А есть ли более элегантный способ исклюдения записи из выборки ( не удаления ее из физической таблицы)


Rouse_   (2004-05-25 14:19:00) [21]

Нет, понял ты конечно правильно но немного не так :)
см > [2] Vlad ©   (25.05.04 14:11):)

А нужно именно исключение вручную из уже сделанной выборки определенных записей...

т.е. я их пробежал, щелкнул на одной, нажал кнопку исключить и она уже не в текущей выборке (но осталась в основной базе)
нашел следущую, также руками выделяем, жмем "исключить" и так пока не просмотрим всю выборку и убедимся что она подходит нам для того чтобы передать ее некой процедуре для дальнейшей работы уже с получившейся выборкой записей...


Sandman25+1   (2004-05-25 14:16:00) [22]

[2] Vlad ©   (25.05.04 14:11)

OnFilterRecord может использоваться другими свойствами/методами TDataSet, в том числе и RecordSet, а пользовательская функция заведомо никем не используется. Хотя, возможно, действительно нет никакой разницы.


Vlad   (2004-05-25 14:11:00) [23]


> Sandman25+1   (25.05.04 14:08) [1]


> то я бы в этот цикл добавил вызов функции, возвращающей
> значение True только для тех записей, которые нужно изменять

Ну это фактически тоже что и DataSet.OnFilterRecord


Sandman25+1   (2004-05-25 14:08:00) [24]

Не уверен, что правильно понял, но все же попробую.
Если нельзя написать update и очень хочется работать именно с While not Eof do ... Next, то я бы в этот цикл добавил вызов функции, возвращающей значение True только для тех записей, которые нужно изменять.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо