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

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

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

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

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

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

Как правильно обновить данные поля со списком при переходе по записям? - MS Access
И снова здравствуйте... Есть форма Заказы с вложенной табличной формой СоставЗаказа. В этой вложенной форме есть поле Товар, куда пишется...

При выборе значения в первом списке, в остальных оставить только с ним связанные данные - C# ASP.NET
Доброго времени суток. столкнулся с проблемой: на странице имеется несколько выпадающих списков. как сделать, чтобы при выборе в первом...

Связанные таблицы. Отображать во второй DGV данные, которые относятся к выбранной записи в первой - C#
Есть два datagridview. Если в datagridview1 в свойствах указать таблицу из связанной базы, а в datagridview2 связь этой таблицы с другой,...

В DBGrid нужно отображать только 3 колонки по запросам - C++ Builder БД
Есть таблица firms с полями id, name, par1, par2. В DBGrid нужно отображать только 3 колонки по запросам: Select id, name, par1 From...

Содержимое поля со списком должно изменяться при переходе по записям в соответствии с полем hostname - MS Access
Приветствую уважаемых посетителей форума! Есть форма в которой есть поле со списком. Содержимое поля со списком должно изменяться (само)...

1C 8.x Отображать документы только одного склада - 1С
Здравствуйте. Можно ли настроить учет так, чтобы у конкретного пользователя отображались документы только по одному складу? дело в том,...

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

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

Отображать столбцы DBGrid при нажатии на CheckBox - Delphi
Основные данные пациента выводятся в DBGrid, но есть около шести ЧекБоксов, чтобы при нажатии на которые выводились второстепенные данные в...

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

При (двойном) клике на строке в dbgrid отображать в другой форме информацию из выбранной строки грида - Delphi БД
Ребят помогите плз. Хочу сделать так чтобы при (двойном) клике на строке в dbgride открывалась 2 форма и на ней в компонент memo выводилась...

Сохранение информации при переходе от одного контроллера к другому - Программирование iOS
Есть несколько классов наследующих UIViewController(GameViewController,ShareViewController,AboutViewController) Вопрос в том,как...


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

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

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