Задание8_Работа_с_БД (1076744), страница 5
Текст из файла (страница 5)
Программа работы с базой данных "Архитектурные памятники Санкт-Петербурга" выводит информацию в режиме формы, в каждый момент времени пользователь может видеть только одну запись. Такой режим работы с базой данных не всегда удобен. Если необходимо видеть одновременно несколько записей базы данных, то нужно обеспечить просмотр данных в режиме таблицы.
Процесс создания приложения, обеспечивающего просмотр базы данных в режиме таблицы, рассмотрим на примере программы работы с базой данных "Школа".
Пусть база данных "Школа" (псевдоним Школа), представляет собой таблицу, которая находится в файле School.db. Записи таблицы school состоят из полей: Name (Имя), Fam (Фамилия), class (Класс), Adr (Адрес) и n (Личный номер). Поля Name, Fam, Class и Adr являются полями символьного типа (тип А), а поле n — числовое, с автоувеличением.
Примечание
Псевдоним Школа следует создать при помощи BDE Administrator, а таблицу (файл school.db) — при помощи Database Desktop.
Сначала в форму разрабатываемого приложения нужно добавить компоненты Table и DataSource, которые обеспечивают доступ к файлу данных, и установить значения их свойств (табл. 14).
Таблица 17.14. Значения свойств компонентовTable1 и DataSource1
Свойство Значение
T
able1.DatabaseName Школа
Table1.TableName schoo1.db
Table1.Active True
DataSource1.Dataset Table1
Д
ля обеспечения просмотра и редактирования данных в режиме таблицы в форму приложения надо добавить компонент DBGrid, значок которого находится на вкладке Data Controls (рис. 20). Вид формы разрабатываемого приложения после добавления компонента DBGrid приведен на рис. 21. Рис. 20. Значок компонента DBGrid на вкладке Data Controls
Рис. 21. Форма приложения после добавления компонента DBGrid
Компонент DBGrid обеспечивает представление базы данных в виде таблицы. Свойства компонента DBGridi определяют вид таблицы и действия, которые могут быть выполнены над данными во время работы программы. В табл.15 перечислены некоторые свойства компонента DBGrid.
Таблица 15. Свойства компонента DBGrid
Свойство Определяет
N
ame Имя компонента
DataSource Источник отображаемых в таблице данных
Columns Отображаемую в таблице информацию
Options . dgTitles Разрешает вывод строки заголовка столбцов
Options .dglndicator Разрешает вывод колонки индикатора. Во время
работы с базой данных текущая запись помечается в колонке
индикатора треугольником, новая запись — звездочкой,
редактируемая — специальным значком
Options.dgColumnResize Разрешает менять во время работы программы ширину колонок таблицы
Options.dgColLines Разрешает выводить линии, разделяющие колонки таблицы
Options .dgRowLines Разрешает выводить линии, разделяющие строки таблицы
Рис. 22. Редактор колонок
Д
ля того чтобы задать, какая информация будет отображена в таблице во время работы программы, нужно сначала определить источник данных для таблицы (установить значения свойства DataSource), затем — установить значения уточняющих параметров свойства columns. Значение свойства DataSource задается обычным образом, то есть в окне Object Inspector. Чтобы установить значение свойства Columns, надо в окне Object Inspector выбрать это свойство и щелкнуть на кнопке с тремя точками. В результате открывается окно редактора колонок (рис. 22).
Для того чтобы в компонент DBGrid добавить колонку, обеспечивающую просмотр содержимого поля записи файла данных, необходимо нажать кнопку Add New, находящуюся на панели инструментов в верхней части окна (это единственная доступная после запуска
редактора кнопка), выделить добавленный элемент и, используя Object Inspector, установить значения свойств этой колонки (табл.16). Свойство Columns компонента DBGrid представляет собой массив компонентов типа TColumn. Каждой колонке соответствует элемент массива. Устанавливая значения свойств компонентов Column, программист задает вид колонок компонента DBGrid, тем самым определяет вид всей таблицы.
Таблица 16. Свойства компонента column
Свойство Определяет
F
ieldName Поле записи, содержимое которого выводится в колонке
width Ширину колонки в пикселах
Font Шрифт, используемый для вывода текста в ячейках колонки
Color Цвет фона колонки
Alignment Способ выравнивания текста в ячейках колонки. Текст может
быть выровнен по левому краю (taLeftJustify), по центру (taCenter)
или по правому краю (taRightJustify)
Title.Caption Заголовок колонки. Значением по умолчанию является имя поля записи
Title.Alignment Способ выравнивания заголовка колонки. Заголовок может быть выровнен
по левому краю (taLeftJustify), по центру (taCenter) или по правому краю (taRightJustify)
Title. Color Цвет фона заголовка колонки
Title. Font Шрифт заголовка колонки
В
простейшем случае для каждой колонки достаточно установить значение свойства FieldName, которое определяет имя поля записи, содержимое которого будет отображаться в колонке, а также значение свойства Title.Caption, определяющего заголовок колонки. В табл.17 приведены значения свойств Columns компонента DBGridi.
Таблица 17. Значения свойств компонента DBGridi
Компонент FieldName Title.Caption
D
BGridi.Columns[0] Fam Фамилия
DBGridi.Columns[1] Name Имя
DBGridl.Columns[2] Class Класс
DBGridl.Columns[3] Adr Адрес, телефон
П
оследнее, что надо сделать — добавить к форме компонент DBNavigator, настроив его на работу с таблицей-источником данных (свойству Datasource нужно присвоить значение Table1).
Окончательный вид формы приложения приведен на рис. 23.
Рис. 23. Форма после настройки компонента DBGridl
После этого программу можно откомпилировать и запустить. Следует обратить внимание, что для того чтобы после запуска программы в окне появилась информация или, если база данных пустая, можно было вводить новую информацию, свойство Active таблицы-источника данных должно иметь значение True.
Работа с базой данных, представленной в виде таблицы, во многом похожа на работу с электронной таблицей Microsoft Excel. Используя клавиши перемещения курсора вверх и вниз, а также клавиши листания текста страницами (<Page Up> и <Page Down>), можно, перемещаясь от строки к строке, просматривать записи базы данных. Нажав клавишу <Ins>, можно добавить запись, а нажав клавишу <Del> — удалить запись. Для того чтобы внести изменения в поле записи, нужно, используя клавиши перемещения курсора влево и вправо, выбрать необходимое поле и нажать клавишу <F2>.
5. Выбор информации из базы данных
При работе с базой данных пользователя, как правило, интересует не все ее содержимое, а некоторая конкретная информация. Найти нужные сведения можно последовательным просмотром записей. Однако такой способ поиска неудобен и малоэффективен.
Большинство систем управления базами данных позволяют произвести выборку нужной информации путем выполнения запросов. Пользователь в соответствии с определенными правилами формулирует запрос, указывая, каким критериям должна удовлетворять интересующая его информация, а система выводит записи, удовлетворяющие запросу.
Для выборки из базы данных записей, удовлетворяющих некоторому критерию, предназначен компонент Query (рис. 24).
Рис. 24. Значок компонента Query
Компонент Query похож на компонент Table, но, в отличие от последнего, он представляет не всю базу данных (все записи), а только ее часть — записи, удовлетворяющие критерию запроса.
В табл.18 перечислены некоторые свойства компонента Query.
Таблица 17.18. Свойства компонента Query
Свойство Определяет
N
ame Имя компонента. Используется компонентом Datasource для связи
результата выполнения запроса (набора записей) с компонентом,
обеспечивающим просмотр записей, например DBGrid
SQL Записанный на языке SQL запрос к базе данных (к таблице)
Active При присвоении свойству значения True активизирует выполнение запроса
Д
ля того чтобы во время разработки программы задать, какая информация будет выделена из базы данных в результате выполнения запроса, свойство sql должно содержать представленный на языке SQL запрос на выборку данных.
В общем виде запрос на выборку из таблицы данных выглядит так:
SELECT СписокПолей FROM Таблица WHERE (Критерий) ORDER BY СписокПолей
где:
-
select — команда выбора записей из таблицы и вывода содержимого полей, имена которых указаны в списке;
-
from — параметр команды, который определяет имя таблицы, из которой нужно сделать выборку;
-
where — параметр, который задает критерий выбора. В простейшем случае критерий - это инструкция проверки содержимого поля;
-
order by — параметр, который задает условие, в соответствии с которым будут упорядочены записи, удовлетворяющие критерию запроса.
Например, запрос
SELECT Fam, Name FROM school.db WHERE
(Class = ‘10a’) ORDER BY Name, Fam
обеспечивает выборку из базы данных "Школа" (из таблицы School.db) записей, у которых в поле class находится текст 10а, т. е. формирует упорядоченный по алфавиту список учеников 10-а класса.
Другой пример. Запрос
SELECT Fam, Name FROM school.db WHERE
(Fam > 'K') and (Fam < 'Л') ORDER BY Name, Fam
обеспечивает выбор информации об учениках, фамилии которых начинаются на букву К.
Запрос может быть сформирован и записан в свойство sql во время разработки формы или во время работы программы.
Для записи запроса в свойство sql во время разработки формы используется редактор списка строк (рис. 25), окно которого открывается в результате щелчка на кнопке с тремя точками в строке свойства sql окна Object Inspector.
Рис. 25. Пример запроса к базе данных "Школа"
Свойство sql представляет собой список строк. Поэтому чтобы сформировать запрос во время работы программы, нужно, используя метод Add, добавить строки (SQL-инструкции) в список SQL.
Ниже приведен фрагмент кода, который формирует запрос на поиск информации о конкретном человеке (критерий выбора - содержимое поля Fam должно совпадать со значением переменной fam).
with form1. Query1 do
begin
Close; // закрыть файл — результат выполнения предыдущего запроса
SQL.Clear; // удалить текст предыдущего запроса
// записываем новый запрос в свойство SQL
SQL.Add('SELECT Fam, Name, Class');















