Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/17: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Нюта
8 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 56
1

Связать два DBGrid на одной форме

29.04.2013, 13:52. Просмотров 3208. Ответов 6
Метки нет (Все метки)

Нужно связать два DBGrid находящихся на одной форме.
Как это сделать?

Объясните пожалуйста как-нибудь попроще, я не особо знаю Delphi, только основы, и то не все...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2013, 13:52
Ответы с готовыми решениями:

Как построить два графика на одной форме?
помогите плиз,как в делфи построить два графика в одной форме? это как бы...

Delphi связать несколько dbgrid
Уважаемые программисты у меня есть программа (ссылка на программу...

Одна кнопка на одной форме, активирует другую на другой форме
Нажатием на кнопку активирует другую кнопку на другой форме не совсем понимаю

Использование переменных, объявленных в одной форме, в другой форме
Возможно ли где-нибудь или как-нибудь объявить переменные, которые можно...

Связать два модуля
Всем привет! Xотелось бы связать два модуля. Чтобы модуль 1 подключался к...

6
Waddonator
962 / 638 / 96
Регистрация: 01.11.2012
Сообщений: 1,447
29.04.2013, 17:06 2
DBGrid не хранят данные, а только их отображают. Связать их невозможно. Можно связать между собой их DBGrid.DataSource.DataSet. Если у вас Table'ы - свяжите их посредством MasterSource/MasterFields, если Query - в событии AfterScroll главной таблицы настраивайте фильтр вручную для зависимой таблицы.
2
Нюта
8 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 56
29.04.2013, 17:51  [ТС] 3
У меня Table'ы. Извините, а как это сделать с помощью MasterSource/MasterFields?
0
Waddonator
962 / 638 / 96
Регистрация: 01.11.2012
Сообщений: 1,447
29.04.2013, 17:56 4
Нюта, Выбираете Table, который подключен к зависимой таблице и в инспекторе объектов в свойстве MasterSource выбираете главную таблицу. Затем выбираете свойство MasterFields, в инспекторе объектов нажимаете [...] и в открывшемся окне создаете связь между таблицами по ключевому полю.
После этого, при выборе записи в главной таблице - в зависимой будут отображаться только те, у которых совпадает ключевое поле.
2
Kostantin-78
0 / 0 / 1
Регистрация: 17.03.2012
Сообщений: 158
01.05.2015, 13:14 5
Доброе время суток,
Работаю с компонентами «ADOConnection» и «ADOQuery»,
такая тоже проблема: в БД, есть «ADOQuery»: aqService и aqOperator. Два grid соответственно отображают с них данные. В aqService, есть ссылка на aqOperator.
Задача: при хождении по aqService, grid aqOperator, должен становиться на нужную строку.
В aqService написал:
Delphi
1
2
3
4
procedure TFMain.aqServiceAfterScroll(DataSet: TDataSet);
begin
  aqOperator.Locate('ID', aqService.FieldByName('OPERATOR_ID').AsInteger, []);
end;
Если соединение с БД закрыто (при проектировании), т.е. «ADOConnection.Connected := false», то при запуске приложения, ошибка:

Project PrClient.exe raised exception class EDatabaseError with message 'aqOperator: Cannot perform this operation on a closed dataset'. Process stopped. Use Step or Run to continue.

Соответственно данные не отображаются в grid «aqOperator».
Если соединение с БД открыто (при проектировании), т.е. «ADOConnection.Connected := true» (соответственно 2 «ADOQuery.Active» тоже true), то при запуске приложения, ошибка:

Project PrClient.exe raised exception class EOleException with message 'Операция не допускается, если обект открыт'. Process stopped. Use Step or Run to continue.

И так и сяк, - ошибка.
Как избавиться о ошибки?

Спасибо всем откликнувшимся.
0
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,747
01.05.2015, 13:51 6
Самое простое
Delphi
1
2
3
4
procedure TFMain.aqServiceAfterScroll(DataSet: TDataSet);
begin
  if aqOperator.Active then aqOperator.Locate('ID', aqService.FieldByName('OPERATOR_ID').AsInteger, []);
end;
1
Kostantin-78
0 / 0 / 1
Регистрация: 17.03.2012
Сообщений: 158
01.05.2015, 13:57 7
Да, вы правы,
я сейчас полазил по настройкам «ADOConnection» и «ADOQuery», и все заработало (aqOperator.Active перестал устанавливаться в "false") :-)
До этого у меня каким-то образом (но это я уже не узнаю), после "true", летел "aqOperator.Active = false"
0
01.05.2015, 13:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2015, 13:57

Как связать два Combobox-а?
как связать Два Combobox? помогите плиз код если можно

Как связать два комбобокса
Как связать два комбобокса? Например HTTP из первого комбобокса и Anonymous из...

Связать между собой два модуля
Такая вот проблема. Надо лабу делать по программированию и одно из главных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru