Реферат

Реферат База данных 3

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 11.11.2024


Само задание:


Учет движения продуктов по складу горюче-смазочных материалов. Составить базу данных, полями которой являются: шифр продукта, наиме­нование продукта, объём, признак прибытие/убытие, дата, наименование (фамилия) потребителя/поставщика номер счёта потребителя/поставщика, адрес, телефон и др. Вывести динамику поступления-убытия каждого кон­кретного продукта, а также общий объём движения продуктов на складе ГСМ (сколько прибыло и убыло за текущий месяц).

Что нужно проделать

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

ОСНОВЫ ПОСТРОЕНИЯ БАЗЫ ДАННЫХ

 В СРЕДЕ BORLAND DELPHI




Определение структуры таблицы

Например, в учебном управлении высшего учебного за­ведения необходимо хранить информацию о студентах заведения: № зачётной книжки, шифр группы, ФИО, год рождения, пол, предмет, среднюю оценку по предмету.

Таблица БД пред­ставляет собой обычную двумерную таблицу с характеристи­ками (атрибутами) какого-то множества объектов и имеющая имя - идентификатор, по которому на неё можно сослаться.

 

Таблица 1. Данные о студентах


№ зач. книж­ки

Груп­па

Фамилия

Имя

Отчество

Год рожде­ния

Пол

Предмет

Оценка

Zach

Group

Fam

Nam

Par

Year_b

Sex

Pred

Oz

115261

В2201

Иванов

Егор

Петрович

1982

М

Информатика

4

234582

Э3514

Петров

Иван

Сидорович

1984

М

Информатика

5

365484

Э3514

Сидоров

Иван

Петрович

1983

М

СПО

3

498759

А1501

Егорова

Инна

Егоровна

1982

Ж

ТОЭ

4



















 

Например, для таблицы введём для последующих ссылок имена полей Zach
,
Group
,
Fam
,
Nam
,
Par
,
Year
_
b
,
Sex
,
Pred
,
Oz
, соответ­ствующие указанным в ней заголовкам полей.

Тип поля характеризует тип хранящихся в поле данных. Это могут быть строки, числа, булевы значения,большие тексты (на­пример характеристики сотрудников),изображения (фотографии) и т.п.

Каждая строка таблицы соответствует одному из объектов. Она называется записью и содержит значения всех полей, харак­теризующих данный объект.

При построении таблиц БД важно обеспечить непротиворе­чивость информации. Это делается введением ключевых полей, обеспечивающих уникальность каждой записи. Ключе­вым может быть одно или несколько полей. В приведённом примере можно было бы сделать ключевыми совокупность полей Fam
,
Nam
и
Par
. Но в этом случае нельзя было бы заносить в таб­лицу сведения о полных однофамильцах, у которых совпадают фамилия, имя и отчество. Поэтому целесообразнее использовать поле Zach – номер зачётной книжки, которое можно сделать клю­чевым, по­скольку номер зачётной книжки не может быть одинаковым у двух студентов.

В каждый момент времени есть некоторая текущая запись, с которой ведётся работа. Записи в таблице БД физиче­ски могут располагаться без какого-либо порядка, просто в по­следовательности их ввода (появления новых студентов). Но когда данные таблицы предъявляются пользователю, они должны быть упорядочены. Для упорядочения данных в БД, так же, как и для упорядочения данных в массивах, используется понятие индекса. Индекс показывает, в какой последовательности будет просматриваться таблица. Часто индексы хранятся от­дельно от файла с данными. Для быстрой сортировки обычно ин­дексы выносят в отдельный индексный файл с тем же названием, но с другим расширением. В таком файле содержатся только пер­вичные ключи и описание очередности записей. Основной же файл при этом остается неупорядоченным. Т. к. индексный файл на­много меньше файла объектов, сортировка по индексу происходит гораздо быстрее, чем сортировка основного файла.

Индексы могут быть первичными и вторичными. Например, первичным индексом могут служить поля, отмеченные при соз­дании таблицы как ключевые. А вторичные индексы могут созда­ваться для других полей как при создании таблицы, так и впоследствии. Вторичным индексам присваиваются идентификато­ры, по которым их можно использовать.

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

 Создание файла таблицы данных
Для работы с базами данныхнаиболее распространённых форматов можно использовать утилиту Database

Desktop
, постав­ляемую в составе большинства продуктов корпорации Inprise (Borland). При установке Delphi создаётся типовая структура каталогов и меню "Пуск" Windows, а в меню "Пуск"Прог
paммы->Borland Delphi->Database Desktop
.

Создание таблицы базы данных осуществляется выбором опции меню File->New->Table после запуска утилиты Database Desktop.

В появившемся диалоге Create Table выбирается тип табли­цы (из известных стандартных например,Paradox, Access, dBase, InterBase, Oracle и т.д.).

В этой работе используется наиболее простой тип плоских таблиц dBase

for

Windows
.

В диалоге задания структурыуказываются:  1. имя поля (Field Name)  2. тип (Type)   3. размер (Size)  4. число десятичных знаков (Dec) и др.

В dBase for Windows используются типы полей: Character
(
C
) -
символьное; Float
(
F
) -
вещественное (с вы­сокой точностью); Number
(
N
) -
целое, вещественное (с точностью в 2 десятичных знака); Date
(
D
) -
дата; Logical
(
L
) -
логическое; Мето(М) - текстовое без ограничениядлины; Binary
(
B
) -
двоич­ное (рисунки и другие объекты).

Выбор типа поля осуществляется нажатием клавиши <пробел> или правой клавишей «мыши».

Для примера БД студентов учебного заведения структура файла таблицы может быть представлена в виде (рис. 2).
Подпись:
Рис. 2 Диалог задания структуры таблицы
 Изменение кодовой страницы для поддержки русского язы­ка осуществляется следующим образом: в окошке Table

Properties
из выпадающего списка выбирается пункт Table

Language
,
после чего необходимо нажать кнопку Modify
;
в появившемся диалоге Table

Language
указывается кодовая страница dBase

RUScpp
866.


После задания структуры таблицы, её сохранение произво­дится выбором кнопки Save

As
.
В диалоге указывается имя файла таблицы (например, stud
.
dbf
).


Если необходимо в дальнейшем изменить структуру табли­цы,      следует   открыть таблицу в Database

Desktop
и выбрать в главном меню пункты Table
->
Restructure
.


После создания таблицы возможно её редактирование и использование в при­кладных программах.
Разработка приложения для работы с таблицей данных
Для разработки системы управлениябазой данных можно воспользоваться как стандартными СУБД (Access, Paradox, dBase и т.д.), так и разработать самостоятельное приложение для работы с БД. 

Разработка самостоятельного приложения для работы с БД имеет ряд преимуществ по сравнению с использованием готовых пакетов:

 1) ресурсы ОС задействованы только для тех задач, которые будут реализованы в СУБД;

2) полученные программные модули очень компактны;

3) обеспечивается более высокое быстродействие вследствие использования только необходимых для решения задачи операций с БД;

4) многообразие реализаций максимально удобного интерфейса пользователя с СУБД;

5) возможность интегрироваться в любые программные приложения;

6) осуществление расчётных задач сложности, которая не может быть обеспечена применением готовых СУБД.

Для разработки системы управлениябазой данных восполь­зуемся интегрированной средой визуальной разработки Windows-приложений Borland Delphi. Одним из важнейших достоинств Delphi является на­личие удобных средств быстрой визуальнойразработки приложе­ний с использованием специализированных компонент доступа и управления базами данных, генерации отчётов, запросов SQL, a так же наличие технологии Borland Database Engine (BDE), обеспечи­вающей доступ к большинству известных баз данных с использо­ванием их собственных драйверов.

Для программирования баз данныхиспользуются следую­щие вкладки палитры компонент: Data

Access
и Data

Control
(рис. 3, 4, 5).

Подпись:
Рис. 3. Палитра компонентов
Borland
Delphi

Подпись:
 

 

Рис
. 4.
Вкладка
Data

Access

Вкладка Data Access содержит компоненты:

Table (второй слева) - связывающий файл таблицы на диске с приложением и позволяющий оперировать с таблицей (второй компонент).

DataSource (первый слева) - связывает компоненты ото­бражения информации с компонентом Table (первый компонент).
Подпись:
Рис. 5. Вкладка
DataControl



Вкладка Data

Control
содержит компоненты:

DBGrid
-
для отображения и редактирования записей базы данных (первый компонент)

DBNavigator
-
для управления данными (удаление, добавле­ние, перемещение и т. д.)

Компоненты переносятся на окно приложения (форму) путём выделения компоненты нажатием правой клавиши мыши на ней, а затем на форме.

Компоненты вкладки Data

Access
являются служебными и от­носятся к невидимым (т. е. отображаются на стадии разработки приложения и не отображаются в процессе выполнения), a Data

Control
к отображаемым как в процессе разработки, так и в про­цессе выполнения.

После переноса компонент на форму производится настройка свойств объектов с использованием Object

Inspector
.




Основные свойства объекта
Table
:


Name
-
имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DatabaseName
-
имя псевдонима (alias) базы данных (выби­рается из списка, если таблица и проектнаходятся в одном ката­логе необязательный параметр!); TableName
-
имя файла таблицы (выбирается из списка, ес­ли указан псевдоним БД или файл с таблицей и проект находятся в одном каталоге); Active
-
позволяет отображать данные из таблицы в процес­се разработки и автоматически открывает файл при выполнении (когда установлено true).

Служебная компонента DataSource выполняет роль свя­зующего звена и имеет следующие свойства:

Name
-
имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DataSet
-
имя таблицы связанной с данным объектом (вы­бирается из списка).

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


Основные свойства объекта DBGrid:
Name
-
имя объекта используемое в программе (является указателем, заданным в соответствии с шаблоном компоненты); DataSource
имя источника данных, посредством которого осуществляется связь объекта DBGrid с объектом Table (выбира­ется из списка).

Объект DBGrid позволяет не толькоотображать данные, но и управлять ими (перемещаться по записям, добавлять и редакти­ровать записи и т.д.). Однако ряд действий эффективней выпол­нять с использованием объекта DBNavigator
.


Основные свойства объекта DBNavigator:
Name
имя объекта (указатель); DataSource
имя источника данных, посредством которого осуществляется управление компонентой Table, выбирается из спи­ска (рис. 6).

Подпись:  Подпись:
                 Рис. 6 Свойства компонент
Table
и
DataSource


 

На рис. 7 показана структурная схема взаимодействия компонент приложения для работы с базой данных. 

Подпись:   
 

   

                  
Рис. 7. Взаимодействие компонент приложения

Подпись:  После размещения на форме всех необходимых компонент и настройки их свойств получим макет приложения, показанный на рис. 8.
             Рис. 8 Макет формы приложения для работы с таблицей
stud



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

Подпись:

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

1. проектные файлы (приводятся имена, используемые по умолчанию для первого созданного в среде проекта):

Project1 .dof - проектный файл компоновки, описывающий все файлы, входящие в проект;

Project1.dpr - файл, отвечающий за запуск приложения;

Project1.res - файл ресурсов (курсоры, пиктограммы и т.д.).

2. файлы, относящиеся к формам приложения (имена, используемые по умолчанию Delphi для первой созданной формы):

Unit1 .pas - исходные тексты программы, содержащие обра­ботчики событий класса TForm1;

Unit1 .dfm - файл с описанием формы, её визуальных объек­тов и их свойств.

3. Файлы данных: файлы таблиц, индексов и т.д.

При использовании формата dBase for Windows файлы таблиц имеют расширение *.dbf, а файлы индексов *.mdx.

 

Пример реализации БД о студентах
Постановка задачи: необходимо организовать хранение информации о студентах: № зачётной книжки, шифр группы, ФИО, год рождения, пол, предмет, среднюю оценку по предмету.

А. Определим структуру базы и введём условные обозначения:

Zach – номер зачётной книжки, целое 6 знаков;

Group – шифр группы, символьное, 4 символа;

Fam – фамилия символьное, 20 символов;

Nam – имя символьное, 20 символов;

Par – отчество символьное, 20 символов;

Year_b – год рождения, целое, 4 знака;

Sex – пол символьное, 1 символ;

Pred – предмет символьное, 10 символов;

Oz – оценка целое, 4 целых знака, 2 десятичных.

В. Разработаем таблицу с соответствующей структурой. Для этого необходимо запустить утилиту Database Desktop, выбрать опции меню File->New и заполнить соответствующие ячейки диалога задания структуры в соответствии с выбранной структурой (пункт А, рис. 2). После этого необходимо сохранить таблицу на диске в своём рабочем каталоге.

 С. Создадим
Windows
-приложение для работы с данными.
Для этого необходимо запустить среду Borland Delphi, выбрать опции меню File->New->Application, после чего откроется новый проект приложения. Далее следует перенести на макет формы приложения компоненты Table, DataSource, DBGrid, DBNavigator и настроить их свойства в соответствии с табл. 2.

 

Таблица 2. Свойства компонент приложения

Компонента

Свойство

Значение

Table

Name

Table1

TableName

Stud.dbf

DataSource

Name

DataSource1

DataSet

Table1

DBGrid

Name

DBGrid1

DataSource

DataSource1

DBNavigator

Name

DBNavigator1

DataSource

DataSource1

 

Внешний вид макета формы приложения должен соответствовать рис. 8.

После этого необходимо откомпилировать проект и осуществить ввод данных в таблицу (рис. 9).
                        ЛАБОРАТОРНАЯ РАБОТА №2

СОЗДАНИЕ WINDOWS-ПРИЛОЖЕНИЯ ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ. ГЕНЕРАЦИЯ ОТЧЕТОВ.


 

 Обработка информации однотабличной базы данных


Помимо хранения, редактирования, обновления и анализа данных в базе данных (БД), на практике часто возникает задача осуществления разного рода расчётов и вычислений с использованием хранящейся в БД информации. Например, для базы данных, хранящей информацию о студентах учебного заведения (см. методические указания к лабораторной работе №1) может возникнуть задача расчёта средней оценки студента по конкретному предмету или расчёта успеваемости группы. Поскольку требуемые расчёты могут быть довольно сложные, необходимо использование программных пакетов разработки приложений, объединяющих в себе как удобные средства доступа к БД различных форматов, так и гибкий язык программирования. С этой точки зрения наиболее удобным инструментом является среда визуальной разработки Windows-приложений Borland Delphi, обеспечивающая доступ к информации БД практически всех существующих форматов и возможность её обработки, используя язык Delphi.

Визуальная навигация и управление данными в Borland

Delphi
производится с помощью компонент просмотра (DBGrid
)
и управления (DBNavigator
),
которые позволяют перемещаться по записям, удалять, добавлять или модифицировать их и т.д.

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

Next
-
перемещение указателя на следующую запись;

Prior
-
перемещение указателя на предыдущую запись;

First
-
перемещение указателя на первую запись таблицы;

Last
-
перемещение указателя на последнюю запись таблицы.

Например, если создан объект Table
,
свойством Name ко­торого является значение Table
1,
то оператор

Table
1.
First
;


переместит указатель на первую запись. Перечисленные методы позволяют последовательно пере­мещать указатель записи по таблице. Для определения последней записи таблицы используется ее свойство Eof
,
которое принимает значение true
,
когда указатель установлен на последней записи.

Фрагмент программы

 

Tabl
1.
Open
;


Table
1.
First
;
//перемещение на начало таблицы         

While

not

Table
1.
EOF

do
//проверка на конец файла

 
Table
1.
Next
;
//перемещение на следующую запись

Table
1.
Close
;


 

показывает, как организовать последовательный просмотр всех записей таблицы.

Для программного управления записями таблицы в класс TTable инкапсулированы следующие методы управле­ния:

Delete
-
удаление текущей записи с позиционированием указателя на следующую запись;

Insert
-
добавление пустой записи в таблицу;

Edit – перевод таблицы в режим редактирования;

Post
сохранение изменений в таблице.

Например, фрагмент программы

 

Table
1.
Last
;


Table
1.
Delete
;


  позволяет удалить последнюю запись таблицы.

Перечисленные методы позволяют оперировать с целыми записями таблицы.

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

Для создания подобных объектов нужно выполнить следующую последовательность действий:

-         нажать правой клавишей мыши на соответствующем объ­екте Table
;


-         в выведенном меню выбрать опцию Fields

Editor
,
в ре­зультате чего на экране появится диалог редактирования полей;

- нажать правой клавишей мыши в области диалога редак­тирования полей;

- в выведенном меню выбрать опцию Add

Fields
,
в резуль­тате чего на экране появится соответствующий диалог;

- добавить необходимые поля выбором кнопки Ok
.
В результате диалог редактирования полей должен содер­жать список созданных объектов, свойствакоторых отражены в окне Object

Inspector
.
Каждый из созданных объектов, указываю­щих на соответствующие поля, имеет свойство Name
.


Например, для таблицы с именем stud.dbf, содержащей фа­милии студентов и их оценки с именами полей FAM и OZ
,
для полей FAM и OZ будут созданы объекты с именами     Table
1[‘
FAM
‘]и Table
1[‘
OZ
’].


Созданные объекты позволяютоперироватьс таблицей на уровне полей.

Фрагмент программы

 

Var

 
Soz
:
real
;
//переменная для средней оценки

 
N
   :
integer
;   
//счётчик записей

begin

  Table1.First;

  While not Table1.EOF do begin

      soz:=soz+Table1[‘OZ’].Value;//накопление суммы

 n
:=
n
+1;
//увеличение счётчика записей

 
Table
1.
Next
;
//переход на след. запись

  End;

 
if
(
n
<>0)
then
//проверка отсутствия записей

    
soz
:=
soz
/
n
;
//расчёт среднего

end
;


 

показывает, как вычислить среднюю оценку всех студентов. Для отображения на экране вычисленных данных можно, например, использовать объекты Label (текстовая метка). Свойст­во Caption объекта Label отвечает за надпись на форме приложе­ния.

Например, если имя объекта Label
1
, то фрагмент програм­мы

 

var

  buf : string[50];

buf:="
Средняя

оценка
:”+FloatToStr(soz);


Label1.Caption := buf;


 

позволяет отобразить на форме вычисленное значение средней оценки.

Свойство Caption представляет собой данное специализи­рованного типа AnsiString
,
позволяющего хранить символьные строки в формате отличном от формата хранения в символьном массиве. Для преобразования значения типа символьной строки в значение типа AnsiString используется операция при­сваивания, справа от которой указывается символьная строка или ее адрес.

Для вывода разного рода списков плавающего размера используется компонента Memo. Добавление, например, фамилии студента в список будет осуществляться с помощью оператора:

 


Memo1.lines.Add(Table1[‘FAM’]);

 

Кроме ввода данных в таблицу, как правило, в программу требуется вводить другие исходные данные. Для ввода исходных данных в программу используются объекты Edit. Объект Edit
имеет свойство Text, которое является данным типа         AnsiString и содержит значение, введенное в поле ввода на форме приложе­ния.

Например, если имя объекта Edit
1
, то фрагмент программы

 



 
Var


 soz : real;

     n   : integer;

  begin

     soz:=0;

n:=0;

Table1.First;

While not Table1.EOF do begin

   /* проверка совпадения поля FAM и текста в Edit1*/

  
if (Table1[‘FAM’] = Editl.Text) then begin


     soz:=soz+Table1[‘OZ’];

     n:=n+1;

   end;

   Table1.Next;

End;

If (n<>0) then soz:=soz/n;

  End
;


  позволяет рассчитать оценку не всех студен­тов, а конкретного студента, фамилия которого введена в поле ввода объекта Edit
1
.

Ряд методов в Borland Delphi специально предусмотрен для преобразования типов:

FloatToStr
() -
преобразование вещественного числа в строку;

IntToStr
() -
преобразование целого числа в строку;

StrToFloat
() -
преобразование строки в вещественное  число;

StrToInt
() -
преобразование строки в целоечисло.

Как правило, программные модули выполняются в резуль­тате определенных действий пользователя. Например, фрагмент программы по расчёту и выводу средней оценки может выпол­няться при нажатии кнопки «Расчет». Событие Click (одинар­ное нажатие) объекта Button (кнопка) позволяет определить функцию, выполняемую при нажатии на кнопку. За надпись на кнопке отвечает свойство Caption
.


Заголовок функции генерируется автоматическипри выбо­ре в закладке Events инспектора объектов соответствующего со­бытия и двойном щелчке напротив, сама функция инкапсулирует­ся в класс Form (форма) - основной класс приложения. В Borland Delphi такие функции называются обработчиками событий, т. к. они содержат программный код, выполняющийся при насту­плении соответствующего события этой компоненты. Например, если на форме с именем Form
1
разместить ком­поненту Button с именем Button
1
и создать обработчик события Click для компоненты Button
1
, в редакторе кода в файле Unit
1.
pas
будет создана пустая функция, которая должна содер­жать код, выполняемый, если произойдёт событие Click.

 

procedure TForm1.Button1Click(Sender: TObject);

begin

//код, выполняющийся при наступлении события OnClick //например, расчёт средней оценки студентов

end;


 

а в заголовочном файле unit Unit1 в шаблоне класса TForm1 будет объявлена функция обработчика события Click.

 

procedure Button1Click(Sender: TObject);

 

Приведём вид формы приложения (рис. 9) примера работы с таблицей stud
.
dbf
, расчёта средней оценки студента, фамилия которого вво­дится в поле ввода и описание компонент приложения с по­яснением настройки свойств и событий (табл. 1).

Подпись:


Рис. 1. Внешний вид формы приложения



Таблица 1. Свойства и события компонент приложения

Компонент

Cвойство

Значение

Table

Name

Table1

TableName

stud.dbf

DataSource

Name

DataSource1

DataSet

Table1

DBGrid

Name

DBGrid1

DataSource

DataSource1

DBNavigator

Name

DBNavigator1

DataSource

DataSource1

ShowHint

TRUE (показывает подсказки к кноп­кам навигатора)

Button

Name

Button1

 

 

Caption

"Расчёт средней оценки студентов"

Label

Name

Label1

 

 

Caption

Определяется в обработчике события OnClick компоненты Button1

Edit

Name

Edit1

 

 

Text

Определяется пользователем

Компонент

Cобытие

Значение

Button

OnClick

Одинарное нажатие на кнопку



На рис. 2 показан вид работающего Windows-приложения после отладки и компиляции проекта, запускаприложения, ввода в поле ввода фамилии Петров и нажатия кнопки "Расчёт средней оценки".

Подпись:
Рис. 2. Внешний вид работающего приложения
 3. Печать данных

A. Для осуществления печати результатов, представления данных в удобной для просмотра форме удобно использовать так называемые отчёты. В Borland Delphi имеется набор компо­нент для быстрой визуальной разработки отчётов. За автоматиче­скую генерацию отчёта отвечает компонента TRVTableConnect
(вкладка Rave). Вся дальнейшая работа осуществляется под управлением утилиты Rave Report Designer.

Для создания отчёта необходимо выполнить последовательность действий:

1. Для вызова утилиты выберите в главном меню команду Tools
->
Rave

Designer
.

2. C помощью команды File
->
New

Data

Object
вызовите окно Data Connection, в котором выберите продолжение Direct

Data

View
, и после щелчка на кнопке Next
-
RvTableConnection
1
. Таким образом, отчет связывается с источником данных, которые он будет отображать.

3. Вызовите мастера создания отчета по данным, получаемым из единственной таблице командой Tools
->
Report

Wizards
->
Simple

Table
. Этот мастер с помощью последовательно раскрывающихся окон определяет основные параметры отчета.

4. Для подготовки проекта отчета скорректируйте размеры полос и взаимное расположе­ние на них компонент.

5. Для указания связи приложения с проектом имя файла отчета (*.rav) помещается в свойство ProjectFile компоненты TrvProject, которую необходимо поместить на форму.

6. Напишите обработчик события щелчка на кнопке Отчет:
procedure TForm1.Button1Click (Sender: TObject);

Begin

  RvProject1.Execute;

End
;

B. Существует альтернативная технология создания отчетов в Delphi Quick

Report
.

Этот компонент всегда помещается на пустую форму, образуя с ее помощью визуальную среду конструирования отчета.

Для создания отчёта необходимо выполнить последовательность действий:

1. Создать дополнительную форму для отчёта,выбрав опции меню File->New Form, вынести на форму отчёта компоненту TQuickRep
 из вкладки Qreport и сохраните.

2. Эта форма не будет создаваться автоматически в момент старта программы, поэтому после ее присоединения к проекту выберите команду Project
->
Options
и перенесите ее в список доступных форм Available

forms
.


3. С помощью команды File
->
Use

unit
связать новую форму с модулем данных, после чего поместить в свойство DataSet компонента QuickRep
1
значение того набора данных, который будет содержать основную информацию.

4. Вынести на форму отчёта компоненты QRBand (полосы отчёта). Эта компонента является частью печатной страницы, т.е. основанием для ввода данных. В зависимости от свойств BandType различают несколько типов компонентыQRBand: за­головочная полоса (rbTitle
)
выводится только один раз в начале страницы (может содержать заголовок и наименования столбцов таблицы); полоса данных (rbDetail
)
содержит значения полей текущей записи и выводится столько раз, сколько записей в таб­лице; rbSummary выводится один раз в конце отчёта.

5. Установить значение свойства BandType компоненты QRBand
.
Рекомендуется выносить как минимум две полосы: за­головочную и данных.

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

7. На полосу данных вынести компоненты QRDBText
,
ото­бражающие значения определённых полей таблицы. Свойство DataSource устанавливает имя источника данных, а свойства DataField
имя выводимого поля.

8. Скорректировать размеры полос и взаимное расположе­ние на них компонент.

Предварительный просмотр на стадии проектирования при­ложения осуществляется двойным щелчком мыши на объекте QuickRep
1.

Макет формы печати данных таблицы stud.dbf и рассчитанной средней оценкипредставлен на рис. 3.
Подпись:
Рис. 3. Внешний вид формы печати


 Вывод данных на печать из программы выполняется встро­енным в компоненту TQuickRep методом Print
.


Например, если имя компоненты TQuickRep - QuickRe
­
p
1
, то оператор

Form2.QuickRep1.Print; 

выведет данные на печать, а

Form2:=TForm2.Create(Self);

Form2.QuickRep1.Preview;

Form
2.
Free
;


осуществит предварительный просмотр на экране.

Необходимо предусмотреть в программе вывод в от­чёт расчётных значений с использованием компоненты QRLabel.

При предварительном просмотре или выводе на печать данные будут отображены в следующем виде (рис. 4).

Подпись:
  Рис. 4. Данные таблицы
stud
.
dbf
при предварительном просмотре


 

Пример реализации программы расчёта средней оценки
Постановка задачи: необходимо организовать хранение информации о студентах: № зачётной книжки, шифр группы, ФИО, год рождения, пол, предмет, среднюю оценку по предмету. Обеспечить расчёт средней оценки для любого студента.

А. Создадим таблицу соответствующей структуры и Windows-приложение для работы с БД (см. методические указания к лабораторной работе №1).

B. Вынесем на макет формы приложения компоненту Edit с именем Edit1, компоненту Label с именем Label1 и компоненту Button с именем Button1 (см. рис. 1). Настроим свойства этих компонент в соответствии с табл. 1. Создадим обработчик события Click для компоненты Button1 и напишем в обработчике следующий код:

 

 
Var


 soz : real;

     n   : integer;

     buf : string[50];

  begin

     soz:=0;

n:=0;

Table1.First;

While not Table1.EOF do begin

   /* проверка совпадения поля FAM и текста в Edit1*/

  
if (Table1[‘FAM’] = Editl.Text) then begin


     soz:=soz+Table1[‘OZ’];

     n:=n+1;

   end;

   Table1.Next;

End;

If (n<>0) then soz:=soz/n;

buf:="
Средняя

оценка
:”+FloatToStr(soz);


Label1.Caption := buf;

QRLabel10.Caption := buf; 

  End
;



 C. Создадим вторую форму выбором меню File->New. Вынесем на форму  компоненту QuickRep из вкладки QReport
..
Вынесем на форму отчёта три компоненты QRBand (со свойствами BandType

rbTitle
, rbDetail
и rbSummary). На заголовочную полосу вынесем компоненты QRLabel
и настроим свойство Caption для отображения названия отчёта и столбцов. На полосу данных вынесем компоненты QRDBText и настроим их на связь с соответствующими полями. На последнюю полосу вынесем компоненту QRLabel c именем QRLabel10. Внешний вид и расположение компонент соответствует рис. 3. Просмотр отчёта организуем добавлением компоненты Button2 и обработчиком события Click следующего содержания:

Form2:=TForm2.Create(Self);

Form2.QuickRep1.Preview;

Form
2.
Free
;

После компиляции проекта необходимо проверить правильность работы программы.
ЛАБОРАТОРНАЯ РАБОТА №3

ОБРАБОТКА ИНФОРМАЦИИ БАЗЫ ДАННЫХ, ИМЕЮЩЕЙ СТРУКТУРУ «
master
-
detail
». ИЗУЧЕНИЕ ОСНОВ
SQL
.




 Основные сведения о ссылочной целостности. Задание индексов.

Для выполнения задания, необходимо сформировать в Database Desktop (DBD) структуры 2-х таблиц типа Paradox7, между которыми будет организована связь «один-ко-многим».

Подпись:  


 





Рис. 1 Структура основной и подчиненной таблиц в
Paradox
7.



Данные структур сохраним в папке WorkDir  с именами stud
.
db
и
ozen
.
db
.


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

Итак, в организации ссылочной целостности присутствуют 2 таблицы, одна из них содержит данные (подчиненная), другая использует эти данные (основная). Осуществляется она через поля основной и подчиненной таблиц. При этом в основной таблице можно использовать только ключевые поля, а в подчиненной – индексированные, причем выбранные для связи поля автоматически становятся индексированными. Из основной таблицы можно организовывать связь с несколькими подчиненными.

Для организации связи 2-х таблиц с помощью Data Desktop  в окне задания структуры, когда в нем находится структура подчиненной таблицы (в нашем случае, ozen
.
db
), следует у списка Table

properties
(характеристики таблицы) выбрать значение Referential

Integrity
(ссылочная целостность), после чего определить Define связь. В открывшемся окне задаем характеристики связи таблиц, выбрав в левом окне поле для организации связи, в правом – имя требуемой таблицы (двойным щелчком мыши). Естественно, что количество выбранных полей из каждой таблицы и их типы должны совпадать.

Подпись:


Рис. 2 Связь подчиненной и основной таблицы по ключевым полям.
Здесь же  можно задать характеристики связи: 1) правило обновления (update rule) – для определения варианта обновления значений в подчиненной таблице при изменении или удалении связанных значений в основной (каскадный, запрещенный); 2) выключатель защиты целостности (strict referential integrity) – для определения невозможности изменения данных в таблицах, для которых установлена ссылочная целостность. После определения параметров связи задаем имя связи.

Идентифицируем параметры всех связей основной таблицы:

Подпись: Имя связи	Поле младшей таблицы	Старшая таблица	Update rule	Strict Referen-tial Integrity
			Cascade	Prohibit	
sv	Zach	stud	•		Ö
…	…	…	…	…	…

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

Для задания вторичных индексов с помощью DBD, следует у списка Table

properties
(характеристики таблицы) выбрать значение Secondary

Indexes
(вторичные индексы), после чего определить Define
поля, используемые в индексе, их последовательность (!!!) и ряд характеристик: 1) уникальность (unique); 2) режим обновления (maintained); 3) чувствительность к регистру (case sensitive); 4) порядок сортировки (descending). По завершению формирования индекса  задаем имя индекса.

Предварительно сформируем таблицу, в которой перечислим все индексы и их характерные особенности:

Имя индекса

Поля

Unique

Maintained

Case sensitive

Descending

ind

Naim



Ö





Zach

Zach

Oz



Ö





Подпись:

Отметим, что для задания каждого индекса следует выполнять всю последовательность выше указанных действий. Нельзя, например, переместить все поля, используемые в индексах, в правый список, а затем выполнить оставшиеся действия, так как в этом случае будет создан 1 индекс сразу по всем выделенным полям.                         
Рис. 3 Задание вторичного индекса.

3. Задание псевдонимов в
BDE

Administrator
.

Располагать все таблицы БД, а также программы СУБД желательно в отдельной папке, которой к тому же следует задать псевдоним для более простого обращения к данным (до сих пор псевдонимы нами не были использованы).

Для задания псевдонима можно воспользоваться утилитой BDE Administrator, постав­ляемую в составе большинства продуктов корпорации Inprise (Borland). Утилита BDE Administrator находится в меню "Пуск"Прог
paммы -> Borland Delphi ->
BDE Administrator
.

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

Рис. 4. Окно
BDE
.

Для добавления псевдонима задаем либо Object
.
New
, либо по правой кнопке мыши в дополнительном меню выбираем New. Из списка драйверов выбираем значение Standard, используемое для создания псевдонима БД в формате Paradox.

Изменив имя псевдонима, рассмотрим набор его характеристик: 1) type – название драйвера, на основе которого был создан псевдоним, 2) default driver – название драйвера, который подключается к файлу БД первым, 3) enable bcd – признак перевода значений десятичных полей в двоично-десятичное представление, 4) path – путь к папке, где находятся таблицы БД.
4. Установка связей между компонентами и БД. Создание меню.
Теперь разместив на форме диалога компонент Menu с палитры компонентов Стандарт, сформируем простое меню, задавая названия пунктов меню свойству Items. Для Поиск – подменю: SQL и фильтрация, для Сортировкапо фамилии, по наименованию дисциплин и пункт Выход. Обратите внимание на порядок задания имен, в свойстве Name каждого пункта будет отображен этот номер.

Модуль пункта меню Выход будет самым информативным: Close();

Подпись:
Предыдущие приложения (л/р№1, 2) разрабатывались для ведения данных одной таблицы. Здесь же, одна из связанных таблиц является головной (master
,
таблица stud), а другая вспомогательной, детализирующей (detail, таблица ozen).

Итак, разместив в окне 2 комплекта Table, DataSource и средства отображения данных DBGrid, зададим их цепочку связи, которую можно представить схемой (рис.6). Связь с БД устанавливается в итоге значением true свойства Active.

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

Подпись:


Рис. 5 Форма диалога приложения БД





Рис. 6 Схема взаимодействия компонентов
Delphi
с БД.



Далее в свойстве MasterSource компонента Table, настроенного на вспомогательную таблицу, установите имя головной таблицы. После этого щелкните на свойстве  MasterFields. Откроется окно редактора связей полей (Field

Link

Designer
). Индексировать таблицу надо так, чтобы индекс включал ключевое поле связи Zach. После этого можете восстанавливать связь с БД (Active
=
true
) и запустить приложение.

Теперь немного об удобстве вода данных в форму. Для полей просмотра в DBGrid можно в свойстве Columns задать значение свойства ButtonStyle поля равным cbsAuto и тогда при редактировании данных автоматически будет появляться выпадающий список, из которого пользователь может выбирать соответствующее значение (например, для поля group).

На форму можно добавить кнопки Добавить, Удалить, Сохранить, Отменить с соответствующими обработчиками событий:

  Table
1.
Append
;
\\ метод, добавляющий новую запись в БД

 
Table
1.
DeleteRecords
(
arCurrent
);
\\ удаление записи, на которой стоит курсор текущей записи

 
Table
1.
Post
;
\\ сохранение изменений в БД

 
Table
1.
Cancel
;
\\отмена действий пользователя
Для корректного удаления записи, можно предварительно уточнить требование у пользователя:
If (Application.MessageDlg (

                          
“Действительно хотите удалить запись?”,


                           “Подтвердите удаление записи”,

                          
MB_YESNO + MB_ICONQUESTION) = IDYES) then


Table
1.
Delete
;

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

Одна из важнейших для пользователя операций с БД – поиск записей по некоторому ключу. Для их применения таблица должна быть предварительно проиндексирована по этому полю.

В работе мы рассмотрим только фильтрацию записей (Filter для компонента Table  применение запросов к БД при помощи компонента Query.

a) Компонент Table позволяет не только отображать, редактировать и упорядочивать данные, но и фильтровать записи по определенным критериям. Фильтрация задается свойствами Filter, Filtered и FilterOptions компонента Table.  Для отображения отфильтрованных записей по вами заданному критерию, добавим на Form1 надпись и текстовой поле, установив предварительно их свойства Visible  в состояние false. А пункту меню Фильтрация назначим функцию:




begin

  Label1.Visible:=true;

  Edit1.Visible:=true;

  if (Edit1.Text<>’’) then begin

     Table1.Filtered:=false;

     Table1.Filter:=’group=’+Edit1.Text;

     Table1.Filtered:=true;

end  else

   ShowMessage("
Укажите

номер

группы
!!!");


end
;







б) Основное свойство QuerySQL, имеющее тип Tstrings. Это список строк, содержащих запросы SQL. Создайте для этого новую форму (рис. 7) с модулем Unit2. Пропишите в unit ее заголовок (как мы это уже делали в л/р№2) и назначьте вызов для пункта меню SQL: Form2.Show;

Перенесите на форму компоненты Query1 (вместо Table1), DataSource1, DBGrid1 и соедините их обычной цепочкой: в DBGrid1 задайте свойство DataSource равным DataSource1, а в DataSource1 задайте свойство DataSet равным Query1. Компонент  Query
1
настройте на таблицу ozen. Для этого установите свойство DataBaseName на псевдоним qwerty, а в свойстве SQL напишите оператор: select
*
from

ozen
.

Подпись:
Рис. 7. Форма
SQL
-запросов к БД.

Чтобы вы могли самостоятельно формировать произвольные запросы, перенесите на форму обычное (не db) поле Memo и кнопку Выполнить, для которой можно задать функцию:

         
begin


  if (Query1.Active=true) then Query1.Close;

  Query1.SQL.Clear;

  Query1.SQL.AddStrings(Memo1.Lines);

  Query1.ExecSQL;

end;  

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


1. Диплом Политическая борьба исламизма и кемализма в Турецкой Республике
2. Реферат на тему Adoption Essay Research Paper Adoption is an
3. Реферат Остеосаркома диагноз, рентгенодиагностика и лечение
4. Реферат Національна економіка в світовому господарстві
5. Курсовая на тему Портфельная теория Марковица
6. Реферат на тему Подводные лодки типа Осетр
7. Реферат Основные и производные виды ценных бумаг
8. Реферат на тему How US Technology Effects Modern America Essay
9. Статья Политические идеологии разнообразие подходов и оценок
10. Контрольная работа Налоговые реформы основные направления и принципы