Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
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
Lord_Voodoo
Почетный модератор
8370 / 2040 / 29
Регистрация: 07.03.2007
Сообщений: 10,292
09.11.2009, 10:08
  #2
через свойства Filter и Filtred, а вот событие будет OnDataChange
Creeepy
Новичок
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
11.11.2009, 22:17  [ТС]
  #3
Спасибо за ответ! Но реализовал через ADOTable... Теперь новая проблема: при внесении данных изменения динамически отображаются только в основной форме, если использую ADOTable.Refresh, то прога ругается на то, что невозможно получить данные из основной таблицы... Теперь над этим голову ломаю
victor_g
Форумчанин
60 / 60 / 2
Регистрация: 09.11.2009
Сообщений: 198
11.11.2009, 22:23
  #4
я думаю, что задачу:

Цитата Сообщение от Creeepy Посмотреть сообщение
На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те данные, которые связаны по ключу с текущей строкой. Пожалуйста, подскажите как это можно реализовать. Спасибо!
- лучше решить, если компоненты (Ado)Table связать, используя свойства MasterSource и MasterFields... - тогда не надо будет писать никаких обработчиков.
Тогда и вторая проблема сама разрешится
Creeepy
Новичок
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
13.11.2009, 22:46  [ТС]
  #5
Может кому пригодится: обновление данных в дочерних таблицах происходит посредством метода ADOTable.ReQuery. Все, конечно, просто, но я только учусь
nonamez
Новичок
0 / 0 / 0
Регистрация: 19.05.2009
Сообщений: 17
08.02.2011, 18:11
  #6
уверен это очень тупой вопрос, но я уже столько всего перерыл и не нашел ответа..
добавляю данные через ADOQuery1, после добавления DBGrid обнуляется,т.е. выводит пустую таблицу, при перезапуске приложения выводится таблица с внесенным данными.
Добавил
Код Delphi
1
2
 ADOTable.Refresh();
   DBGrid.Refresh();
Ничего не изменилось..в чем проблема?
кому не сложно, ответьте пожалуйста, вам это быстро все равно, буду очень признателен
sanya0107
Форумчанин
120 / 120 / 1
Регистрация: 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
nonamez
Новичок
0 / 0 / 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() ?
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi DBgrid
1. Как задать ширину столбца? (То есть я в графическом отображении в программе в колумнс я меняю ширину, однако когда запускаешь (ф9) столбец очень длинный) 2. При вводе определенных значений...
Delphi для начинающих Vologd 30.11.2013 04:33
Delphi DBGrid
Как подсчитать количество строк в таблице (DBGrid), при условии, что строки увеличиваются!
Delphi для начинающих LeraLeraLera 03.06.2013 21:13
Delphi DBGrid
Здравствуйте столкнулся с такой проблемой что нужно в таблице DBGrid в поле дата реализовать вывод список дат и что бы можно было добавлять их , что то вроде comboBoks тока с добавлением новой даты,...
Delphi для начинающих kip4ak008 27.04.2013 08:43
Delphi БД Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid?
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля - Код компании и название Адреса содержит поля - Код адреса, Адрес (улица и номер дома в одном поле прописываются) и Код...
Delphi и базы данных Ksandr 05.07.2012 06:44
C++ Builder БД [C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid
Здравствуйте! Возможно тема заезженная, но не чего путнего не нашел(может так искал!) Нужна помощь в добавлении и изменении данных в таблице БД mysql через DBGrid. На форме есть: ...
C++ Builder и базы данных Infinity3000 02.05.2012 15:06
Delphi DBGrid > TreeView > DBGrid
Пдскажите плиз как переоткыть правильно TreeView. TreeView > DBGrid работает без проблем, а вот DBGrid > TreeView при меремещении по записям дорисовывает уже созданые ветки, делаю клер TreeView...
Delphi для начинающих SiDimka 17.04.2012 20:57
C++ Builder БД Вычисляемые поля dbgrid по другим полям того же dbgrid'а
Здравствуйте, уважаемые пользователи, программеры и "гуру" форума. Подскажите, пожалуйста, как переписать код, чтобы все работало с умом.. Мой код считает правильно только количество пятерок,...
C++ Builder и базы данных zener 19.03.2012 20:59
Delphi dbgrid
В ячейке DBGrid'а лежит в виде обычной текстовой строки путь до файла. Как сделать, чтобы при щелчке мышью по этой ячейке файл запускался? Datasource DBGrid'а подключен к adoquery (если это важно).
Delphi для начинающих beginnerx 17.02.2011 18:51
Опции темы

Текущее время: 04:09. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.