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

Begin

Begin

Begin

 

Table1.First;

end;

 

Процедуры для кнопок «Следующая запись», «Предыдущая запись», «Последняя запись» напишите самостоятельно.

 

Для перемещения указателя на произвольное число записей используется счетчик SpinEdit1, в поле которого вводится это число. Для кнопки «Перемещение на…записей» напишите процедуру:

 

procedureTForm1.Button5Click (Sender: TObject);

 

Table1.MoveBy (SpinEdit1.Value);

end;

Напишите обработчик события OnAfterScroll для компонента Table1. После выполнения события OnAfterScrollинформация о текущей записи обновляется сразу после перемещения текущего указателя.Это событие происходит и при открытии НД, когда указатель текущей записи устанавливается на первую запись.

 

procedureTForm1.Table1AfterScroll (DataSet: TDataSet);

 

label1.Caption:='Запись номер '+IntToStr(Table1.RecNo);

SpinEdit1.MinValue:= 1-Table1.RecNo;

SpinEdit1.MaxValue:= Table1.RecordCount-Table1.RecNo;

end;

 

 

Каждое поле НД представляет собой отдельный столбец, для работы с которым в Delphi служат:

 

объект Field: TField;

объекты :TIntegerField,: TFloatField, TStringField (производные от TField).

Объекты типа TField являются невизуальными и служат для доступа к данным соответствующих полей записей. Управляя объектами типа TField, можно управлять поведением полей, при этом все объекты полей являются независимыми друг от друга. Например, можно запретить модификацию значения отдельного поля, несмотря на то, что НД в целом является модифицируемым и допускает изменение значений других полей. Кроме того, можно скрыть то или иное поле от пользователя, сделав его невидимым.

 

Для доступа к объектам TField и, соответственно, к полям записей НД имеет соответствующие методы и свойства.

 

Свойство FieldCount: nteger указывает количество полей НД. Количество полей НД может отличаться от физического числа полей таблицы БД, поскольку в НД не обязательно включаются все поля таблицы.

 

Свойство Fields[Index:Integer]: TField – возвращает содержимое указанного в параметре Index поля НД.

К отдельному полю можно обратиться, указав его номер Index в массиве Fields. Номера полей изменяются от 0 до FieldCount-1.

 

Пример.

 

Edit1.Text:=Table1.Fields[5].AsString; – в компонент Edit1 появится та информация, которая находится в шестом поле НД.

 

Свойства объекта Field – AsString, AsInteger, AsFloat, AsBoolean позволяют обращаться к значению поля текущей записи как к строковому, целочисленному, вещественному или логическому значению.

 

Чтобы обращаться к какому-либо полю НД не по его номеру в массиве полей, а по его имени существуют методы FindField и FieldByName.

Функция FindField (const FieldName : String) : TField возвращает для НД поле, имя которого указано в параметре FieldName. Имя поля, определяемое параметром FieldName, является именем физического поля таблицы БД, заданным при создании таблицы. Если заданное параметром FieldName поле не найдено, то функция FindField возвращает значение Nil. На практике часто используется метод FieldByName, который отличается от метода FindField тем, что если заданное поле не найдено, то генерируется исключительная ситуация.

 

Свойство Fields и методы FindField и FieldByName наиболее часто используются для доступа к значению поля текущей записи совместно с такими свойствами объекта Field, как AsString, AsInteger, AsFloat или AsBoolean, которые соответственно позволяют обращаться к значению поля как строковому, целочисленному, вещественному или логическому значению.

 

Практическое задание №3

 

Выведем на экран общую сумму количества товара (поле Kolvo), общую стоимость каждой единицы товара (поле Cena) и общую стоимость товара (для текущей записи) для таблицы Tovar.db.

 

Расположите на форме следующие компоненты:

 

 

Для кнопок напишите соответствующие процедуры:

 

procedureTForm1.BitBtn1Click(Sender: TObject);

vars:integer;

i:longint;