![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключение записи из выборки
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 только для тех записей, которые нужно изменять.