Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24

Отображение полей в DBGrid с несколькими связанными таблицами

10.02.2013, 19:49. Показов 4001. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте)
Мой вопрос таков: я создала в Access базу данных, в которой есть 2 таблицы, связанные один-к-одному, далее в Билдере мне нужно отобразить обе таблицы на двух DBGrid, используя ADOQuery. Подскажите, пожалуйста, как лучше всего можно это сделать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.02.2013, 19:49
Ответы с готовыми решениями:

Как работать с несколькими связанными между собой таблицами?
Доброго время суток, форумчяни! Я вот пытаюсь разобраться как можно работать с несколькими таблицами которые между собой связаны (база...

Yii. Работа с несколькими таблицами и отображение их в CGridView
В сети есть решения данной задачи. Есть хорошие и есть плохие. Например, метод 1: Фрагмент класса модели: class Sample extends...

Отображение полей в DBGrid
Есть 2 Таблицы Сотрудники и Образование.В таблице сотрудники есть поле Код_Образования мне нужно чтобы чтобы вместо кода_Образования...

8
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.02.2013, 20:38
Lovan, здравствуйте!
А можно для начала поинтересоваться насчет связи "один-к-одному"? Что она представляет?

А по теме: для упрощения рекомендовал бы Вам использовать компонент ADOTable, в котором для связей есть соответствующие свойства: MasterSource и MasterFields.
0
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
10.02.2013, 21:04  [ТС]
Спасибо за ответ. Есть две таблицы, первая содержит: Код, ФИО, личные данные. Вторая содержит: Код, Учёная степень, Учёное звание. Связываются по коду. Это не реальная задача, а пример. Мой вопрос в том, как с помощью SQL запросов заполнить 2 DBGrid так, чтобы в одном содержалась 1-ая таблица, а во втором - 2-ая. И ещё один вопрос: как можно добавлять новые записи, если есть вот такие 2 связанные таблицы?

Добавлено через 18 минут
Расскажите, пожалуйста, как можно связать таблицы через Master Source.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.02.2013, 22:01
Lovan,
Цитата Сообщение от Lovan Посмотреть сообщение
Есть две таблицы, первая содержит: Код, ФИО, личные данные. Вторая содержит: Код, Учёная степень, Учёное звание. Связываются по коду. Это не реальная задача, а пример.
Очень неудачный пример для связи "1 к 1", надо сказать Положим, Иванов у нас доктор и профессор. А так случилось, что и Петров является доктором и профессором. Но, увы, этот Код (1, доктор, профессор) уже занят на Иванове =/

Ну да ладно. Предлагаю следующую условную структуру приведенного Вами выше примера.

Работники
Код Фамилия КодСтепеньЗвание
1 Иванов 1
2 Петров 1
3 Сидоров 2

СтепеньЗвание
Код УченаяСтепень УченоеЗвание
1 доктор профессор
2 кандидат доцент

Поле СтепеньЗвание.Код соединено с полем Работники.КодСтепеньЗвание как "1 ко многим".

Итак, что мы хотим? При выборе конкретного работника узнавать какие у него УЗ и УС?
Если так, то тогда проделаем следующее.

Кидаем на форму:
- ADOConnection;
- ADOTable (2 шт.);
- DataSource (2 шт.);
- DBGrid (2 шт.).

Надеюсь как связать все это между собой вопросов не возникнет.

В ADOTable1 в свойстве TableName указываем "Работники".
В ADOTable2 в свойстве TableName указываем "СтепеньЗвание". Там же в свойстве MasterSource указываем "DataSource1". После этого заходим в свойство MaserFields и создаем следующую связь:
- из раздела Detail Fields выбираем "Код", жмем Add;
- из раздела Master Fields выбираем "КодСтепеньЗвание", жмем Add.

Устанавливаем свойство Active у ADOTable1 и ADOTable2 в true.

Запускаем проект.

P.S. Писал по памяти, т.к. Builder'а под рукой нету. Возможно, где-нибудь попутал. Но вроде бы так.
0
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 01:32  [ТС]
Спасибо большое)
На правильность не проверяла, но суть поняла. У меня тоже был такой вариант: использовать несколько ADOTable, но думала, может, есть вариант получше. Ведь если у меня база, состоящая, к примеру, с 10 таблиц, то это будет очень непрактично использовать 10 ADOTable. Это займёт много лишней памяти, да и в самом коде тогда будет много повторений, в смысле одинаковых функций для каждого ADOTable. Возможно, есть другое, более оптимальное решение.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.02.2013, 02:28
Lovan,
Цитата Сообщение от Lovan Посмотреть сообщение
Ведь если у меня база, состоящая, к примеру, с 10 таблиц
Т.е. хотите сказать, что Вы отдельно каждую таблицу из этих 10 будете на одной форме отображать?.. Это, конечно, тяжелый случай (во всех смыслах)...

Насчет альтернативы могу предложить действительно использовать класс TADOQuery, работая непосредственно с запросами и обрабатывая события DBGrid/DataSource/ADOQuery по клику на ячейку в DBGrid'е, изменению указателя в ADOQuery и т.п..

А вот насчет оптимизации, то тут я, пожалуй, не подскажу. Грубо говоря, в любом случае DBGrid'у для представления какой-либо информации необходим активный набор данных (в нашем случае TCustomADODataSet).

Можно посмотреть в сторону статичного компонента - StringGrid. Но, боюсь, это займет значительно больше времени, но, в принципе, сократит количество НД, которого Вы так боитесь :-)
0
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 02:45  [ТС]
Ну, в задаче, которую мне предстоит решить, мне действительно нужно будет отобразить много таблиц на 1 форме, но это легко можно сделать с помощью PageControl. А StringGrid здесь абсолютно не поможет, тем более, вы правильно заметили - он статичен.
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.02.2013, 03:19
Lovan,
Цитата Сообщение от Lovan Посмотреть сообщение
в задаче, которую мне предстоит решить, мне действительно нужно будет отобразить много таблиц на 1 форме
И все они (таблицы) между собой в один момент времени связаны?


Цитата Сообщение от Lovan Посмотреть сообщение
StringGrid здесь абсолютно не поможет
Цитата Сообщение от Lovan Посмотреть сообщение
- он статичен
Никто не запрещает его оживить :-)

И разумеется, не всегда кол-во DBGrid'ов = кол-ву НД. В общем, все зависит от конкретной задачи.
0
1 / 1 / 0
Регистрация: 10.02.2013
Сообщений: 24
11.02.2013, 19:44  [ТС]
Да, все таблицы связаны одновременно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2013, 19:44
Помогаю со студенческими работами здесь

Отображение связанных полей в DBGrid
Здравствуйте, уважаемые специалисты. У меня к вам вопрос. Необходимо через ADOQuery в DBGrid вывести таблицу "Tovar",...

Отображение полей типа BLOB в DBGrid
У меня в базе есть поле с типом BLOB, подскажите как его отобразить в DBGrid. Мне подсказали, что можно как-то через Memo выводить, вот...

Работа со связанными таблицами
Hi All! Есть две таблицы. Первая: КОД_БОЛЬНОГО ФИО_БОЛЬНОГО

Работа со связанными таблицами
Есть у меня три таблицы (показаны на рисунке), как мне вывести CustomerName из таблицы customer по CustomerID из таблицы order? Спасибо...

Работа со связанными таблицами
Этот вопрос я задал и в разделе VB, извините за дублирование, но это тесно связано с SQL/ База в SQL. Клиент на VB. в...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru