Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Языки 11-12 лекция.doc
Скачиваний:
1
Добавлен:
23.11.2019
Размер:
229.89 Кб
Скачать

Компонент Table

Программная реализация связи с набором данных:

Table1.Active := false;

Table1. DatabaseName := ' Proba';

Table1. TableName := ' r.db ';

Table1.Active := true;

…………………….

Перебор всех записей набора данных:

Table1.First; //устанавливает указатель на первую запись

for i:=1 to Table1.RecordCount do

begin

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

Table1.Next; //переводит указатель на

end; следующую запись

Удалить запись:

If Table1.RecordCount >0 then Table1.Delete;

Удалить набор данных:

While Table1.RecordCount >0 do Table1.DeleteTable;

Особенности набора данных компонента Table

По умолчанию все поля в наборе данных являются динамическими и доступными.

Для каждого физического поля при открытии набора данных автоматически создается объект типа TField.

Для создания статических (устойчивых) полей используется специальный Редактор полей

При этом могут быть созданы не все физические поля таблицы.

В случае, если хотя бы одно поле набора данных является статическим, динамические поля больше создаваться не будут.

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

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

Компонент расположен на вкладке Data Access.

Предназначен для передачи данных от компонентов набора данных к компонентам отображения данных.

Связь осуществляется через свойство DataSet, в котором выбирается источник набора данных (компонент TTable).

TDBText, TDBEdit, TDBMemo, TDBGrid, TDBCheckBox и др. (вкладка Data Controls)

Для обеспечения взаимодействия между набором данных и элементами отображения данных, последние подключаются к компоненту TDataSource через свойство DataSource.

К конкретным полям таблицы подсоединяются через свойство DataField.

Просмотр данных в режиме формы

В этом режиме возможен просмотр только одной записи.

Для отображения набора данных используют компоненты отображения данных: TDBText, TDBEdit, TDBMemo, TDBCheckBox, TDBNavigator и др.

TDBNavigator - для перемещения по записям БД.

TDBTextтолько для просмотра содержимого поля БД.

Компоненты отображения данных можно поместить на форму из Палитры компонентов с последующей установкой свойств либо «буксировкой» из Редактора полей (см. Пособие).

Просмотр данных в режиме таблицы

Этот режим обеспечивает компонент DBGrid (вкладка Data Control).

Отображаемые поля настраиваются в Редакторе колонок

Для введенной колонки необходимо в свойстве FieldName выбрать из списка имя поля таблицы, а в свойстве Title.Caption ввести русское имя колонки.

Компонент TDBGrid позволяет создавать для каждого поля, отображаемого в таблице, список возможных значений данного поля.

Список задается с помощью свойства PickList класса TColumn: TStrings.

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

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

Необходим вызов метода Post в обработчике события BeforeClose, возникающего перед закрытием набора данных:

procedure TForm1.Table1BeforeClose (DataSet: TDataSet);

begin

if (Table1.State = dsEdit) or (Table1.State = dsInsert) then Table1.Post;

end;

Вычисляемые поля

Вычисляемые поля не вводят в отношение, их формируют во время проектирования и активизируют при работе приложения.

Для этого в компонентах Table, Query есть событие OnCalcFields:

procedure TForm1.Table1CalcFields (DataSet: TDataSet);

begin

DataSet['Doplata']:=DataSet['Stip']*0.5;

end;

TDate – число, целая часть которого содержит число дней, отсчитанное от 0 часов 30.12.1899 г., а дробная часть равна части 24-часового дня, т.е. характеризует время, а не дату.

Так что целая часть разности двух значений типа TDateTime, дает число дней, разделяющих две даты.

Режимы наборов данных

Текущий режим набора данных определяется свойством State : TDataSetState, которое доступно для чтения во время выполнения приложения.

Для перевода набора данных в требуемый режим используются специальные методы (Edit, Post, Insert, Append).

Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator или сеткой DBGrid).

Текущий режим набора данных определяется свойством State : TDataSetState, которое доступно для чтения во время выполнения приложения.

Для перевода набора данных в требуемый режим используются специальные методы (Edit, Post, Insert, Append).

Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator или сеткой DBGrid).

Текущий режим набора данных определяется свойством State : TDataSetState, которое доступно для чтения во время выполнения приложения.

Для перевода набора данных в требуемый режим используются специальные методы (Edit, Post, Insert, Append).

Они могут вызываться явно (указанием имени метода) или косвенно (путем управления соответствующими визуальными компонентами, например, навигатором DBNavigator или сеткой DBGrid).

  1. dsInactive — неактивность; набор данных закрыт (Active = False) .

  2. dsBrowse — осуществляется навигация по записям набора данных и просмотр данных. В этот режим переходят из режимов:

  • dsInactive — при установке свойству Active значения True;

  • dsEdit — при вызове метода Post или Cancel;

  • dsInsert — при вызове метода Post или Cancel.

3. dsEdit — редактирование текущей записи(из режима dsBrowse при вызове метода Edit)

4. dsInsert — вставка новой записи. В этот режим набор данных переходит из режима dsBrowse при вызове методов Insert, InsertRecord, Append или AppendRecord ,

5. dsSetKey — поиск записи, удовлетворяющей заданному критерию.

Доступ к полям

Каждое поле набора данных представляет собой отдельный столбец, объект Field : TField. Свойства:

  • FieldCount : Integer - количество полей набора данных (количество полей набора данных может отличаться от физического числа полей).

  • Fields [index: Integer] - поле (столбец) набора данных. К отдельному полю можно обратиться, указав его номер Index в массиве Fields;

номера полей находятся в пределах от нуля до FieldCount-1.

Пример:

procedure TForml .ButtonlClick (Sender: TObject) ;