Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Технологии подключения к базам данных и работа с ними

Автор:   •  Июнь 2, 2022  •  Лабораторная работа  •  2,340 Слов (10 Страниц)  •  186 Просмотры

Страница 1 из 10

ЛАБОРАТОРНАЯ РАБОТА №9

Технологии подключения к базам данных и работа с ними

Цель лабораторной работы: 

  1. Изучить компоненты для работы базами данных;
  2. Изучить методы для работы компонентов подключения к базам данных;
  3. Изучить запросы к базам данных.

   9.1. Компонент TDBGrid для отображения графической информации

   Для визуализации набора данных используется компонент TDBGrid (рис. 9.1). Класс TDBCustomGrid и класс TCustomGrid – это родительские классы компонента TDBGrid. Компонент делиться на столбцы (поля ввода данных) и строки (записи). Рассмотрим основные свойства данного компонента (табл. 9.1).

Таблица 9.1 Свойства компонента TDBGrid

Свойства

Описание

Name

Имя экземпляра класса

DataSource

В этом свойстве указывают имя компонента TDataSource для связи БД с компонентом TDBGrid

Columns

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

Options

Определяет параметры отображения таблицы:

  • dgEditing — Делает возможность править данные прямо в таблице. Этот значение игнорируется, при включенном флаге dgRowSelect;
  • dgAlwaysShowEditor — Таблица будет находиться в режиме редактирования. Если False то пользователь должен будет активировать сам редактирование щелчком мышы по полю или нажимать F2, Enter;
  • dgTitles — Делает видными заголовки столбцов;
  • dgIndicator — Добавляет еще одну колонку, в которой будут выводиться индикатор выбранной записи;
  • dgColumnResize — Дает возможность изменить размеры столбцов пользователю;
  • dgColLines — Столбцы будут разделены линиями;
  • dgRowLines — строки будут разделены линиями;
  • dgTabs — Дает возможность навигации по ячейкам при помощи  клавиш Tab и Shift+Tab;
  • dgRowSelect — Записи будут выделяться целиком;
  • dgAlwaysShowSelection — Выбираемая ячейка будет выделяться цветом, даже если фокус ввода находится не на таблице;
  • dgConfirmDelete – Позволяет выводить предупреждение, если  пользователь будет удалять запись в таблице;
  • dgCancelOnExit — Предотвращает запись пустых ячеек;
  • dgMultiSelect – Дает возможность выбора нескольких записей при удержании Ctr).

ReadOnly

Задает параметр разрешающий или запрещающий пользователю редактировать  данные в таблице

TitleFont

Задает шрифт, выводимых заголовков столбцов таблицы

FixedColor

Задает цвет неподвижных ячеек таблицы

Рисунок 9.8. Внешний вид проекта во вкадке TabSheet1

  1. Сделайте активным вкладку TabSheet2 компонента  PageControl1. Как видно, она пустая. В итоге её внешний вид будет как на рисунке 9.9.
  2. Расположите Panel6 на компоненте PageControl1 во вкладке TabSheet2. Расположение Panel6 должно быть клиентским по отношение к PageControl1, по высоте занимает половину высоты PageControl1. В свойстве Padding компонента Panel6 задайте 5 пикселей для всех сторон.
  3. Расположите DBGrid2 на компоненте Panel6. Расположение DBGrid2 быть клиентским по отношению к Panel6. Задайте отступ в 3 пикселя по верхнему, левому и правому краям. Найдите свойство DataSource и выберите значение DataSource2. На DBGrid2 должны появиться поля и строки таблицы Sattelites.
  4. Ниже, под Panel6 расположите компонент RadioGroup2 с точно такими же свойствами, что были определены для RadioGroup1.
  5. Правее от RadioGroup2 разместите компонент Panel7. Свойству Caption назначьте значение Поиск. На нём же разместите компоненты: 1) Label7 со свойством Caption Наберите поиск, 2) Edit6 без текста и 3) Button4 со свойством Caption Поиск.
  6. Правее от Panel7, добавьте компонент Panel8 со следующими компонентами:
  • Label8 со свойством Caption Название;
  • Label9 со свойством Caption Планета;
  • Label10 со свойством Caption Диаметр;
  • Label11 со свойством Caption Масса;
  • Edit7 без текста;
  • DBLookupComboBox1;
  • Edit8 без текста;
  • Edit9 без текста;
  • Button5 со свойством Caption Выполнить.

[pic 1]

Рисунок 9.9. Внешний вид проекта во вкадке TabSheet1

  1. На рис. 9.9 на DBGrid2 представлены столбцы ID_спутник, Планета, FK_planets, Диаметр, Масса. Однако в проекте вы увидите несоответствие, которое касается того, что столбец Планета отсутствует. Если взглянуть на рисунок 9.10, то можно увидеть связь один ко многим между двумя таблицами - Planets и Sattelites. Понятно, что планета может иметь ни одного спутника, либо множество. Связь проходит по первичному ключу атрибута - ID_planets таблицы Planets к атрибуту FK_planets таблицы Sattelites. Т.е., когда мы работаем с таблицей Sattelites, в атрибуте FK_planets мы видим, к какой планете относится данный спутник. Однако это значение цифровое, относящееся к первичному ключу. Чтобы вместо цифрового значения отображалось текстовое, т.е. название планеты, необходимо поработать с подставляемыми полями.

[pic 2]

Рисунок 9.10. Схема данных таблиц

  1. Для этого в окне Structure (Структура проекта), раскройте ветки до Sattelites {ADOTable1} как указано на рис.9.11, и на ветке Fields нажмите на ПКМ. Появится меню, в котом выберите Add fields...[pic 3]

[pic 4]

Рисунок 9.11 Структура проекта

  1. Появится окно добавления полей таблицы. Выделите все поля и нажмите ОК. Затем повторите это действие для этой же ветки, но только выберите New field....
  2. Появится окно добавление нового поля, в данном случае, подставляемого (Lookup) (рис. 9.12). Для этого в поле Field нажмите на переключатель Lookup. В поле Field properties в ячейке Name напишите имя Планета. В ячейке Component автомотически появится имя компонента - ADOTable2Планета. Переименуйте в ADOTable2tab. В ячейке Type выберите String, т.к. необходимо выводить в подставляемое поле строковую переменную, содержащую название планеты. Размер (Size) укажите 30.
  3. В поле Lookup defenition в Key Fields, в качечестве поля, которое будет ссылаться на первичный ключ, укажите FK_planets таблицы Sattelites. В Dataset укажите ADOTable1, т.е. тот компонент, который работает с таблицей Planets. В Lookup Keys укажите, собственно, поле с первичным ключом таблицы Planets, на который ссылается поле FK_planets таблицы Sattelites. А в качестве результирующего поля  Result field укажите поле Планета. Это позволит увидеть не цифровое значение планеты таблицы Planets, выводимое через компонент ADOTable2 на компонент DBGrid2, а стоящее за ним название планеты.
  4. Нажмите кнопку OK. После этого DBGrid2 ничего не отобразит, т.к. свойство Active компонента ADOTable2 примет значение false. Вновь задайте значение true.

[pic 5]

Рисунок 9.12 Структура проекта

  1. Новое поле Планета будет отображатся последним в окне структуры проекта. Для нашего проекта его необходимо переместить в третью позицию сверху (во вторую, если считать с нуля). Для этого достаточно в структуре проекта нажать на {ADOTable2tab} левой клавишей мыши и не отпуская перетащить к позиции 2 (рис. 9.13).

[pic 6]

Рисунок 9.13 Структура проекта с добавленным новым полем

  1. Также рассмотрим подробнее компонент DBLookupComboBox1. С помощью данного компонента в нашем проекте можно выводить набор данных одной таблицы, основанных на значениях другой. В нашем случае, ставя указатель на любую строку в таблице Sattelites, мы получаем данные с таблице Planets, а именно название планеты. Для того, чтобы вывести названия всех значений, имеющихся по полю Планета таблицы Planets, для того чтобы использовать их в таблице Sattelites, например для добавления записей в последнюю таблицу, но так, чтобы в качестве передаваемого значения использовалось не название планеты, а значение поля с первичным ключом, содержащимся в таблице Planets. Когда в DBLookupComboBox1 выберается название планеты, то свойство KeyValue данного компонента как раз и принимает значение поля с первичным ключом (свойство KeyField) в строке которой находится планета.
  2. В свойствах ListSource, ListField и KeyField компонента DBLookupComboBox1 пропишите следующие значения:
  • ListSource: DataSource1;
  • ListField: Планета;
  • KeyField: ID_planets.
  1. Код проекта приведён ниже:

Код Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <System.Classes.hpp>

...

Скачать:   txt (29.4 Kb)   pdf (317 Kb)   docx (102.7 Kb)  
Продолжить читать еще 9 страниц(ы) »
Доступно только на Essays.club