Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум Delphi > Форум Delphi для начинающих
Восстановить пароль Регистрация

Ответ Создать новую тему
 
08.11.2009, 22:32   #1
Creeepy
Новичок
Регистрация: 08.11.2009
Сообщений: 7
Репутация: 0 (0)
DbGrid / Delphi для начинающих

На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те данные, которые связаны по ключу с текущей строкой. Пожалуйста, подскажите как это можно реализовать. Спасибо!
08.11.2009, 22:32
AdAgent
Объявления
09.11.2009, 10:08   #2
Lord_Voodoo
Почетный модератор
Регистрация: 07.03.2007
Сообщений: 10,292
Репутация: 8368 (2038)
Лучшие ответы: 29
DbGrid

через свойства Filter и Filtred, а вот событие будет OnDataChange
Другие темы раздела
Delphi Стек
Напишите пожалуйста процедуру неразрушающей печати стека!=))
Delphi Найти все симметричные натуральные числа из промежутка
Здравствуйте, вот недавно начал изучать программирование в делфи, и нуждаюсь в помощи... Задачки просто лёгкие, я их понимаю, но не знаю как записать... Хочется увидить... и уже разобраться, что к чему) Помогите пожалуйста) Одномерные массивы 1. Переставить наибольший и наименьший элементы...
11.11.2009, 22:17  [ТС]   #3
Creeepy
Новичок
Регистрация: 08.11.2009
Сообщений: 7
Репутация: 0 (0)
DbGrid

Спасибо за ответ! Но реализовал через ADOTable... Теперь новая проблема: при внесении данных изменения динамически отображаются только в основной форме, если использую ADOTable.Refresh, то прога ругается на то, что невозможно получить данные из основной таблицы... Теперь над этим голову ломаю
11.11.2009, 22:23   #4
victor_g
Форумчанин
Регистрация: 09.11.2009
Сообщений: 198
Репутация: 60 (60)
Лучшие ответы: 2
DbGrid

я думаю, что задачу:

Цитата Сообщение от Creeepy Посмотреть сообщение
На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те данные, которые связаны по ключу с текущей строкой. Пожалуйста, подскажите как это можно реализовать. Спасибо!
- лучше решить, если компоненты (Ado)Table связать, используя свойства MasterSource и MasterFields... - тогда не надо будет писать никаких обработчиков.
Тогда и вторая проблема сама разрешится
11.11.2009, 22:23
AdAgent
Объявления
13.11.2009, 22:46  [ТС]   #5
Creeepy
Новичок
Регистрация: 08.11.2009
Сообщений: 7
Репутация: 0 (0)
DbGrid

Может кому пригодится: обновление данных в дочерних таблицах происходит посредством метода ADOTable.ReQuery. Все, конечно, просто, но я только учусь
08.02.2011, 18:11   #6
nonamez
Новичок
Регистрация: 19.05.2009
Сообщений: 17
Репутация: 0 (0)
DbGrid

уверен это очень тупой вопрос, но я уже столько всего перерыл и не нашел ответа..
добавляю данные через ADOQuery1, после добавления DBGrid обнуляется,т.е. выводит пустую таблицу, при перезапуске приложения выводится таблица с внесенным данными.
Добавил
Код Delphi
1
2
 ADOTable.Refresh();
   DBGrid.Refresh();
Ничего не изменилось..в чем проблема?
кому не сложно, ответьте пожалуйста, вам это быстро все равно, буду очень признателен
08.02.2011, 18:57   #7
sanya0107
Форумчанин
Регистрация: 14.02.2010
Сообщений: 289
Репутация: 120 (120)
Лучшие ответы: 1
DbGrid

попробуйте так
Код Delphi
1
2
3
ADOquery1.close;
ADOquery1.SQL.Add(Select * from (имя вашей таблицы));
ADOQuery1.open;
повесьте на кнопку на форме и после добавления записи нажмите на данную кнопку!
Скорей всего вы просто затираете SQL запрос на выборку данных!! Я так понял что вы используете только 1-н ADOQuery
09.02.2011, 17:59   #8
nonamez
Новичок
Регистрация: 19.05.2009
Сообщений: 17
Репутация: 0 (0)
DbGrid

спасибо, разобрался, там помимо этого был еще мой косяк.
вот только возник небольшой вопрос, чем такая конструкция
Код 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() ?
09.02.2011, 18:56   #9
sanya0107
Форумчанин
Регистрация: 14.02.2010
Сообщений: 289
Репутация: 120 (120)
Лучшие ответы: 1
DbGrid / Delphi для начинающих

Данная конструкция служит для поддержки целостности базы данных! То есть что такое Транзакция - это группа последовательных операций которая представляет собой логическую единицу работы с данными. У вас это пока не требуется (для представления простых данных). Транзакции в основном применимы при обновлении или вставке ну также и при удалении групп данных! У вас в вашем коде Транзакция получается все подтвержденной. Строкой 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();
то есть если какое- то условие не выполняется транзакция не подтверждается!
ну как-то так.
09.02.2011, 18:56
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi БД Как вывести в DBGrid информацию только по выбранной строке в другой таблице DBGrid?
У меня есть 3 таблицы - Компании, Адреса и Квартиры. Компании содержит поля - Код компании и название Адреса содержит поля - Код адреса, Адрес (улица и номер дома в одном поле прописываются) и Код компании (для связи) Квартиры содержит поля - Код квартиры, Номер квартиры, Площадь (текстовый тип...
Delphi и базы данных Ksandr 05.07.2012 06:44
C++ Builder БД [C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid
Здравствуйте! Возможно тема заезженная, но не чего путнего не нашел(может так искал!) Нужна помощь в добавлении и изменении данных в таблице БД mysql через DBGrid. На форме есть: TSQLConnectionSQLQuerySQLTableSimpleDataSetDataSource
C++ Builder и базы данных Infinity3000 02.05.2012 15:06
C++ Builder БД Вычисляемые поля dbgrid по другим полям того же dbgrid'а
Здравствуйте, уважаемые пользователи, программеры и "гуру" форума. Подскажите, пожалуйста, как переписать код, чтобы все работало с умом.. Мой код считает правильно только количество пятерок, выставленных пятью учителями 15-ю учеников (данные хранятся в базе данных. для их отображения...
C++ Builder и базы данных zener 19.03.2012 20:59
Delphi БД Из dbGrid вывести выбранные строки в другой DbGrid
Мне надо вывести Из dbGrid вывести выбранные строки в другой DbGrid, например есть 100 записей в одном DbGrid нужно вывести 1-ю и 4-ю в другую таблицу?
Delphi и базы данных dies46 28.02.2012 11:39
Delphi БД из dbgrid передать активную строку в другой dbgrid
Приветствую! Подскажите как реализовать следующее: база access, подключение Ado, на форме zakaz таблица, нужно что бы по нажатию на строку выводилась форма2, rabzakaz, на которой в dbgrid отображалась бы та активная строка используя adoquery. Спасибо!
Delphi и базы данных Mihonius 28.06.2010 19:04
Опции темы


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