bannerbannerbanner
полная версияБазы данных на Delphi 7

Сергей Николаевич Талипов
Базы данных на Delphi 7

Полная версия

2. ПРИМЕР ИСПОЛЬЗОВАНИЯ МЕТОДОВ И СВОЙСТВ КОМПОНЕНТА «TTABLE»

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.Append;

Table1.FieldValues['Name'] := Edit1.text;

Table1. ['Year'] := StrToInt(Edit2.text);

Table1.Post;

end;

* * * *

Table1.Edit;

Table1.FieldByName(‘Name’).AsString := ‘Fred’;

Table1.Post;

* * * *

  Table1.Insert;

  Table1['Name'] := 'Russia';

  Table1['Sity'] := 'Moscow';

  Table1.Post;

* * * *

if MessageDlg('Сохраннить запись?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Table1.Post else Table1.Cancel;

* * * *

procedure TForm1.Button1Click(Sender: TObject);

var i: integer; k: real;

begin

  k:=0;

  with ProgressBar1 do begin

    Min := 0; Max := Table1.RecordCount;

    Table1.First;

    for i := Min to Max do begin

      Position := i; s:=s+ Table1[‘sum’];

      Table1.Next;

    end;

  end;

end;

* * * *

with Table1 do begin

  DisableControls;

  try

    First;

    while not EOF do Delete;

  finally

    EnableControls;

  end;

end;

ЛЕКЦИЯ № 4

1. СОЗДАНИЕ ПОЛЕЙ ВЫБОРА И ВЫЧИСЛЯЕМЫХ ПОЛЕЙ

Поля выбора «Lookup» используются для создания виртуальных полей, данные в которых пользователь не набирает вручную, а выбирает из выпадающего списка. После выбора значения из списка оно отображается на экране, а в файл БД записывается код выбранного значения из выпадающего списка в соответствующее поле БД. Выпадающий список формируется из каких либо двух полей другой таблицы. Одно поле другой таблицы хранит код записи, а другое соответствующий текст, который появляется в выпадающем списке. Lookup-поля используются для подключения к основной таблице вспомогательных таблиц-справочников БД. Рассмотрим применение полей выбора на примере.

Например, имеется следующие таблицы:

Таблица 1. Диски – CD (Table_CD)


Код дискаНазвание дискаКод фирмы
(Name_CD)(Kod_Firm)
0000001Итнернет – 200100001
0000002Суперсистемный диск 2k200002
0000003English Platinum (2)00003
0000004All stars disco 200004
0000005Золотая бухгалтерия 200100002

Таблица 2. Фирмы – поставщики (Table_Firm)


Код фирмы (Kod_Firm)Название фирмы (Name_Firm)
00001Красные Челны
00002Технопром
00003CD-маркер
00004Мегаполис

Данные таблицы имеют общее поле «Код фирмы». Необходимо сделать так, чтобы при просмотре первой таблицы вместо кодов фирм выходило соответствующее название фирмы. Для этого необходимо в первой таблице поле «код фирмы» сделать невидимым для визуальных компонент, и добавить к таблице «Lookup»-поле. Данное поле просмотра будет смотреть код фирмы в первой таблице у каждой записи, находить соответствующую запись с данным кодом во второй таблице, брать из второй таблицы соответствующее коду название фирмы и подставлять его в качестве своего значения. В результате первая таблица будет отображаться следующим образом:

Таблица 1. Диски – CD (Table_CD)


Код дискаНазвание дискаФирма (Loolup-поле)
(Name_CD)(nFirm)
0000001Итнернет – 2001Красные Челны
0000002Суперсистемный диск 2k2Технопром
0000003English Platinum (2)CD-маркер
0000004All stars disco 2Мегаполис
0000005Золотая бухгалтерия 2001Технопром

Если при просмотре таблицы 1 мы поменяем для первой записи значение фирмы «Красные челны» на «Технопром» (через выпадающий список), то в поле «Код фирмы» таблицы 1 запишется значение «00002», взятое из таблицы 2. Таким образом, поля просмотра позволяют хранить в базе данных только нужные коды, а их текстовые значения брать из другой базы данных и подставлять для просмотра и выбора.

Для создания поля выбора необходимо иметь два компонента «Table», один для основной базы, другой – как справочник с расшифровкой поля. Пусть таблица «Table_CD» будет соответствовать таблице 1, а второй компонент «Table_Firm» будет соответствовать таблице 2. Таблица «Table_CD» будет иметь поля «Kod», «Name_CD» и «Kod_firm», а таблица 2 «Table_Firm» будет иметь поля «Kod_firm» и «Name_firm».

Настроим у обоих компонент «Table» путь к БД и имена таблиц. Откроем базу данных «Table_CD», установив свойству «Active» значение «True». После этого щелкнем на компоненте «Table_CD» правой кнопкой мыши. В появившемся меню выберем опцию «Fields Editor». Откроется окно редактора полей. В редакторе полей нажмите правую кнопку мыши и выберите пункт «Add all fields». После этой команды в редакторе полей появится список из имеющихся полей в базе данным, например, поля «Kod», «Name_CD» и «Kod_firm». Эти три поля являются физическими полями, хранящимися в файле базы данных.

Если для компонента «Table» не указаны явно поля через редактор полей, то база данных будет также работоспособна, как и с указанием полей. Отличие заключается лишь в том, что нельзя создавать поля выбора и вычисляемые поля без явного указания всех имеющихся физических полей в редакторе полей.

Создадим дополнительное «Lookup» поле выбора «nFirm» у компонента «Table_CD». Для этого в редакторе полей нужно щелкнуть правой кнопкой мыши и выбрать пункт «New Field». Откроется окно создания нового поля. Зададим параметру «Name» имя создаваемого «lookup» поля, – «nFirm». Тип поля зададим в параметре «Type». Выберем денежный тип «String» с размером «Size» равным 20 символам. После этого укажем в разделе «Field type» значение «Lookup». Это означает, что создаваемое поле будет полем выбора. Далее зададим в параметре «KeyFields» значение «Kod_firm». Это поле таблицы «Table_CD», в котором хранится код фирмы. Далее зададим параметр «Dataset» равным «Table_Firm». Этим параметром указывается имя подчиненной таблицы с расшифровкой кодов фирм. В параметре «Lookup Keys» зададим значение «Kod_firm». Это значение является именем поля таблицы «Table_Firm» с кодами фирм. В параметре «Result Field» укажем имя «Name_firm». Это значение является именем поля таблицы «Table_firm» с названием фирмы. Нажмем теперь на кнопку «Ok». Поле просмотра создано.

После создания поля просмотра в таблице «Table_CD» поле «Kod_firm» можно сделать невидимым в компонентах просмотра БД, т.к. теперь это поле более наглядно отображает и позволяет изменять значение созданное поле просмотра с именем «nFirm».

В программе Lookup-поля просмотра можно использовать только для чтения. Присваивать значение или изменять их в программе нельзя.

Схема создания Lookup-поля:

Table1 -> Active -> Fields Editor -> Add All Fields -> New Field:

Name: nFirm, Field Type: Lookup, Type: String, Size: 20

Key Fields: ‘Kod_Firm’ (поле Table1),

DataSet: ‘Table_Firm’ (ссылка на Table2),

Lookup Keys: ‘Kod_Firm’ (поле Table2), Result Field: ‘Name_Firm’(поле Table2)

Рейтинг@Mail.ru