|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отображение записей подчиненной таблицы
Помогите с фильтрацией. Есть 2 таблицы книги и разделы ADODataSet DataSourse база в Access таблица разделы главная связь один ко многим, то есть 1 раздел несколько книг, делаю фильтрацию через ComboBox таким способом
Код:
procedure TForm3.FormCreate(Sender: TObject); var i:integer; begin for i:=0 to DataModule2.RazDS.RecordCount-1 do begin Combobox1.Items.Add( DataModule2.RazDS.FieldByName('Раздел').AsString); //заносим название книги end; end; procedure TForm3.ComboBox1Change(Sender: TObject); begin DataModule2.RazDS.filter:='Раздел = '+QuotedStr(Combobox1.text); //фильтруем записи по названию DataModule2.RazDS.Filtered :=true; end; подскажите как сделать кнопку или строку в комбобоксе "показать все" при нажатии которой отображались все записи подчиненной таблицы Книги, другими словами что бы связь пропадала |
#2
|
|||
|
|||
Ну и введи первую запись "Все" в а фильтре проверяй так:
Код:
procedure TForm3.ComboBox1Change(Sender: TObject); begin DataModule2.RazDS.filter:='Раздел = '+QuotedStr(Combobox1.text); //фильтруем записи по названию DataModule2.RazDS.Filtered :=ComboBox1.ItemIndex > 1; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Brons14 (28.05.2015)
|
#3
|
|||
|
|||
Дело в том, что таблица является подчиненной, как сделать что бы отображались все книги как в акцесе, потому что в делфи, например, в таблице разделы выбран раздел Техническая литература, то в гриде Книги отображаются только книги раздела Техническая литература, а при таком коде он делает все записи в комбо как первая
|
#4
|
|||
|
|||
Ну, если уж на то пошло, то записи в cb одинаковые из-за ошибки в твоем коде его заполнения (кто будет на след. запись переключаться за тебя?)
Код:
procedure TForm3.FormCreate(Sender: TObject); var i:integer; begin ComboBox1.Items.Clear; ComboBox1.Items.Add('Все'); DataModule2.RazDS.First; While Not DataModule2.RazDS.EOF Do begin; Combobox1.Items.Add( DataModule2.RazDS.FieldByName('Раздел').AsString); //заносим название книги DataModule2.RazDS.Next; end; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Brons14 (22.05.2015)
|
#5
|
|||
|
|||
Спасибо, так в комбо добавляются записи, но при нажатии Все в гриде вообще пропадают записи, т.е. фильтруются записи по значению "Все" но такого значения в таблице разделы нет, "все" подразумевается отображать все записи которые есть в ADODataSet Книги, в таблице акцесс книги, а не только те которые принадлежат какому то разделу из главной таблице
|