![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток. Имеется база данных 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Последний раз редактировалось 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 Год Последний раз редактировалось Assistant, 13.04.2011 в 11:40. |
|
#7
|
|||
|
|||
|
Огромное спасибо!)
|