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

Delphi dbgrid
Delphi DBGrid
Delphi dbgrid
Delphi DBGrid
Delphi DBGrid
Lord_Voodoo
Почетный модератор
8377 / 2047 / 30
Регистрация: 07.03.2007
Сообщений: 10,303
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. Все, конечно, просто, но я только учусь
AdAgent
Объявления
13.11.2009, 22:46     DbGrid
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
Форумчанин
120 / 120 / 1
Регистрация: 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
Еще ссылки по теме:

Delphi DBGrid
Delphi DBGrid
Delphi DBgrid

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

Или воспользуйтесь поиском по форуму:
sanya0107
Форумчанин
120 / 120 / 1
Регистрация: 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Опции темы

Текущее время: 14:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Яндекс.Метрика