Лабораторные работы по базам данных в Delphi

Автор работы: Пользователь скрыл имя, 13 Декабря 2010 в 21:19, лабораторная работа

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

Цель работы:

1.Ознакомить с утилитой Database Desktop.
2.Усвоить процесс создания и редактирования таблиц с помощью Database Desktop.
Database Desktop - это утилита, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты называется DBD32.EXE. Для запуска Database Desktop просто дважды щелкните по ее иконке.

Файлы: 1 файл

Лабораторные работы по базам данных.doc

— 1.41 Мб (Скачать файл)

Лабораторная  работа № 3

Цели  работы:

  1. Ознакомиться с сортировкой записей в базе данных.
  2. Поиск полей с помощью методов Locate и Lookup;

Сортировка:

    Порядок расположения записей в таблице  БД может быть неопределенным. По умолчанию  записи не отсортированы или сортируются, например, для таблиц Paradox по ключевым полям, а для таблиц dBase в порядке их поступления в файл таблицы.

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

    Сортировка  набора данных TTable выполняется автоматически по текущему индексу. При смене индекса происходит переупорядочивание записей. Таким образом, возможна по полям, для которых создан индекс. Для сортировки по нескольким полям нужно создать индекс, включающий эти поля.

    Задать  индекс, по которому выполняется сортировка записей, можно с помощью свойств:

    • IndexName – указывается имя индекса, установленное при его создании;
    • IndexFieldName – указываются имена полей, образующий соответствующий индекс.
  1. Откроем приложение.
  1. Добавим на форму компоненты ComboBox и Button.

  1. В свойстве Items компоненты ComboBox запишем параметры сортировки: Фамилия, Специальность, Курс, Дата рождения, Номер зачетки.
    1. Условия сортировки задаются вторичными индексами. То есть сортировка по фамилии происходит по вторичному ключу IDFio так как в него первым входит поле SFio. Для того, чтобы сортировка проходила по выбранным параметрам необходимо вхождение соответствующих полей  в разные вторичные ключи.
  2. Текст процедуры для события OnClick при нажатии кнопки «Сортировка» на форме Студенты:

    begin

       Case ComboBox1.ItemIndex of

          0: Table1.IndexFieldNames:='SFio'; //при выборе строки «Фамилия»

                      //сортировка  идет по вторичному индексу IDFio

          1: Table1.IndexFieldNames:='SSpec';

          2: Table1.IndexFieldNames:='SKurs';

          3: Table1.IndexFieldNames:='SData';

          4: Table1.IndexFieldNames:='SNom';

       end;

    end;

      Замечание: во вторичный индекс IDFio входят поля: SFio, SKurs, SSpec. То есть при совпадении фамилии сортировка идет уже по курсу и т.д.

      Пример:

Поиск:

      Метод Locate ищет первую запись, удовлетворяющую критерию поиска, и если такая запись найдена, делает ее текущей. В этом случае в качестве результата возвращается значение True. Если запись не найдена, возвращается значение False и курсор не меняет своего положения.

      function Locate (const KeyFields: String; const KeyValues: Variant;

                 Options: TLocateOptions): Boolean;

     Список  полей, по которым ведется поиск, задается в параметре KeyFields, поля разделяются точкой с запятой. Параметр KeyValues типа Variant указывает значение полей для поиска. Если поиск ведется по одному полю, то параметр содержит одно значение, соответствующие типу поля, заданного для поиска.

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

    • LoCaseInsensitive –регистр букв не учитывается;
    • LoPartialKey – допускается частичное совпадение.
  1. На форму добавить компоненту  Edit.

  1. Текст процедуры  для события OnChange компоненты Edit на форме Студенты:

    begin

        table1.Locate('SFio',Edit1.Text,[loPartialKey]);

    end;

  1. Поиск записи по фамилии организован. Регистр букв не учитывается.

      Метод Lookup находит запись, удовлетворяющую условию поиска, но не делает ее текущей, а возвращает значения некоторых ее полей. Независимо от результата поиска записи указатель текущей записи в НД не изменяется. В отличие от метода Locate, метод Lookup осуществляет поиск только на точное соответствие критерию поиска значения поля поиска записи.

      function Lookup (const KeyFields: String; const KeyValues: Variant;

                 const ResultFields: String): Variant;

      В параметре ResultFields перечисляются поля, значения которых требуется получить в случае успешного поиска. Тип результата – Variant или вариантный массив.

    1. Добавить на главную форму новую кнопку «Поиск».
    2. Открыть новую форму и ввести компоненты как показано на рисунке. Эта форма вызывается нажатием кнопки поиска на главной форме.

    1. Поиск будет  происходить по фамилии введенной  в компоненте Edit1 после нажатия кнопки на форме «Поиск методом Lookup».

         procedure TForm5.Button1Click(Sender: TObject);

         var  LookupResult: Variant;

         begin

      LookupResult:=Form1.Table1.Lookup('SFio', Edit1.Text, 'SData; SOsn; SNom; SSpec; SKurs');  //ищем поля  'Дата рождения'

      //’Основание’, ’Номер зачетки’, ’Специальность’, ’Курс’

     if VarIsArray (LookupResult) then

      begin

       Edit2.Text:=LookupResult[0]; //записывает значения

       Edit3.Text:=LookupResult[1]; // в искомых полях в

        Edit4.Text:=LookupResult[2]; //соответствующие

       Edit5.Text:=LookupResult[3]; //компоненты

       if Edit5.Text='False' then

           Edit5.Text:='Физика'   //поиск полей логического типа

            else Edit5.Text:='Математика';

       Edit6.Text:=LookupResult[4];

      end;

         end;

    Лабораторная  работа № 4

Цели:

  1. Ознакомиться с фильтрацией записей.

      Фильтрацию  можно отнести к одному из методов  поиска. Потому что фильтрация – выбор из набора данных только тех записей, которые удовлетворяют конкретным условиям. Например, можно указать отображение только записей, в которых поле «Фамилия» содержит значение «Иванов». Применение фильтра к набору данных определяется свойством Filtered логического типа. Значение True определяет применение в качестве фильтра выражения, указанного в свойстве Filter:

Поле [Оператор сравнения] ‘Значение’

      Например, если отобразить все записи, в которых  поле «Фамилия» равно значению «Сидоров», то нужно указать:

Table1.Filter:=’Фамилия=’’Сидоров’’’;

Фильтрация  записей:

    1. Открыть приложение.
    2. Добавить на форму компоненту TEdit.
    3. Текст процедуры для события OnChange:

      begin

         Table1.Filtered:=true;  //включение фильтрации

         Table1.Filter:='SNom = ‘+Edit2.Text;

           //задает критерий фильтрации

      end;

    1. Этот способ фильтрации пригоден только для числовых полей.
    2. При применении фильтра можно указать свойства:
      1. foCaseInsensitive – нечувствительность к регистру букв;
      2. foNoPartialCompare – поиск на точное соответствие.
    3. Для фильтрации текстовых полей, например по полю «Фамилия» необходимо изменить текст процедуры.

      procedure TForm1.Edit2Change(Sender: TObject);

      begin

         Table1.Filtered:=true;

         Table1.Filter:='SFio='+#39+Edit2.Text+'*'+#39;

      end;

    1. В этом случае фильтрация проходит по текстовому полю. Знак «#39» означает знак апострофа, так как ввод фамилии при использовании фильтра происходит в апострофах. А символ «*» означает любые символы, то есть при вводе только одной буквы на экране появятся все фамилии начинающиеся на  букву.

     

    Лабораторная  работа № 5

Цели:

  1. Усвоить возможность связи таблицам.

Установка связи между таблицами:

      Для демонстрации связи между таблицами  необходимо создать  еще одну таблицу. Создайте таблицу успеваемости студентов. В нее войдут поля: учебный год, сессия (зима или лето), предмет, ФИО  преподавателя, дата аттестации по предмету, дата сдачи, оценка.

    1. Эта таблица будет дочерней для таблицы Студенты. В таблице Успеваемость надо ввести дополнительно числовое поле и определить его вторичным ключом.
    2. Разместите таблицу успеваемости на форме Студенты.
    3. В свойстве компоненты Table2 Master Source написать Data Source1. Это означает, что вторая таблица станет дочерней для первой.
    4. Двойным щелчком по свойству Master Fields вызовем окно Field Link Designer (Дизайнер поля связи):

    1. Выбрать в списке Available Index (Доступные индексы) из окна Field Link Designer индекс IDGod (это вторичный индекс второй таблицы).
    2. В левом списке Detail Field выделить IdU, а в правом списке Master Field (Основа) выделить Ind.
    3. Нажать на кнопку Add (Добавить) и закрыть окно.

    1. Таким образом  между таблицами установилась связь. Она называется связь один ко многим.
    2. К дочерней таблице добавить кнопки для ввода и редактирования данных также как и для таблицы Студенты.

Лабораторная  работа № 6

Цели  работы:

  1. Ознакомиться с возможностью создания отчета.

Создание  отчетов:

  Отчет — это печатный документ, содержащий записи БД. В Delphi для создания отчетов служит генератор отчетов QuickReport, содержащий обширный набор компонентов. Компоненты, предназначенные для создания отчетов, находятся на закладке QReport палитры компонентов.

   Главным элементом отчета является компонент-отчет  QuickRep, представляющий собой   основу,    на   которой   размещаются   другие   компоненты.   Компонент QuickRep обычно размещается на отдельной форме, предназначенной для создания отчета.

Свойства  компоненты QuickRep:

    • Bands – здесь указываются компоненты размещаемые в QuickRep.
    • DataSet – здесь указывается набор данных из которой отчет будет брать данные.
    • Frame – здесь указывается параметры рамки.
    • Options – здесь доступны три параметра. Если FirstPageHeader равно true, то заголовок печатается только на первой странице отчета. Если LastPageFooter равен true, то нижний колонтитул печатается только на последней странице отчета. Если установить свойство Compression в true, то отчет будет сохраняться в сжатом виде.
    • ReportTitle – здесь находится заголовок печатаемого документа.
    • SnapToGrid – нужно ли выравнивать компоненты по установленной сетке.
    • Zoom – масштаб отображения данных.

Информация о работе Лабораторные работы по базам данных в Delphi