|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Убрать повтор записей в combobox
Доброго времени суток. Имеется база данных Access через ADO. На форме DBGrid и Combobox. В таблице есть поле год, по которому надо проводить фильтрацию, т.е. в combobox выбираешь нужный год, и в DBGrid отображаются только проекты выбранного года. Код следующий:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject); begin if ComboBox1.Text<>'Выбрать год' then DataModule2.ADOQuery1.Filter:='Год='+QuotedStr(ComboBox1.Text) else DataModule2.ADOQuery1.Filter:=''; end; Все бы ничего, вот только в combobox каждый год отображается столько раз, сколько записей о нем в таблице. Как сделать, чтобы каждый год отображался только один раз и при этом фильтр работал? |
#2
|
|||
|
|||
А код которым Combobox заполняете можно?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#3
|
|||
|
|||
используйте при заполнении проверку
Код:
ComboBox1.Items.IndexOf('значение') > -1 взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 13.04.2011 в 10:08. |
#4
|
|||
|
|||
Цитата:
Код:
procedure TForm1.FormActivate(Sender: TObject); begin ComboBox1.Clear; ComboBox1.Items.Add('Выбрать год'); DataModule2.ADOQuery1.First; while not DataModule2.ADOQuery1.Eof do begin ComboBox1.Items.Add(DataModule2.ADOQuery1.FieldByName('Год').AsString); DataModule2.ADOQuery1.Next; end; DataModule2.ADOQuery1.First; ComboBox1.Text:='Выбрать год'; end; |
#5
|
||||
|
||||
Луче запрос покажи.
|
#6
|
|||
|
|||
Код:
procedure TForm1.FormActivate(Sender: TObject); var year: string; begin ComboBox1.Clear; ComboBox1.Items.Add('Выбрать год'); DataModule2.ADOQuery1.First; while not DataModule2.ADOQuery1.Eof do begin year := DataModule2.ADOQuery1.FieldByName('Год').AsString; if (ComboBox1.Items.IndexOf(year) = -1) then ComboBox1.Items.Add(year); DataModule2.ADOQuery1.Next; end; DataModule2.ADOQuery1.First; ComboBox1.Text := 'Выбрать год'; end; но лучше конечно Год выбирать отдельным запросом с DISTINCT, примерно так: Код:
SELECT DISTINCT Год FROM Таблица ORDER BY Год Код:
SELECT Год FROM Таблица GROUP BY Год взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя Последний раз редактировалось Assistant, 13.04.2011 в 11:40. |
#7
|
|||
|
|||
Огромное спасибо!)
|