Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2011, 08:47   #1
Stian
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 14
По умолчанию Убрать повтор записей в combobox

Доброго времени суток. Имеется база данных Access через ADO. На форме DBGrid и Combobox. В таблице есть поле год, по которому надо проводить фильтрацию, т.е. в combobox выбираешь нужный год, и в DBGrid отображаются только проекты выбранного года. Код следующий:

Код:
procedure TForm1.ComboBox1Change(Sender: TObject); 
begin i
f ComboBox1.Text<>'Выбрать год' then DataModule2.ADOQuery1.Filter:='Год='+QuotedStr(ComboBox1.Text) else DataModule2.ADOQuery1.Filter:=''; 
end;
Все бы ничего, вот только в combobox каждый год отображается столько раз, сколько записей о нем в таблице. Как сделать, чтобы каждый год отображался только один раз и при этом фильтр работал?
Stian вне форума Ответить с цитированием
Старый 13.04.2011, 09:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не понял, у Вас обычный ComboBox или DBComboBox ?!
Если обычный - где код заполнения комбобокса?!

А вообще, не надо ничего удалять - самый простой и эффективный способ - выполнить запрос вида:
Код:
 SELECT Год from ВашаТаблица group by Год order by Год
или же, если это по какой-то причине не возможно/не желательно,тогда в том цикле, где добавляются записи в комбобокс вставить дополнитленую проверку - если запись есть в комбобоксе, то её уже не добавлять.

p.s. можно и удалить повторяющиеся записи из комбобокса, это не сложно, просто зачем удалять то, что не должно там быть - проще устранить причину появления дубликатов..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.04.2011, 10:11   #3
Stian
Пользователь
 
Регистрация: 28.02.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не понял, у Вас обычный ComboBox или DBComboBox ?!
Если обычный - где код заполнения комбобокса?!
Обычный, вот код:

Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
ComboBox1.Clear;
ComboBox1.Items.Add('Выбрать год');
DataModule2.ADOQuery1.First;
while not DataModule2.ADOQuery1.Eof do
begin
СomboBox1.Items.Add(DataModule2.ADOQuery1.FieldByName('Год').AsString);
 DataModule2.ADOQuery1.Next;
end;
DataModule2.ADOQuery1.First;
ComboBox1.Text:='Выбрать год';
end;
Stian вне форума Ответить с цитированием
Старый 13.04.2011, 10:24   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, оба ("цивильных") предложенных мною варианта полностью Вам подходят.
я бы рекомендовал через запрос - быстрее, проще и эффективнее!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2012, 18:54   #5
eltoro1994
Новичок
Джуниор
 
Регистрация: 22.10.2012
Сообщений: 1
По умолчанию

у меня вопрос:как в delphi6 при записи в combobox убрать повторения?если запись можно сделать и большими и маленькими буквами?
eltoro1994 вне форума Ответить с цитированием
Старый 22.10.2012, 19:49   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

eltoro1994, а чем Вас не устраивает мой ответ из пост #2 ?!

Если нужно игнорировать регистр, то это делается просто - приводите записи к одному регистру (либо UpperCase, либо LowerCase).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убрать повтор записей в combobox Stian БД в Delphi 3 13.04.2011 13:00
Повтор madmaniac Общие вопросы C/C++ 2 21.02.2011 20:45
Как в Combobox убрать список? Alexi Компоненты Delphi 10 04.01.2011 08:25
Извените за повтор !!! Killdgedan Помощь студентам 1 24.12.2008 21:10