Компоненты для работы с базами данных: TTable и TQuery
Рефераты >> Программирование и компьютеры >> Компоненты для работы с базами данных: TTable и TQuery

· После того, как не выполнился вызов метода TDataSet.Prior.

Первые два пункта - очевидны. Когда открывается таблица, Delphi помещает курсор на первую запись; когда вызывается метод First, Delphi также перемещает курсор в начало таблицы. Третий пункт, однако, требует небольшого пояснения: после того, как вызывался метод Prior несколько раз, курсор мог добраться до начала таблицы, и следующий вызов Prior будет неудачным - после этого BOF и будет возвращать True.

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

while not Table.Bof do

Table1.Prior;

end;

Цикл будет продолжаться до тех пор, пока вызов Table1.Prior не сможет больше перемещать курсор на предыдущую запись в таблице. В этот момент BOF вернет True и программа выйдет из цикла.

Все сказанное относительно BOF также применимо и к EOF. Другими словами, код, приведенный ниже показывает простой способ пробежать по всем записям в a dataset:

Table1.First;

while not Table1.EOF do

Table1.Next;

end;

EOF возвращает True в следующих трех случаях:

· После того, как файл был открыт;;

· После того, как вызвался метод TDataSet.Last;

· После того, как не выполнился вызов метода TDataSet.Next

Единственная навигационная процедура, которая еще не упоминалась - MoveBy, которая позволяет переместиться на N записей вперед или назад в таблице. Если необходимо переместиться на две записи вперед, то следует написать следующий оператор:

MoveBy(2);

или

MoveBy(-2);

Prior и Next - это простые функции, которые вызывают MoveBy.

При использовании этой функции необходимо всегда помнить, что DataSet - это изменяющиеся объекты, и запись, которая была пятой по счету в предыдущий момент, теперь может быть четвертой или шестой или вообще может быть удалена .

Поля

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

property Fields[Index: Integer];

function FieldByName(const FieldName: string): TField;

property FieldCount;

Свойство FieldCount возвращает число полей в текущей структуре записи. Если необходимо программным путем прочитать имена полей, то используется свойство Fields для доступа к ним:

var

S: String;

begin

S := Fields[0].FieldName;

end;

Короче говоря, индекс передаваемый в Fields (начинающийся с нуля), и определяет номер поля к которому Вы получите доступ, т.е. первое поле - ноль, второе один, и так далее.

Если Вы хотите прочитать текущее содержание конкретного поля конкретной записи, то используется свойство Fields или метод FieldsByName. Для того, чтобы найти значение первого поля записи, прочитайте первый элемент массива Fields:

S := Fields[0].AsString;

Предположим, что первое поле в записи содержит номер заказчика, тогда код, показанный выше, возвратил бы строку типа “1021”, “1031” или “2058”. Если нужно получить доступ к этот переменный, как к числовой величине, тогда надо использовать AsInteger вместо AsString. Аналогично, свойство Fields включают AsBoolean, AsFloat и AsDate.

Можно использовать функцию FieldsByName вместо свойства Fields:

S := FieldsByName(‘CustNo’).AsString;

Как показано в примерах выше, и FieldsByName, и Fields возвращают те же самые данные. Два различных синтаксиса используются исключительно для того, чтобы обеспечить программистов гибким и удобным набором инструментов для программного доступа к содержимому DataSet.

Свойство Fields позволяет выбрать тип результата Вот список доступных методов который можно найти в описании класса TField:

property AsBoolean

property AsFloat

property AsInteger

property AsString

property AsDateTime

Всякий раз (когда это имеет смысл), Delphi сможет сделать преобразования. Например, Delphi может преобразовывать поле Boolean к Integer или Float, или поле Integer к String. Но не будет преобразовывать String к Integer, хотя и может преобразовывать Float к Integer.

Основные свойства, методы и события НД

Свойства

Свойство

Описание

property Active: Boolean;

Открывает/закрывает НД

property AutoCalcFields: Boolean;

Разрешает/запрещает возникновение события OnCalcFields

Type TBookmarksStr: String;

property BookMark: TBookMarkStr;

Определяет закладку на текущей записи. К помеченной записи можно быстро перейти методом GotoBookMark

property CanModify: Boolean;

Указывает, может ли пользователь изменять НД

property Database: TDatabase;

Определяет компонент TDatabase, связанный с данным НД

property DatabaseName: String;

Содержи псевдоним базы данных

property DataSource: TDataSource;

Используется в потомках для указания детального НД, в связи один ко многим

property EOF: Boolean;

Содержит True, если курсор НД сместился за последнюю запись

property FieldCount: Integer;

Содержит количество полей в НД

property Fields: TFields;

Позволяет обратиться к полям по их индексу. Первое поле НД имеет индекс 0

property FieldValues[const FieldName: String]: Variant;

Позволяет обратиться к значениям полей по имени поля

property Filter: String;

Задает фильтрующее выражение

property Filtered: Boolean;

Разрешает/запрещает фильтрацию записей НД

type TFilterOption = (foCaseInsensitive, foNoPartialCompare); TFilterOptions = set of TFilterOption;

Определяет условия фильтрации в текстовых полях: foCaseInsensitive –учитывать регистр букв; foNoPartialCompare – поиск на точное соответствие образцу

property Modifed: Boolean;

Содержит True, если текущая запись НД была изменена

property RecNo: LongInt;

Определяет номер текущей записи

property RecordCount: LongInt;

Содержит количество записей в текущем НД

type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc)

property State: TDataSetState;

Указывает состояние НД: dsInactive-закрыт , dsBrowse-просмотр, dsEdit-редактирование, dsInsert-вставка, dsSetKey-поиск записи, dsCalcFields-установка вычисляемых полей, dsFilter-фильтрация записей, dsNewValue-обновление, dsOldValue-обновление, dsCurValue-обновление, dsBlockRead-чтение блока записей, dsInternalCalc-обновление


Страница: