![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать автофильтр в БД?
JazY © (2005-12-24 02:50:00)У меня 2 вопроса и оба навеяны Экселем. Вот в Экселе есть очень удобная функция автофильтр. Особую радость приносит эта функция поскольку в выпадающем списке видны только те строки, которые есть в таблице. Я пытаюсь реализовать подобную функцию, но на базе Делфи. Главная цель проводить фильтр по клиентам и при этом брать клиентов только тех, что указаны в таблице. Алгоритм примерно я придумал такой. При загрузке таблицы в Dbgrid все данные из поля "клиенты" заносятся в combobox. Затем из соmbobox убираются одинаковые строки и таким образом, остаются только те клиенты, которые есть в конкретной таблице и имена клиентов не дублируются. Вопросы в этой связи такие! Как быстро загрузить данные из поля "Клиенты" из всей таблицы и как удалить одинаковые строки?
Сейчас я использую такой код:
while not adotable1.Eof do
begin
....
adotable1.Next;
end;
С его помощью я просматриваю всю таблицу и вытаскивыю из поля клиенты имена всех клиентов, которые есть в этой таблице, но проблема в том, что получается очень долго. Нельзя ли ускорить процесс и как удалить одинаковые строки.
Очень нужен исходник.
Заранее благодарен.
Megabyte (2005-12-24 17:57:00) [1]
> и как удалить одинаковые строки?
В запросе используй distinct(select distinct ...) - выбирается одна строка из одинаковых. Если я правильно понял, что тебе надо.
JazY (2005-12-24 14:55:00) [2]
> DBComboBox + проиндексируй базу по этому полю.
А нельзя ли по подробней. Как проиндексировать? Программно? Из DBComboBox? Я же начинающий не могли бы вы по подробней объяснить?
vidiv (2005-12-24 08:03:00) [3]
> Затем из соmbobox убираются одинаковые строки и таким образом,
> остаются только те клиенты, которые есть в конкретной таблице
> и имена клиентов не дублируются.
А не проще сделать подзапрос?
PS Хотя я не знаю, с базами на дельфи не работал никогда. Прошу прощения, если что
TUser (2005-12-24 06:39:00) [4]
> С его помощью я просматриваю всю таблицу и вытаскивыю из
> поля клиенты имена всех клиентов, которые есть в этой таблице,
> но проблема в том, что получается очень долго. Нельзя ли
> ускорить процесс и как удалить одинаковые строки.
DBComboBox + проиндексируй базу по этому полю.