Выбор информации из базы данных




Практическая работа №21

Тема: «Базы данных в Delphi»

База данных «Школа»

1. С помощью утилиты DataBase Desktop создайте таблицу для хранения информации об учениках школы. Пусть файл School.db содержит поля:

N – личный номер ученика (числовое поле с автоувеличением)

Name – имя (строковый тип)

Fam – фамилия (строковый тип)

Class – класс (строковый тип)

Adr – адрес (строковый тип)

 

2. Псевдоним Школа (или какой- либо свой псевдоним) создайте при помощи BDE Administrator.

3. Создайте форму приложения в Delphi. На форму поместите компоненты Table1 (вкладка BDE) и DataSource1(вкладка Data Access), которые обеспечивают доступ к файлу данных, и установите следующие значения их свойств:

 

Свойство Значение
Table1.DatadaseName Школа
Table1.TableName School.db
Table1.Active True
DataSource1.Dataset Table1

4. Для просмотра и редактирования данных в режиме таблицы в форму надо добавить компонент DBGrid1 (вкладка Data Controls).

5. Чтобы задать, какая информация будет отображаться в таблице DBGrid1, необходимо задать источник данных для таблицы (значение свойства DataSource = DataSource1). Свойство
Options.dgTitles разрешает вывод строки заголовка столбцов, Options.dgIndicator разрешает вывод колонки индикатора во время работы с базой данных (треугольник – текущая запись, звездочка – новая запись).

6. Значения уточняющих параметров свойства Columns задаются в окне Editing DBGrid1.Columns. Добавьте в компонент DBGrid1 4 колонки с помощью команды Добавить новый(Ins).Свойство Columns представляет собой массив компонентов типа TColumn. Каждой колонке соответствует элемент массива.

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

Свойство Определяет
FieldName Поле записи, содержимое которого выводится в колонке
Width Ширину колонки в пикселах
Font Шрифт, используемый для вывода текста в ячейках колонки
Color Цвет фона колонки
Alignment Способ выравнивания текста в ячейках колонки. Текст может быть выровнен по левому краю (taLeftJustify), по центру (taCenter) или по правому краю (taRightJustify)
Title.Caption Заголовок колонки. Значением по умолчанию является имя поля записи
Title.Alignment Способ выравнивания заголовка колонки. Заголовок может быть выровнен по левому краю (taLeftJustify), по центру (taCenter) ИЛИ ПО правому краю (taRightJustify)  
Title.Color Цвет фона заголовка колонки
Title.Font Шрифт заголовка колонки

 

В простейшем случае для каждой колонки достаточно установить значение свойства FieldName, которое определяет имя поля записи, содержимое ко­торого будет отображаться в колонке, а также значение свойства Title.caption, определяющего заголовок колонки.

 

7. Добавить к форме компонент DBNavigator, настроив его на работу с таблицей-источником данных (свойству DataSource нужно присвоить значениеDataSource 1).

8. Откомпилируйте и запустите программу. Следует обра­тить внимание, что для того чтобы после запуска программы в окне появи­лась информация или, если база данных пустая, можно было вводить новую информацию, свойство Active таблицы-источника данных должно иметь значение True.

Используя клавиши пе­ремещения курсора вверх и вниз, а также клавиши листания текста страни­цами (<Page Up> и <Page Down>), можно, перемещаясь от строки к строке, просматривать записи базы данных. Нажав клавишу <Ins>, можно добавить запись, а нажав клавишу <Del> — удалить запись. Для того чтобы внести изменения в поле записи, нужно, используя клавиши перемещения курсора влево и вправо, выбрать необходимое поле и нажать клавишу <F2>.

 

Выбор информации из базы данных

При работе с базой данных пользователя, как правило, интересует не все ее содержимое, а некоторая конкретная информация. Найти нужные сведения можно последовательным просмотром записей. Однако такой способ поиска неудобен и малоэффективен.

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

Для выборки из базы данных записей, удовлетворяющих некоторому крите­рию, предназначен компонент Query (вкладка BDE).

Компонент Query похож на компонент Table, но, в отличие от последнего, он представляет не всю базу данных (все записи), а только ее часть — запи­си, удовлетворяющие критерию запроса. В табл. 17.18 перечислены некоторые свойства компонента Query.

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

Свойство Определяет
Name Имя компонента. Используется компонентом Datasource для связи результата выполнения запроса (набора записей) с компонентом, обеспечивающим просмотр записей, например DBGrid
SQL Записанный на языке SQL запрос к базе данных (к таблице)
Active При присвоении свойству значения True активизирует выполнение запроса

 

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

Например, запрос

SELECT Fam, Name

FROM ':Школа:school.db'

WHERE (Class = '11а')

ORDER BY Name, Fam

обеспечивает выборку из базы данных "Школа" (из таблицы School.db) списка учеников 11-а класса.

Следующий запрос:

SELECT Fam, Name FROM ":Школа:school.db"

WHERE (Fam > 'K'} and (Fam < 'Л')

ORDER BY Name, Fam

обеспечивает выбор информации об учениках, фамилии которых начинают­ся на букву К.

Запрос может быть сформирован и записан в свойство sql во время разра­ботки формы или во время работы программы.

Для записи запроса в свойство sql во время разработки формы используется редактор списка строк, окно которого открывается в результате щелчка на кнопке с тремя точками в строке свойства sql окна Object Inspector.

Свойство sql представляет собой список строк. Поэтому чтобы сформиро­вать запрос во время работы программы, нужно, используя метод Add, доба­вить строки (Sql- инструкции) в список sql.

Ниже приведен фрагмент кода, который формирует запрос на поиск ин­формации о конкретном человеке (критерий выбора — содержимое поля Fam должно совпадать со значением переменной fam).

with form1.Query1 do

Begin

Close; // закрыть файл — результат выполнения предыдущего запроса

SQL.Clear; // удалить текст предыдущего запроса

// записываем новый запрос в свойство SQL

SQL.Add('SELECT Fam, Name, Class');

SQL.Add('FROM ":Школа:school.db"'};

SQL.Add{'WHERE');

SQL.Add('(Fam = "' + fam + '")');

SQL.Add('ORDER BY Fam');

Open; // активизируем выполнение запроса

end;

Следующая программа (диалоговое ок­но приведено на рисунке), демонстрирует возможность изменения запроса, точнее, критерия запроса, во время работы программы. Программа обеспечивает вывод как всего списка учеников, так и его части. Например, посредством выполнения запроса выводится информация только о конкретном ученике.

Рис. Форма приложения База данных Школа

Button1 Button2

Листинг модуля:

unit school2_;

Interface

Uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Grids, DBGrids, Db, DBTables, ExtCtrls, DBCtrls, StdCtrls;

Type

TForm1 = class(TForm)

Table1: TTable;

Query1: TQuery;

DataSource1: TdataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DBText1: TDBText;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

end;

Var

Form1: TForm1;

Implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var

fam: string[30];

begin

fam:=InputBox('Выборка информации', 'Укажите фамилию и нажмите OK.', '');

if fam <> '' then

begin

with form1.Query1 do begin

Close;

SQL.Clear;

SQL.Add('SELECT Fam, Name, Class');

SQL.Add('FROM ":Школа:school.db"');

SQL.Add('WHERE');

SQL.Add('(Fam = "'+ fam + '")');

SQL.Add('ORDER BY Name, Fam');

Open;

end;

if Query1.RecordCount <> 0 then

DataSource1.DataSet:=Query1

else begin

ShowMessage('В базе нет данных, удовлетворяющих критерию запроса'); DataSource1.DataSet:=Table1;

end;

end;

end; // конец proc

 

procedure TForm1.Button2Click(Sender: TObject);

begin DataSource1.DataSet:=Table1; // задается источник данных - таблица

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

DataSource1.DataSet:= Table1;

Table1.Active:= True;

end; end. // end unit

 

Задание.

1. Создайте новый запрос отбора списка учеников заданного класса. Для этого добавьте новую кнопку Поиск по классу.

2. Создайте новую форму для добавления новых записей в вашу индивидуальную таблицу, созданную на лабораторной работе №1 с помощью соответствующих навигационных методов. Эта форма должна содержать свободные поля, в которые должны заноситься корректные данные, затем должны заполняться соответствующие поля таблицы. Предусмотрите кнопку подтверждения и отмены сделанных действий.

3. Сделайте вызов формы из первой формы, содержащей данный в DBGrid, нажатием на клавишу Добавить ученика.

4. Сделайте компонент DBGrid недоступным для редактирования данных.

5. Предусмотрите обновление текущей записи формы 1 с использованием уже созданной формы 2. Для этого создайте кнопку Редактировать, нажатие на которую будет открывать форму 2 для редактирования текущей записи.

1.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: