Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.11.2014, 17:22
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Фильтр для DBGrig

Здравствуйте уважаемые!! Вопрос у меня пустяковый и вполне вероятно что на него уже отвечали на форуме, но все же я его задам.
Дела обстоят следующим образом:
База данных на Access;
На форме расположен DBGgid, который связан с таблицей "Студенты" с полями id, id_grup и fio;
Еще на форме присутствует DBLookupComboBox, который в свою очередь связан с таблицей "Группы" с полями id и nam;
Так вот, как сделать чтобы при выборе группы в таблице отображались студенты только этой группы??
Перепробовал несколько вариантов, но ничего не получилось, либо ума не хватает, либо руки не из того места растут.
Заранее спасибо!!

Последний раз редактировалось PATRIOT.34, 02.11.2014 в 21:20.
Ответить с цитированием
  #2  
Старый 02.11.2014, 21:21
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Вот нашел такую же тему, но результат нулевой http://www.delphisources.ru/forum/sh...ad.php?t=12407
Ответить с цитированием
  #3  
Старый 03.11.2014, 02:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

я бы делал через Master-Detail, При этом с Master'ом связан твой ComboBox (вот не уверен, что в этом случае Lookup нужен, а проверять лень ), а с Detail'ом - грид.

Но есть более простой вариант.
Получаешь список групп и заполняешь обычный ComboBox, при этом заполняешь через AddObject, где вторым параметром кладешь id группы.
Далее в DataSet (или DataSource, опять же не помню точно) делаешь обработчик события OnFilterRecord, где проверяешь соотв. id группы выбранной группе или нет.
Ответить с цитированием
  #4  
Старый 03.11.2014, 08:26
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Я бы сделал еще проще, я бы просто базу перечитывал бы при изменении состояний компонентов. (ASC, DESC по нужному полю менял бы).
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 03.11.2014, 13:28
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Я делаю так:
Кидаю на форму DBGrid, DBLookupComboBox, 2ADOQuery и 2DataSource;
Связываю их
DBLookupComboBox1>>DataSource1>>ADOQuery1
DBGrid1>>DataSource2>>ADOQuery2;
ADOQuery1 connection=DM.ADOConnection1 и аналогично у ADOQuery2,
В datasourse ничего не выбираю;
У ADOQuery1 прописываю
Код:
SELECT fio
FROM TStud
WHERE id_gr=:id
и перевожу active в true. При запуске была ошибка(ProjectProject1.exe raised excaption class EDatabaseError with messege "Messing Connection on ConnectionString"), от этого я избавился прописав БД в connectionstring;
У ADOQuery2 прописываю
Код:
select * from TGrupp
перевожу active в true и сразу же вылезает ошибка типа ядро базы данных не может найти входную таблицу или запрос 'TGrupp'.
ГДЕ КОСЯК?? Помогите пожалуйста

Последний раз редактировалось PATRIOT.34, 03.11.2014 в 13:52.
Ответить с цитированием
  #6  
Старый 03.11.2014, 14:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Херней какой-то занимаетесь с визуальными компонентами.
У вас ConnectionString у ADOConnection правильно сформирована?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 03.11.2014, 14:11
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Да правильно, несколько раз проверял
Ответить с цитированием
  #8  
Старый 03.11.2014, 14:14
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

M.A.D.M.A.N. опишите пожалуйста свой способ поподробнее, так сказать для чайников
Ответить с цитированием
  #9  
Старый 03.11.2014, 18:52
Аватар для PATRIOT.34
PATRIOT.34 PATRIOT.34 вне форума
Прохожий
 
Регистрация: 02.11.2014
Адрес: Волгоградская область
Сообщения: 11
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Все, сделал)) Может конечно это и не оптимальный вариант, но главное работает. Напишу детали, вдруг кому пригодится.
На форму кинул DBGrid, DBLookupComboBox, 2DataSource и 2ADOTable;
Связал их
DBLookupComboBox1>>DataSource2>>ADOTable2
DBGrid1>>DataSource1>>ADOTable2;
Прописал connectionstring у обоих ADOTable и указал у них соответствующие tablename. У ADOTable1 это таблица "Студенты", а ADOTable2 это таблица "Группы";

У DBLookupComboBox указал keifield(по этому значению будет фильтрация в таблице, в моем случае это id) и listfield(это будет отображаться в списке DBLookupComboBox, у меня это nam), у него же по клику прописал следующий код:
Код:
procedure TForm3.DBLookupComboBox1Click(Sender: TObject);
begin
ADOTable1.filter:='id_gr=' + ADOTable2.fields.fields[0].AsString;
ADOTable1.filtered:=true;
end;
Здесь id_gr это поле, которое будет фильтроваться.
Может где-то написал тупость, т.к. плохо знаю терминологию, так что если что извиняйте))
СПАСИБО ВСЕМ КТО ПЫТАЛСЯ МНЕ ПОМОЧЬ!!!

Последний раз редактировалось PATRIOT.34, 03.11.2014 в 19:22.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter