Форум программистов, компьютерный форум CyberForum.ru

Delphi и базы данных

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 150, средняя оценка - 4.66
Creeepy
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
#1

При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором - Delphi БД

08.11.2009, 22:32. Просмотров 18086. Ответов 8
Метки нет (Все метки)

На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те данные, которые связаны по ключу с текущей строкой. Пожалуйста, подскажите как это можно реализовать. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2009, 22:32     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором
Посмотрите здесь:

Перенести данные из одного dbgrid в другой - Delphi БД
Здравствуйте! Подскажите как можно реализовать следующее, есть две рядомстоящие таблицы dbgrid, в одной из них список адресов другой...

Перемещение по записям, query и DBGrid - Delphi БД
Привет всем! На форме есть 2 Grid'a. В Grid1 выводится набор данных из qry2.(Эта часть работает). Далее нужно в Grid2 вывести набор...

Как сделать поиск по записям через RadioButton в DBgrid? - Delphi БД
Здравствуйте. Возникла такая задача. Нужно умудрится сделать поиск через radiobutton'ы в dbgrid. На форме есть сам DBgrid, подключенный...

Отображать таблицы в DBGrid с использованием RadioButton - Delphi БД
Есть 3 таблицы, 1 DBGrid и 3 RadioButton. Настроенная по умолчанию таблица отображается нормально, а остальные нет. Выводит поля первой...

Формат даты в DbGrid, как не отображать время? - Delphi БД
В Access поле дата (Краткий формат даты), маска ввода (00.00.0000;0;_) В Access дата отображается как надо 01.01.1999 без времени, а в...

Проблемы с кодировкой при выгрузке данные в dbGrid - Delphi БД
Здравствуйте, столкнулся с проблемой: Я использую MyDac для подключения к БД MySql и выгружаю данные в dbGrid, ну так вот после выгрузке...

При заполнении DBGrid сохранять данные в таблицу - Delphi БД
Добрый день, прошу вашей помощи. Создан DBGrid данные подтягиваются из ADOQuery. Как написать программный код и куда, чтобы при...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
8582 / 2182 / 61
Регистрация: 07.03.2007
Сообщений: 10,864
Завершенные тесты: 1
09.11.2009, 10:08     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #2
через свойства Filter и Filtred, а вот событие будет OnDataChange
Creeepy
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
11.11.2009, 22:17  [ТС]     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #3
Спасибо за ответ! Но реализовал через ADOTable... Теперь новая проблема: при внесении данных изменения динамически отображаются только в основной форме, если использую ADOTable.Refresh, то прога ругается на то, что невозможно получить данные из основной таблицы... Теперь над этим голову ломаю
victor_g
60 / 60 / 2
Регистрация: 09.11.2009
Сообщений: 198
11.11.2009, 22:23     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #4
я думаю, что задачу:

Цитата Сообщение от Creeepy Посмотреть сообщение
На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те данные, которые связаны по ключу с текущей строкой. Пожалуйста, подскажите как это можно реализовать. Спасибо!
- лучше решить, если компоненты (Ado)Table связать, используя свойства MasterSource и MasterFields... - тогда не надо будет писать никаких обработчиков.
Тогда и вторая проблема сама разрешится
Creeepy
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
13.11.2009, 22:46  [ТС]     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #5
Может кому пригодится: обновление данных в дочерних таблицах происходит посредством метода ADOTable.ReQuery. Все, конечно, просто, но я только учусь
nonamez
1 / 1 / 0
Регистрация: 19.05.2009
Сообщений: 17
08.02.2011, 18:11     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #6
уверен это очень тупой вопрос, но я уже столько всего перерыл и не нашел ответа..
добавляю данные через ADOQuery1, после добавления DBGrid обнуляется,т.е. выводит пустую таблицу, при перезапуске приложения выводится таблица с внесенным данными.
Добавил
Delphi
1
2
 ADOTable.Refresh();
   DBGrid.Refresh();
Ничего не изменилось..в чем проблема?
кому не сложно, ответьте пожалуйста, вам это быстро все равно, буду очень признателен
sanya0107
121 / 121 / 4
Регистрация: 14.02.2010
Сообщений: 289
08.02.2011, 18:57     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #7
попробуйте так
Delphi
1
2
3
ADOquery1.close;
ADOquery1.SQL.Add(Select * from (имя вашей таблицы));
ADOQuery1.open;
повесьте на кнопку на форме и после добавления записи нажмите на данную кнопку!
Скорей всего вы просто затираете SQL запрос на выборку данных!! Я так понял что вы используете только 1-н ADOQuery
nonamez
1 / 1 / 0
Регистрация: 19.05.2009
Сообщений: 17
09.02.2011, 17:59     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #8
спасибо, разобрался, там помимо этого был еще мой косяк.
вот только возник небольшой вопрос, чем такая конструкция
Delphi
1
2
3
ADOquery1.close;
ADOquery1.SQL.Add(Select * from (имя вашей таблицы));
ADOQuery1.open;
отличается от конструкции с ADOConnection.BeginTrans(), аля
Delphi
1
2
3
4
5
6
7
8
9
10
11
ADOConnection1.Open();
ADOConnection1.BeginTrans();
  with ADOQuery1 do
   begin
     with SQL do begin
        Clear;
        Add('SELECT * FROM STUDENTS');
     end;
     Open();
   end;
ADOConnection1.CommitTrans();
ну то есть зачем нужны ADOConnection.BeginTrans()/ADOConnection1.CommitTrans() ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2011, 18:56     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором
Еще ссылки по теме:

Как связать stringgrid c записью в DBgrid - Delphi БД
Подскажите пожалуйста. В stringrid заполнены ячейки. Как привязать эти данные к одной записи в DBgrid.

Контроль данных в DBGrid перед записью - Delphi БД
В таблице все поля обязательны для заполнения. Использую связку MyTable -> MyDataSource -> DBGridEh. Как проконтролировать заполнение...

WideMemo в DbGrid на текущей записе - Delphi БД
Кто знает как решить проблему с WideMemo в dbGrid, когда указатель на текущей строке? Как в целом решить проблему с WideMemo DBGrid я...

Как узнать сколько строк стал отображать DBGrid после фильтрации? - Delphi БД
Есть программа в которой отображается, например, 100 записей таблицы, после фильтрации по адресу, в BDGrid стало отображаться Х записей....

MS Access Очистка текущей ячейки DbGrid если в вводе после запятой значение больше 5 - Delphi БД
Как сделать в дбгрид очистка текущего ячейки если в вводе после запятой значение больше 5. Например: 55,?? После запятой не должно свыше...


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

Или воспользуйтесь поиском по форуму:
sanya0107
121 / 121 / 4
Регистрация: 14.02.2010
Сообщений: 289
09.02.2011, 18:56     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором #9
Данная конструкция служит для поддержки целостности базы данных! То есть что такое Транзакция - это группа последовательных операций которая представляет собой логическую единицу работы с данными. У вас это пока не требуется (для представления простых данных). Транзакции в основном применимы при обновлении или вставке ну также и при удалении групп данных! У вас в вашем коде Транзакция получается все подтвержденной. Строкой ADOConnection1.BeginTrans();
вы запускаете транзакцию, а строкой ADOConnection1.CommitTrans(); подтверждаете!
а примерно так должна выглядеть конструкция с применением транзакций
Delphi
1
2
3
4
5
6
ADOConnection1.BeginTrans();
try 
ADOquery1.SQL.Add(insert into( тут таблица и поля)  values(значения));
ADOConnection1.CommitTrans();
except 
ADOConnection1.RollbackTrans();
то есть если какое- то условие не выполняется транзакция не подтверждается!
ну как-то так.
Yandex
Объявления
09.02.2011, 18:56     При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором
Ответ Создать тему
Опции темы

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