Смекни!
smekni.com

Компоненты для работы с БД: TTable и TQuery (стр. 2 из 4)

Предположим, что первое поле в записи содержит номер заказчика, тогда код, показанный выше, возвратил бы строку типа “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-обновление

Методы:

procedure Append; Добавляет пустую запись в конец НД
procedure AppendRecord(const Values: Array of const); Добавляет новую запись, заполняет ее поля значениями Values и отсылает ее в БД
procedure ApplyUpdates; Записывает кэш обновления в таблицы БД
procedure Cancel; Отменяет все изменения текущей записи, которые не были сохранены в БД
procedure CancelUpdates; Очищает кэш обновления
procedure CheckBrowseMode; Если НД находился в состоянии редактирования или вставки, вызывает метод Post для записи изменений в БД
procedure ClearFields; Очищает все поля текущей записи
procedure Close; Закрывает НД
procedure CloseDatabase(Database:TDatabase); Закрывает базу данных Database
procedure CommitUpdates; Очищает кэш после успешного обновления данных в БД
function ControlsDisabled: Boolean; Возвращает True, если показ данных в визуальных компонентах временно запрещен методом DisableControls
procedure Delete; Удаляет текущую запись
function DisableControls; В целях улучшения производительности при навигации по НД временно запрещает смену данных в визуальных компонентах
procedure Edit; Редактирует текущую запись
procedure EnableCointrols; Отменяет действие метода DisableControls
function FieldByName(const FieldName: String):TField; Обеспечивает доступ к полю по его имени FieldName
function FindField(const FieldName: String):TField; Ищет поле FieldName в НД и возвращает ссылку на поле или NIL, если поле не найдено
function FindFirst: Boolean; Пытается установить курсор на первую запись НД и возвращает True в случае успеха
function FindLast: Boolean; Пытается установить курсор на последнюю запись НД и возвращает True в случае успеха
function FindNext: Boolean; Пытается установить курсор на следующую запись НД и возвращает True в случае успеха
function FindPrior: Boolean; Пытается установить курсор на предыдущую запись НД и возвращает True в случае успеха
function First: Boolean; Устанавливает курсор на первую запись в НД
procedure FreeBookMark(BookMark: TBookMark); virtual; Освобождает память связанную с закладкой BookMark
function GetBookMark: TBookMark; virtual; Создает закладку на текущей записи и возвращает указатель на нее
procedure GotoBookMark(BookMark: TBookMark); Обеспечивает возврат к записи, связанной с закладкой BookMark
procedure Insert; Переводит НД в режим вставки записей
procedure InsertRecord(const Values: array of const); Создает пустую запись, наполняет ее поля значениями Values и вставляет ее в НД
function isEmpty: Boolean; Возвращает True, если в НД нет записей
procedure Last; Устанавливает курсор на последнюю запись
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; Ищет в полях перечисленных в параметре KeyFields, значения, указанные в KeyValues при условиях, заданных параметром Options. Если запись найдена, делает ее текущей и возвращает True
function LookUp(const KeyFields: String; const KeyValues: Variant; const ResultFields: String): Variant; Используется в детальных НД для поиска в полях KeyFields значений KeyValues. При успехе возвращает значение полей ResultFields
function MoveBy(Distance: Integer):Integer; Перемещает курсор на Distance записей вверх или вниз относительно текущей записи
procedure Next; Перемещает курсор к следующей записи
procedure Open; Открывает НД
procedure Post; virtual; Сохраняет вставленную или отредактированную запись в таблице БД
procedure Prior; Перемещает курсор к предыдущей записи
procedure Refresh; Обновляет НД данными из БД
procedure SetFields (const Values: array of const); Устанавливает значения Values во все поля текущей записи

События:

type TDataSetNotifyEvent = procedure (DataSet: TDataSet) of object

property AfterCancel: TDataSetNotifyEvent;

Возникает сразу после отмены изменений в текущей записи

property AfterClose: TDataSetNotifyEvent;

Возникает сразу после закрытия НД

property AfterDelete: TDataSetNotifyEvent;

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

property AfterEdit: TDataSetNotifyEvent;

Возникает сразу после перехода НД в режим редактирования

property AfterInsert: TDataSetNotifyEvent;

Возникает сразу после вставки записи

property AfterOpen: TDataSetNotifyEvent;

Возникает сразу после открытия НД

property AfterPost: TDataSetNotifyEvent;

Возникает сразу после выполнения метода Post

property AfterScroll: TDataSetNotifyEvent;

Возникает сразу после перехода к другой записи

property BeforeCancel: TDataSetNotifyEvent;


property BeforeClose: TDataSetNotifyEvent;

Возникает непосредственно перед отменой изменений в текущей записи Возникает непосредственно перед закрытием НД

property BeforeDelete: TDataSetNotifyEvent;

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

property BeforeEdit: TDataSetNotifyEvent;

Возникает непосредственно перед переходом НД в режим редактирования

property BeforeInsert: TDataSetNotifyEvent;

Возникает непосредственно перед в режим вставки

property BeforeOpen: TDataSetNotifyEvent;

Возникает непосредственно перед открытием НД

property BeforePost: TDataSetNotifyEvent;

Возникает непосредственно перед выполнением метода Post

property BeforeScroll: TDataSetNotifyEvent;

Возникает непосредственно перед к новой записи

property OnCalcFields: TDataSetNotifyEvent;

Возникает при необходимости переопределения вычисляемых полей

4. Обзор компонента TTable

Так как компонент TTable является наследником класса TDataSet, он наследует все его свойства, методы и события. Он служит для работы с таблицами БД.

Следующие методы позволяют изменять данные, связанные с TTable: