Rad studio как связать таблицы

от admin

Пример подключения базы данных Microsoft Access к приложению

Дана база данных, сформированная средствами СУБД Microsoft Access. База данных расположена на диске по такому пути:

Структура базы данных и связи между таблицами изображены на рисунке 1.

Рис. 1. Схема связей между таблицами базы данных

Необходимо осуществить подключение данной базы данных к приложению Windows.

Выполнение

1. Запустить Delphi

Пример создания и сохранения приложения в Delphi подробно описывается здесь.

Создать форму и сохранить проект под произвольным именем.

2. Компоненты для работы с базой данных

Из вкладки « dbGo » палитры инструментов выбираем компоненты TADOConnection и TADOTable .
Из вкладки « Data Access » выбираем компонент TDataSource (рис. 2).
Выносим эти компоненты на форму приложения.

01_02_00_008_02_

Рис. 2. Компоненты для соединения с базой данных

Компоненты из палитры «dbGo» предназначены для работы с базами данных по технологии ADO , которая хорошо подходит для базы данных Microsoft Access.

Вместо компонента TADOQuery можно использовать компонент TADOTable . Можно также совмещать эти компоненты.

С целью визуализации данных из таблиц используется компонент TDBGrid из палитры Data Controls . Он отображает данные в некоторой таблице базы данных. После выноса этого компонента на форму, вид окна проектирования примет приблизительно следующий вид (рис. 3).

01_02_00_008_03_

Рис. 3. Компонент DBGrid1 для отображения данных из базы данных

3. Настройка компонент

Существует два варианта подключения к базе данных с использованием вышеупомянутых компонент (рис. 4).

01_02_00_008_04r

Рис. 4. Способы подключения к файлу базы данных

Во втором случае подключение осуществляется через дополнительный компонент ADOConnection1 . Этот способ есть более обобщенным случаем и лучше подходит для случаев, когда несколько компонент типа TADOTable или TADOQuery используются для доступа к одному соединению ADOConnection1 .

Выбираем второй способ настройки.

4. Строка соединения ConnectionString

Для доступа к файлу базы данных нужно задать путь к этому файлу и установить другие параметры.

Осуществим настройку свойства ConnectionString компонента ADOConnection1 . Таким же образом настраивается свойство ConnectionString компонента ADOTable1 .

Сначала выделим компонент ADOConnection1 . В Object Inspector выбирается свойство ConnectionString (рис. 5).

01_02_00_008_05_

Рис. 5. Свойство ConnectionString компонента ADOConnection1

В результате откроется окно « Form1.ADOConnection1 ConnectionString » (рис. 6).

Предлагается 2 варианта подключения:

  • Use Data Link File ;
  • Use Connection String .

В первом случае есть возможность подключения к базе данных путем выбора файлов типа Microsoft Data Link с расширением « *.udl «. Эти файлы служат для связи с данными по технологии ADO .

Для ознакомления используем второй способ « Use Connection String «. Выбираем кнопку « Build… «.

01_02_00_008_06_

Рис. 6. Способы выбора источника соединения

В результате предыдущего выбора откроется окно « Свойства связи с данными » (рис. 7).

01_02_00_008_07_

Рис. 7. Окно «Свойства связи с данными»

В этом окне выбираем поставщика OLE DB . Для работы с базами данных Microsoft Access лучше всего подходит поставщик « Microsoft Jet 4.0 OLE DB Provider «.

Делаем клик на кнопке « Далее >> «.

На следующем этапе нужно выбрать файл базы данных (рис. 8). Согласно с условием задания файл базы данных размещается по следующему пути:

Кликаем на кнопке « » и выбираем файл базы данных.

01_02_00_008_08_

Рис. 8. Вкладка «Подключение» с выбранным файлом базы данных

Есть возможность протестировать подключение кнопкой « Проверить подключение «. Если все в порядке, то будет выведено следующее сообщение (рис. 9).

01_02_00_008_09_

Рис. 9. Тестирование подключения к файлу базы данных

После этого выбираем « ОК «. Окно « Form1.ADOConnection1 ConnectionString » имеет вид (рис. 10).

01_02_00_008_10_

Рис. 10. Окно « Form1.ADOConnection1 ConnectionString »
с выбранным источником соединения

В окне на рисунке 10 выбираем « ОК «. После этого свойство ConnectionString компонента ADOConnection1 будет сформировано.

5. Свойство LoginPrompt компонента ADOConnection1

По умолчанию, база данных настроена таким образом, что при обращении к данным от пользователя будет требоваться ввести имя и пароль. Во избежание неудобств, необходимо в свойстве LoginPrompt компонента ADOConnection1 установить значение «false» (рис. 11).

01_02_00_008_11_

Рис. 11. Свойство LoginPrompt компонента ADOConnection1

6. Связывание компонент между собой

Теперь можно связать компоненты между собой по схеме, изображенной на рис. 4 а).
Для этого, используя Object Inspector , необходимо выполнить следующие действия:

  • в компоненте ADOTable1 свойство Connection нужно установить в значение ADOConnection1 ;
  • в компоненте DataSource1 свойство DataSet установить в значение ADOTable1 ;
  • в компоненте DBGrid1 свойство DataSource установить в значение DataSource1 .
7. Выбор таблицы Students и ее отображение

После выполненных операций имеем связь приложения с базой данных.

Теперь нужно задать таблицу или запрос для вывода в DBGrid1 .
Если использовать компонент TADOQuery , то для вывода используется строка запроса на языке SQL . В этом случае данные в DBGrid1 могут отображаться сразу из нескольких таблиц.

Если используется компонент TADOTable (наш случай), то выводится непосредственно одна из таблиц базы данных.

Выберем для примера таблицу Students .

Для этого с помощью Object Inspector в компоненте ADOTable1 нужно:

  • в свойстве «TableName» выбрать таблицу Students ;
  • свойство Active установить в значение «true» .

В результате выполненных действий данные сразу отобразятся в компоненте DBGrid1 (рис. 12).

Как связать две таблицы delphi?

Суть такова: у меня программа с базой данных, где есть 5 таблиц. В таблице продажи при добавлении я указываю консультанта из таблицы сотрудники. В самой таблице сотрудники у меня есть столбец «количество продаж». Суть в том, чтобы при добавлении какой-либо продажи, у меня в «количество продаж» у определенного сотрудника прибавлялось 1.
Я работаю через ADOTable. Надеюсь со скриншотами будет всё понятнее.

На кнопке сохранить в формочке «Добавление продажи» я решил вставить следующий код:

Скриншоты:
5ec292a942e00616051595.jpeg
5ec292b495400031550070.jpeg
5ec292ba73ab6225202918.jpeg

  • Вопрос задан более двух лет назад
  • 239 просмотров
  • Facebook
  • Вконтакте
  • Twitter

HemulGM

Но это очень плохой код. В твоём случае рекомендуется выполнять SQL запросы, а не манипулировать данными, которые были загружены. Запросом SQL ты бы написал всего одну строку кода и безо всяких циклов.

Создание таблиц реляционной БД

Одно из самых частых дел, которые приходится выполнять разработчикам БД — это создание новых баз данных, таблиц в них, связей между ними и индексов для ускорения поиска. Очень часто приходится, как бы, повторять структуру, которая уже была реализована ранее на другой СУБД, или быстро вводить в действие таблицы для более удобного выполнения промежуточных операций. По мере продвижения проекта к финишу, часть такого рода таблиц уходит, часть преобразуется во временные или модифицируется для оптимизации алгоритмов, но всегда есть потребность в быстром создании таких «рабочих», в известном смысле, объектов для разработчиков.

Как и все в мире компьютеров, эта задача может быть решена различными способами. Я считаю одним из самых удобных и практичных — использование инструментов Embarcadero для работы с БД. Хотя создать таблицу можно из любого из 4 продуктов из состава DB Power Studio, реальные преимущества мы ощутим в среде DBArtisan или Rapid SQL. Вы наверняка уже встречались с этими продуктами, например, в этом блоге. 🙂 Несмотря на внешнюю очень большую схожесть интерфейсов редакторов объектов БД в этих двух инструментах, в них отражены существенные отличия в методах и задачах для решения которых предназначены эти средства.

DBArtisan — это средство работы администраторов БД (DBA — по английски). Я уже писал о том, что DBA много не бывает, и это к лучшему! Как и хирургам, только самым умелым, знающим и опытным могут доверить свою информацию — источник жизнеспособности и прибыльности — крупные компании. DBArtisan — это инструмент индивидуальной работы, средство обнаружить и настроить практически любой глубинный элемент той или иной СУБД. Он умеет работать из единого графического интерфейса почти с любой СУБД, параллельно, за счет применения одинаковых парадигм работы быстро получить знания и опыт выполнения большинства административных функций на менее знакомых платформах СУБД, в том числе, создание, поиск и модификацию объектов внутренней структуры БД, например, таблиц, представлений, индексов и т.п.

Команде разработчиков я бы рекомендовал пользоваться Rapid SQL. Здесь каждый разработчик может создать свой «локальный» проект, разрабатывая и тестируя общие элементы не мешая остальным, воспользоваться преимуществами системы управления исходными тестами на SQL и DDL.

Настало время запустить Rapid SQL. Нужна лицензия. Но можно воспользоваться бесплатной лицензией, которая действует в течение пробного периода (trial license). Сам продукт доступен для загрузки с сайта http://www.embarcadero.com в двух видах — обычный установщик и Instant Trial. Последний вариант выгоден, если планируется опробование нескольких продуктов, поскольку с ним не требуется установка каждой версии каждой программы — можно просто дважды кликнуть по скачанному приложению и оно запустится. Здесь используется технология Appwave. Бесплатную пробную лицензию Embarcadero высылает на электронную почту, указанную при регистрации пользователя на сайте.

Традиционно для среды Windows, слева расположено дерево подключений/источников данных и их внутренних объектов. Пользователи не только сами могут создавать и запоминать практически неограниченное количество источников, но и организовывать их в группы, маркировать их в соответствии с удобной для них системой цветовых обозначений, обмениваться описаниями источников с другими программами Embarcadero. Выберем источник — на виртуальном сервере Oracle. Двойной клик по нему позволит открыть соединение и после этого раскроет содержимое этой ветки. В зависимости от задач бывает удобно отсортировать дерево по типам объектов или по «владельцам» объектов.

Мне потребовалось создать в схеме PRR несколько таблиц для сбора и обработки информации о блогах.

Такую модель можно было бы создать в Embarcadero ER/Studio Data Architect и прямо из этого средства создать все таблицы на сервере, но у меня есть только набросок, причем для другой СУБД.

Из дерева навигатора можно создавать любые объекты БД с помощью простых мастеров . Дальше рассматривается пример использования мастера создания объекта таблицы. Сходным образом в Rapid SQL действуют мастера для создания любых объектов БД и других поддерживаемых элементов.

Читать:
Магнитное поле и электрическое поле в чем разница

Переходим по дереву в схему PRR, становимся на ветку Tables и нажимаем правую педаль мыши для вызова контекстного меню. Выбираем и нажимаем Create

  1. Вносим PRR в поле Schema и BLOG_POST в поле Name.
  2. Для остальных параметров оставляем значения по умолчанию и нажимаем Next (Далее).
  3. Добавляем столбец, введя в поле Name значение id и установив в поле Type тип numeric. Поле Width установим в 10. Продолжая нажимать кнопку Add Column (Добавить столбец) и заполняя остальные свойства на экране, создаем все колонки этой таблицы. Если случайно создали лишнее или «кривое» поле — его можно удалить, выбрав его и нажав кнопку Delete (Удалить). Можно добиться массы полезных настроек каждого поля путем изменения его атрибутов. Для Oracle 11gr2 мастер предлагает 10 шагов, хотя остальные являются необязательными. Обратите внимание, что в выпадающем списке Datatype показываются типы данных, допустимые именно для этой версии Oracle. Если были определены домены, то они также будут показаны в этом списке

Rapid SQL построит SQL-код, соответствующий конкретной платформе, синтаксически корректный и сразу готовый к выполнению. Мастера создания объектов Rapid SQL избавляют пользователя от SQL-кодирования.

Аналогичным образом создаем остальные таблицы. Если не снять флажок Launch Object Editor After Execute (Запустить редактор объектов после выполнения), то соответствующий создаваемому объекту (здесь: таблице BLOG_POST) редактор появится на рабочем пространстве в центре. В этом редакторе можно изменять параметры и свойства уже существующих объектов, например, тип, размер, порядок расположения полей. Можно иметь множество одновременно открытых редакторов (в том числе для различных объектов из разных БД на отдельных серверах под любыми поддерживаемыми типами СУБД). От редактора к редактору пользователь переходит при помощи закладок, расположенных ниже редакторов.

  • Для всех типов объектов БД редакторы объектов предоставляют стандартизованные окна с вкладками.
  • Все редакторы объектов поддерживают полнофункциональные панели инструментов, облегчающие управление объектами.
  • Rapid SQL обладает полным представлением о системном каталоге, правилах синтаксиса и внесения изменений для используемой СУБД, поэтому пользователь может сконцентрироваться на сути решения задачи, не фиксируясь на способах реализации.
  • Раскрывающиеся меню позволяют легко перемещаться между объектами и их владельцами.
  • Редакторы объектов Rapid SQL легко выполняют операции, которые в ином случае обычно требуют кропотливого и подверженного ошибкам написания скриптов, например, такие как удаление и добавление столбцов таблицы с сохранением данных, зависимостей и разрешений. Rapid SQL анализирует каталог базы данных, определяет ее структуру и затем автоматически генерирует SQL-скрипт, выполняющий требуемые сложные изменения. Например, если требуется полное изменение таблицы, Rapid SQL автоматически выгружает и загружает данные, избавляя вас от рутинной работы

Наши таблицы связаны друг с другом. Пост был написан конкретным автором, который мог написать еще много постов. Каждый пост может быть помечен набором тэгов. К каждому посту любой читатель может написать комментарий, а другие поддержать этот комментарий или наоборот.

В реляционных СУБД естественным способом реализации таких связей является связь при помощи внешних (Foreign) ключей.

Давайте пропишем эти Foreign Keys при помощи редакторов для всех связанных таблиц.

Надо открыть редактор для таблицы, которая содержит поле-внешний ключ, и перейти на закладку Constraints. Здесь мы уже создавали первичные ключи, но теперь нам нужна ветка Foreign Keys.

Выбираем эту ветку (папку) и нажимаем кнопку Add слева. Открывается диалоговое окно.

Имя ограничения можно оставить то, которое создал Rapid SQL, но можно поменять на более понятное.

Нажать Далее. В появившемся диалоге указать обе стороны описываемой связи (первая будет автоматически подставлена редактором, а вторую вы должны указать сами). Отметить флажки с полем, содержащим внешние ключи (или набор таких полей, если ключ составной) и идентифицирующие поля с другой стороны (должны входить в первичный ключ).

Нажать Finish (Затем не забыть Alter!). Связи созданы!

Вот так, при помощи удобных и понятных диалогов, мы быстро создали несколько связанных таблиц в базе данных Oracle. Редакторы таблиц Rapid SQL позволяют вносить изменения в существующие таблицы, создавать и удалять индексы и логические ограничения целостности, управлять размещением, денормализацией и правами доступа (доступом лучше управлять из DBArtisan) и еще массой параметров, которые обеспечивают оптимальные характеристики для работы базы данных.

Теперь, не выходя из Rapid SQL, можно создать документацию по только что созданным таблицам с нужной степенью подробности (в различных форматах) и предоставить эти описания всем заинтересованным разработчикам для продолжения дальнейшей разработки.

Чтобы убедиться, что мы корректно воссоздали требующуюся структуру данных, я провел «обратное проектирование» при помощи ER/Studio. Вот диаграмма, которую я получил в результате.

1.2.2. Связывание таблиц

После того, как таблицы созданы, можно приступить к созданию приложения в Delphi. Для запуска Delphi выполните Пуск | Программы | Borland Delphi | Delphi.

Немного теории. Имеется несколько основных компонентов, которые используются для доступа к БД. Эти компоненты могут быть разделены на три группы:

Рис. 5. Создание алиаса (псевдонима) БД

невизуальные: TTable, TQuery, TDataSet, TField;

визуальные: TDBGrid, TDBEdit, TDBComboBox и другие элементы управления;

Первая группа включает компоненты, которые используются для управления таблицами и запросами. Это компоненты типа TTable, TQuery, TDataSet и TField. В палитре компонентов эти объекты расположены на странице BDE и Data Access.

Вторая группа компонентов — визуальные, которые показывают данные пользователю и позволяют ему просматривать и модифицировать их. Эта группа включает компоненты типа TDBGrid, TDBEdit, TDBImage и TDBComboBox. В палитре компонентов эти объекты расположены на странице Data Controls.

Третий тип используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource (страница Data Access).

Построим простейшее приложение, работающее с базой данных.

Поместите на форму необходимое количество компонентов Table с вкладки BDE, DataSource с вкладки компонентов Data Access и DBGrid c вкладки Data Controls, иcходя из количества таблиц. В нашем случае таблиц четыре, следовательно, и каждого вида компонентов тоже будет четыре. Также необходимо поместить компонент DBNavigator c вкладки Data Controls, он позволяет манипулировать данными таблиц.

Теперь установим цепочку связей между этими компонентами. Для этого выделите мышкой DataSource1 и найдите в Object Inspector (в инспекторе объектов) пункт DataSet. Щелкните на этом свойстве и выберите из списка Table1.

Выделите на форме DBGrid1 и в окне Object Inspector щелкните на его свойстве DataSource. Выберите из списка DataSource1.

Осталось связать компонент Table1 с необходимой таблицей базы данных. Для этого служат два свойства компонента Table: DatabaseName и TableName. Выделяем компонент Table1 и в Object Inspector в пункте DatabaseName выбираем созданный нами алиас (в нашем случае Music), а в пункте TableName таблицу a.dbf.

Теперь таблица привязана к сетке DBGrid1, но данные таблицы еще не отображаются. Для отображения данных необходимо свойство Active компонента Table1 установить в True. Эта операция осуществляет соединение с базой данных.

Аналогично связываются и компоненты других таблиц.

Свойство DataSource компонента DBNavigator необходимо установить на компонент DataSource, связанный с таблицей, которой вы хотите управлять.

Когда связи между компонентами установлены, необходимо произвести связывание таблиц базы данных. Связывание таблиц выполняется между компонентами Table.

Две таблицы чаще всего связаны друг с другом отношением «один-ко-многим» (1:M) по ключевым полям (индексированными полями). Одна из этих связанных таблиц является главной (master), а другая — вспомогательной, детализирующей (detail).

Для установления отношения «один-ко-многим» в наборе данных предназначены три свойства — MasterSource, IndexName и MasterFields, которые задаются для подчиненной таблицы. Набор данных главной таблицы не требует никаких дополнительных настроек, и заданная связь будет работать только при перемещениях курсора по записям главной таблицы.

Свойство MasterSource определяет компонент DataSource, который связан с главной таблицей.

Свойство IndexName указывает имя индекса подчиненной таблицы, который будет использован для связывания. Это индекс ключевого поля, по которому устанавливается связь.

Примечание: для таблиц Paradox свойство IndexName устанавливать не требуется, если связывание происходит по первичному ключу. В этом случае IndexName необходимо оставить пустым.

Далее при помощи свойства MasterFields необходимо установить отношения между полями главной и подчиненной таблицы. В этом свойстве содержится имя индексированного поля, по которому устанавливается связь. Если таких полей несколько, их имена разделяются точкой с запятой. При этом не все поля, входящие в индекс, обязаны участвовать в создании отношения.

Для задания свойства MasterFields можно использовать редактор связей полей Field Link Designer (рис. 6), который вызывается щелчком на кнопке в поле редактирования этого свойства в инспекторе объектов.

Здесь в разворачивающемся списке Available Indexes выбирается требуемый индекс для подчиненной таблицы. После этого в списке Detail Fields появляются имена всех полей, входящих в этот индекс. В списке Master Fields отображаются все поля главной таблицы.

Рис. 6. Редактор связей полей

Для создания связи между полями в левом списке выбирается поле подчиненной таблицы, а затем соответствующее ему поле главной таблицы в правом списке. Нажимаем кнопку Add, после чего появляется отношение по двум полям главной и подчиненной таблиц. Созданная связь отображается в списке Joined Fields.

Уже созданные связи можно удалить. Кнопка Delete удаляет выбранную связь, кнопка Clear — все связи.

Рис. 7. Пример связывания таблиц БД

После создания связей между полями отношение «один-ко-многим» считается установленным. Теперь достаточно открыть оба набора данных, чтобы увидеть работу отношения (рис. 7).

В нашем примере мы хотим, чтобы пользователь, перемещаясь по таблице музыкальных альбомов, видел не только информацию об альбоме, но и имя исполнителя, название стиля, а также информацию о записях, входящих в альбом. В этом случае главной является таблица C, а подчиненными — таблицы A, B и D.

Похожие статьи