Смекни!
smekni.com

Лабораторные работы по базам данных в Delphi (стр. 4 из 4)

3. Поиск будет происходить по фамилии введенной в компоненте 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

Цели:

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

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

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

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

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

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

1. Открыть приложение.

2. Добавить на форму компоненту TEdit.

3. Текст процедуры для события OnChange:

begin

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

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

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

end;

4. Этот способ фильтрации пригоден только для числовых полей.

5. При применении фильтра можно указать свойства:

a. foCaseInsensitive – нечувствительность к регистру букв;

b. foNoPartialCompare – поиск на точное соответствие.

6. Для фильтрации текстовых полей, например по полю «Фамилия» необходимо изменить текст процедуры.

procedure TForm1.Edit2Change(Sender: TObject);

begin

Table1.Filtered:=true;

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

end;

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

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

Цели:

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

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

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

1. Эта таблица будет дочерней для таблицы Студенты. В таблице Успеваемость надо ввести дополнительно числовое поле и определить его вторичным ключом.

2. Разместите таблицу успеваемости на форме Студенты.

3. В свойстве компоненты Table2 MasterSourceнаписать DataSource1. Это означает, что вторая таблица станет дочерней для первой.

4. Двойным щелчком по свойству MasterFields вызовем окно FieldLinkDesigner (Дизайнер поля связи):

4. ВыбратьвспискеAvailable Index (Доступныеиндексы)изокнаField Link DesignerиндексIDGod(этовторичныйиндексвторойтаблицы).

5. В левом списке DetailFieldвыделить IdU, а в правом списке MasterField(Основа) выделить Ind.

6. Нажать на кнопку Add (Добавить) и закрыть окно.

7. Таким образом между таблицами установилась связь. Она называется связь один ко многим.

8. К дочерней таблице добавить кнопки для ввода и редактирования данных также как и для таблицы Студенты.

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

Цели работы:

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

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

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

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

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

· Bands– здесь указываются компоненты размещаемые в QuickRep.

· DataSet– здесь указывается набор данных из которой отчет будет брать данные.

· Frame– здесь указывается параметры рамки.

· Options– здесь доступны три параметра. Если FirstPageHeaderравно true, то заголовок печатается только на первой странице отчета. Если LastPageFooterравен true, то нижний колонтитул печатается только на последней странице отчета. Если установить свойство Compressionв true, то отчет будет сохраняться в сжатом виде.

· ReportTitle– здесь находится заголовок печатаемого документа.

· SnapToGrid– нужно ли выравнивать компоненты по установленной сетке.

· Zoom– масштаб отображения данных.

Настройку параметров отчета можно выполнить с помощью окна ReportSettings, вызываемый двойным щелчком мыши по компоненте QuckRep. Предпочтительно пользоваться именно этим окном, так как здесь всегда можно просмотреть будущий результат.

  1. Открыть приложение «Студенты».
  2. Добавить на главную форму кнопку «Созданиеотчета».
  3. Создать новую форму «Отчет», которая будет вызываться нажатием на кнопку «Создание отчета».
  4. На форму установить компоненту QuickRep с закладки QReport. Выделить этот компонент и в объектном инспекторе включить параметры HasTitleи HasDetailсвойства Bands.

  1. Расположим компоненты в секциях QuickRep1, которые будут отображать нужную информацию отчета. На закладке QReportпалитры компонентов доступны следующие компоненты, которые можно расположить в этих разделах:
  • QRLabel– надпись. Этот компонент похож на стандартный компонент TLabelи просто отображает нужные данные.
  • QRDBText– данные. Этот компонент тоже похож на TLabel, только он предназначен для отображения значения какого либо поля из базы данных.
  • QRSysData– системная информация. Это опять копия TLabelтолько с возможностью отображать системную информацию – дату, время, номер страницы, номер строки в таблицы, общее количество страниц и т.д.
  • QRImage– картинка. Компонент схожий с TImage.
  • Увеличить область заголовка Title. В верхний угол поместите один компонент QRSysData. Выделить его и в свойстве Data выбрать значение qrsDateTime. Теперь этот компонент будет отображать в правом, верхнем углу дату распечатки документа.
  • В центре области Tittle установить компонент QRLabel, увеличь шрифт в свойстве Fontи написать в свойстве Captionтекст «Студенты».
  • Расположить в области Tittle компоненты QRLabelи дать им заголовки: ФИО, Дата рождения, Номер зачетки, Специальность, Курс.
  • Перейти к области Detail. Под заголовками поставить пять компонентов QRDBText. Установить в свойстве DataSet компонентов QRDBText набор данных - Form1.Table1, а в свойстве DataField для QRDBText1указать SFio. У всех остальных компонентов QRDBText указать соответствующие имена полей.
    1. Перейти в главный модуль и по нажатию кнопки “Печать” написать следующий код.

    procedure TForm1.SpeedButton5Click(Sender: TObject);

    begin

    Form4.QuickRep1.Preview; //вызываетсяметодPreview

    //компонента QuickRep. Этот метод показывает окно

    //предварительного просмотра созданного документа.

    еnd;

      Запустить программу, выделить какую-нибудь строку и нажать кнопку печати. Откроется окно предварительного просмотра.

    1. Выделить компонент QuickRep1и в свойстве DataSetуказать таблицу Form1.Table1.
    2. Если сделать это, то компонент QuickRep1автоматически будет перебирать все записи из этой таблицы и использовать их в компонентах, которые стоят в блоке DetailBand1.
    3. После этого в отчете появятся все записи таблицы:

    1. Установить на форму отчета компонент – QRSubDetailс закладки QReport. Этот компонент предназначен для перебора данных относящихся к подчиненным таблицам.
    2. Установить следующие свойства: DataSetForm1.Table2, чтобы связать блок с таблицей Uspevaemost.db, которая является подчиненной к основной Studenti.db.
    3. В свойстве Master нужно указать главный компонент с основными данными. Выбрать в этом свойстве QuickRep1.
    4. Расположить на компоненте QRSubDetail компоненты QRDBTextв свойстве указав, к каким полям подчиненной таблицы они обращаются.
    5. Получится следующий вид отчета: