Предположим, что первое поле в записи содержит номер заказчика, тогда код, показанный выше, возвратил бы строку типа “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; | Возникает при необходимости переопределения вычисляемых полей |
Так как компонент TTable является наследником класса TDataSet, он наследует все его свойства, методы и события. Он служит для работы с таблицами БД.
Следующие методы позволяют изменять данные, связанные с TTable: