Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции. РАзработка БД в среде Delphi.doc
Скачиваний:
24
Добавлен:
12.06.2015
Размер:
315.39 Кб
Скачать

5.2.4. Основные методы класса tTable

Рассмотрим основные методы класса TTable, необходимые для реализации простейших приложений, и способы их использования.

1) Доступ к таблице бд

Связь между компонентом и реальной таблицей БД обеспечивается методом Open. Доступ к записям таблицы БД через связанный с таблицей компонент возможен только после выполнения этого метода.

Open – открывает доступ к таблице БД через компонент (свойство Active таблицы получает значение True). Обращение имеет вид: Table1.Open.

Close – закрывает доступ к таблице БД через компонент (свойство Active таблицы получает значение False).

2) Перемещение по записям таблицы

Для перехода по записям таблицы БД, связанной с компонентом, используются следующие методы:

First – текущей становится первая запись таблицы;

Last – текущей становится последняя запись таблицы;

Next – текущей становится следующая запись таблицы;

Prior – текущей становится предыдущая запись таблицы.

Для последовательного перехода по записям таблицы можно использовать следующий цикл:

Table1.First;

while not Table1.Eof do // Пока не дошли до конца таблицы

begin

<доступ к текущей записи таблицы>;

// Переход к очередной записи таблицы

Table1.Next

end;

Последовательность переходов осуществляется в соответствии с первичным или установленным вторичным индексом (см. Лекция 6).

3) Режим редактирования таблицы

Для внесения изменений в таблицу БД, связанную с компонентом, используется метод Edit: Table1.Edit. После этого становится возможным изменение значений полей текущей записи таблицы БД. Такой режим называется режимом редактирования. Для выхода из режима редактирования используются методы Post (выход из режима редактирования с внесением произведенных изменений в текущую запись таблицы) или Cancel (выход из режима редактирования без внесения произведенных изменений). Для перехода к другой записи таблицы необходимо выйти из режима редактирования!

4) Доступ к значениям полей по имени

С помощью метода FieldByName компонента Table возможен доступ к полю физической таблицы по имени. Этот способ часто бывает удобнее, чем через свойство Fields, т.к. позволяет не задумываться о последовательности полей в таблице.

Заголовок метода имеет вид:

function FieldByName(const FieldName: string): TField;

В параметре FieldName задается имя поля таблицы БД, к которому происходит доступ.

Метод возвращает значение класса TField.

Пусть таблица БД, представляемая компонентом Table1, содержит поля: F_Date (D) и F_Text (A), а переменные PDate и PText содержат введенные пользователем новые значения полей.

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

Table1.Edit;

//Изменение значений полей

Table1.FieldByName('F_Date').AsDateTime:=PDate;

Table1.FieldByName('F_Text').AsString:=PText;

if MessageDlg('Внести изменения?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then

//пользователь подтверждает внесение изменений в таблицу БД

begin

Table1.Post;

ShowMessage('Изменения внесены!')

end

else

//пользователь отменяет внесение изменений в таблицу БД

begin

Table1.Cancel;

ShowMessage('Изменения отменены!')

end;

После выполнения метода Post изменения будут внесены в текущую запись таблицы БД и «откат» (возврат предыдущих значений) будет невозможен. После выполнения метода Cancel поля текущей записи таблицы БД получат прежние значения.

Для последовательного просмотра значений указанных полей таблицы можно использовать следующий фрагмент программного кода:

Table1.First;

while not Table1.Eof do

// Пока не дошли до конца таблицы

begin

//Доступ к значениям полей текущей записи таблицы

ShowMessage('Дата: '+Table1.FieldByName('F_Date').AsString+' 'Текст: '+ Table1.FieldByName('F_Text').Value);

// Переход к очередной записи таблицы

Table1.Next

end;

Существует еще один способ программного доступа к значениям полей текущей записи: по физической таблице БД сформировать массив полей и связать его с компонентом Table1. Для этого необходимо щелкнуть дважды по компоненту Table1, нажать правую кнопку мыши и в меню выбрать пункт меню Add all fields.

После этого сформируется связанный с компонентом массив полей исходной таблицы БД. Имена полей формируются по умолчанию в виде: <Имя таблицы><Имя поля>, типы полей соответствуют типам полей таблицы БД. Например, вывод значений из предыдущего примера в этом случае можно было бы записать так:

ShowMessage('Дата: '+Table1F_Date.AsString+' 'Текст: '+ Table1F_Text.Value);

В некоторых ситуациях такой способ доступа удобен, а в других просто необходим (их мы рассмотрим далее).