База данных

Автор работы: Пользователь скрыл имя, 24 Мая 2010 в 18:26, Не определен

Описание работы

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

Файлы: 1 файл

бд.doc

— 478.50 Кб (Скачать файл)
 
 
 
 
 
 
 

Рис. 3. Внешний вид  формы печати

  

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

    Например, если имя компоненты TQuickRep - QuickRep1, то оператор

    Form2.QuickRep1.Print; 

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

    Form2:=TForm2.Create(Self);

    Form2.QuickRep1.Preview;

    Form2.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;

    Form2.Free;

 

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

 
 
 
 

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

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

 

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

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

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

 

    Данные  структур сохраним в папке 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) – для определения невозможности изменения данных в таблицах, для которых установлена ссылочная целостность. После определения параметров связи задаем имя связи.

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

    

    Теперь зададим вторичные индексы. Данная операция используется для ускорения поиска в таблицах необходимой информации по значениям в конкретных полях. Индексирование в 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).

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

Информация о работе База данных