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;
Поля выбора «Lookup» используются для создания виртуальных полей, данные в которых пользователь не набирает вручную, а выбирает из выпадающего списка. После выбора значения из списка оно отображается на экране, а в файл БД записывается код выбранного значения из выпадающего списка в соответствующее поле БД. Выпадающий список формируется из каких либо двух полей другой таблицы. Одно поле другой таблицы хранит код записи, а другое соответствующий текст, который появляется в выпадающем списке. Lookup-поля используются для подключения к основной таблице вспомогательных таблиц-справочников БД. Рассмотрим применение полей выбора на примере.
Например, имеется следующие таблицы:
Таблица 1. Диски – CD (Table_CD)
Код диска | Название диска | Код фирмы |
(Name_CD) | (Kod_Firm) | |
0000001 | Итнернет – 2001 | 00001 |
0000002 | Суперсистемный диск 2k2 | 00002 |
0000003 | English Platinum (2) | 00003 |
0000004 | All stars disco 2 | 00004 |
0000005 | Золотая бухгалтерия 2001 | 00002 |
Таблица 2. Фирмы – поставщики (Table_Firm)
Код фирмы (Kod_Firm) | Название фирмы (Name_Firm) |
00001 | Красные Челны |
00002 | Технопром |
00003 | CD-маркер |
00004 | Мегаполис |
Данные таблицы имеют общее поле «Код фирмы». Необходимо сделать так, чтобы при просмотре первой таблицы вместо кодов фирм выходило соответствующее название фирмы. Для этого необходимо в первой таблице поле «код фирмы» сделать невидимым для визуальных компонент, и добавить к таблице «Lookup»-поле. Данное поле просмотра будет смотреть код фирмы в первой таблице у каждой записи, находить соответствующую запись с данным кодом во второй таблице, брать из второй таблицы соответствующее коду название фирмы и подставлять его в качестве своего значения. В результате первая таблица будет отображаться следующим образом:
Таблица 1. Диски – CD (Table_CD)
Код диска | Название диска | Фирма (Loolup-поле) |
(Name_CD) | (nFirm) | |
0000001 | Итнернет – 2001 | Красные Челны |
0000002 | Суперсистемный диск 2k2 | Технопром |
0000003 | English Platinum (2) | CD-маркер |
0000004 | All 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)