О компоненте TDBF

О компоненте TDBF v1.11

Свободно распространяемый (freeware) компонент TDBF предназначен для непосредственного доступа (без использования BDE, ODBC и т.п.) к файлам формата dbf версий dBase III+, dBase IV, dBase V, dBase for Windows. Работает с Delphi 3..6 под Windows 9X/NT4/2000/XP.

Поддерживаемые типы данных: символьный, дата, числа с плавающей точкой, числа с фиксированной точкой, логический. Позволяет выполнять основные операции с dbf-файлами а также создавать их.

copyright 2002-2004 Брусникин И.В.
majar@nm.ru


Свойства компонента TDBF

Обозначения:
(R) - свойство доступно только для чтения; (PB) - свойство доступно в Инспекторе Объектов Delphi.

Active
Bof (R)
CodePage
DbfDate
Deleted
Eof (R)
Exclusive (PB)
FieldCount (R)
Modified (R)
RecNo (R)
RecordCount (R)
TableName (PB)


Свойство Active

property Active: Boolean;

Описание:
Установка в True равносильна применению метода Open. При этом файл, имя которого определено свойством TableName , открывается в режиме, заданном свойством Exclusive . Если файл содержит записи, первая запись становится текущей. Установка в False равносильна применению метода Close - закрытие файла.


Свойство Bof (R)

property Bof: Boolean;

Описание:
Содержит True, если текущая запись является первой в файле.


Свойство CodePage

property CodePage: TCodePage;

Описание:
Установка/чтение ID драйвера языка (кодовой страницы) dbf-файла, информирующего о кодировке текстовых данных. Если свойство имеет значение NONE, dbf-файл соответствует формату dBase III+, в противном случае - формату dBase IV.

type TCodePage = (ANSI, OEM, NONE).


Свойство DbfDate

property DbfDate: TDateTime;

Описание:
Установка/чтение даты последней модификации dbf-файла.

Примечание:
Эта дата, содержащаяся в заголовке файла, автоматически модифицируется при любом изменении данных в файле.


Свойство Deleted

property Deleted: Boolean;

Описание:
Установка/чтение признака удаления текущей записи (True - запись удалена).

Примечание:
Физически удаленная запись не уничтожается, поэтому удаление можно отменить. Для физического удаления записей из файла (сжатия файла) используется метод PackTable.


Свойство Eof (R)

property Eof: Boolean;

Описание:
Содержит True, если текущая запись является последней в файле.


Свойство Exclusive (PB)

property Exclusive: Boolean;

Описание:
Установка/проверка режима монопольного доступа к файлу. В монопольном режиме другим приложениям будет отказано в доступе к открытому файлу. Изменять это свойство при открытом файле нельзя.


Свойство FieldCount (R)

property FieldCount: Integer;

Описание:
Количество полей в открытом файле. Нумерация полей начинается с 1.


Свойство Modified (R)

property Modified: Boolean;

Описание:
Содержит True, если текущая запись была изменена. В этом случае изменения в записи можно отменить методом Cancel.


Свойство RecNo (R)

property RecNo: LongInt;

Описание:
Номер текущей записи в открытом файле. Нумерация записей начинается с 1.


Свойство RecordCount (R)

property RecordCount: LongInt;

Описание:
Количество записей в открытом файле.


Свойство TableName (PB)

property TableName: String;

Описание:
Установка/чтение имени dbf-файла.


Методы компонента TDBF

Create
Destroy
AddFieldDefs
 Append
Cancel
ClearFields
Close
CreateTable
EmptyTable
First
GetFieldData
GetFieldName
GetFieldPrecision
GetFieldSize
GetFieldType
GoToRecord
Insert
IsEmpty
Last
Next
Open
PackTable
Post
Prior
Refresh
SetFieldData
Translate


Конструктор Create

constructor Create(AOwner: TComponent);

Описание:
Создает экземпляр компонента TDBF.


Деструктор Destroy

destructor Destroy;

Описание:
Уничтожает экземпляр компонента TDBF.


Метод AddFieldDefs

procedure AddFieldDefs(FldName: String; FldType: TFLDType; FldSize, FldPrecision: Byte);

Описание:
Добавляет описание поля в список описаний для создания нового dbf-файла.

Параметры метода:
  • FldName - имя поля;
  • FldType - тип поля (тип данных, содержащихся в поле);
  • FldSize - размер поля (в байтах);
  • FldPrecision - количество знаков после десятичной точки.

Типы данных компонента TDbf:

type TFLDType = (bfBoolean, bfDate, bfFloat, bfNumber, bfString, bfUnkown) где:

  • bfBoolean - логический (FldSize и FldPrecision игнорируются);
  • bfDate - дата (FldSize и FldPrecision игнорируются);
  • bfFloat - вещественный (с плавающей точкой);
  • bfNumber - числовой (с фиксированной точкой);
  • bfString - символьный (строкрвый), FldPrecision игнорируется;
  • bfUnkown - неизвестный.

Примечания:

  1. Имя поля должно содержать не более 10 символов ASCII (лишние отбрасываются);
  2. Тип bfUnkown не следует использовать при создании нового dbf-файла. Он используется при получении информации о полях;
  3. Размер поля для bfBoolean = 1, для bfDate = 8, для остальных определяется FldSize. Для bfFloat и bfNumber символ десятичного разделителя входит в размер поля;
  4. FldPrecision учитывается только для типов bfFloat и bfNumber. Должно быть = 0 или (если > 0) соответствовать условию: FldSize > (FldPrecision + 1);
  5. В открытом файле изменять описания полей нельзя. При закрытии файла список описаний автоматически очищается.


Метод Append

procedure Append;

Описание:
Добавляет новую пустую запись в конец файла и делает ее текущей.


Метод Cancel

procedure Cancel;

Описание:
Отменяет любые изменения в текущей записи, не сохраненные еще в файле. Свойство Modified устанавливает в False.


Метод ClearFields

procedure ClearFields;

Описание:
Очищает все поля текущей записи.


Метод Close

procedure Close;

Описание:
Закрывает открытый файл, очищает список описаний полей и устанавливает свойство Active в False.


Метод CreateTable

procedure CreateTable;

Описание:
Создает новый dbf-файл с именем, установленным свойством TableName . Если файл с этим именем уже существует, он заменяется новым. Созданный файл открывается в режиме, заданном свойством Exclusive . При создании файла используется список описаний полей, предварительно заполненный с помощью AddFieldDefs .


Метод EmptyTable

procedure EmptyTable;

Описание:
Удаляет (физически) все записи из открытого файла.


Метод First

procedure First;

Описание:
Делает текущей первую физическую запись в открытом файле.

Примечание:
Сначала проверяется свойство Modified. Если текущая запись имела изменения, текущая запись сохраняется в файле, и затем происходит переход к первой записи файла.


Метод GetFieldData

function GetFieldData(FieldNo: Integer): String;

Описание:
Возвращает содержимое поля с номером FieldNo из текущей записи. Возвращаемое значение представляет собой строку, полученную преобразованием данных соответствующего типа в текстовое представление. Дата представлена строкой вида 'ДД.ММ.ГГ'. Логические значения - строками 'True' и 'False'. Текстовые данные формата OEM автоматически преобразуются в формат ANSI, если свойство CodePage имеет значение OEM.


Метод GetFieldName

function GetFieldName(FieldNo: Integer): String;

Описание:
Возвращает имя поля с номером FieldNo.


Метод GetFieldPrecision

function GetFieldPrecision(FieldNo: Integer): Byte;

Описание:
Возвращает количество знаков после десятичной точки для поля с номером FieldNo.


Метод GetFieldSize

function GetFieldSize(FieldNo: Integer): Byte;

Описание:
Возвращает размер поля с номером FieldNo (в байтах).


Метод GetFieldType

function GetFieldType(FieldNo: Integer): TFLDType;

Описание:
Возвращает тип данных поля с номером FieldNo. Описание TFLDType см. в методе AddFieldDefs. Значение bfUnkown возвращается в случае, если компонент не поддерживает тип данных, встречающийся в некоторых dbf-файлах (Memo, Binary, General и т.п.).


Метод GoToRecord

procedure GoToRecord(RecordNo: Integer);

Описание:
Делает текущей физическую запись с номером RecordNo в открытом файле.

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


Метод Insert

procedure Insert;

Описание:
Вставляет новую пустую запись на место текущей, сдвигая остальные к концу файла.


Метод IsEmpty

function IsEmpty: Boolean;

Описание:
Возвращает True, если в файле нет записей.


Метод Last

procedure Last;

Описание:
Делает текущей последнюю физическую запись в открытом файле.

Примечание:
Сначала проверяется свойство Modified. Если текущая запись имела изменения, текущая запись сохраняется в файле, и затем происходит переход к последней записи файла.


Метод Next

procedure Next;

Описание:
Делает текущей следующую физическую запись в открытом файле.

Примечание:
Сначала проверяется свойство Modified. Если текущая запись имела изменения, текущая запись сохраняется в файле, и затем происходит переход к следующей записи файла.


Метод Open

procedure Open;

Описание:
Открывает файл с именем, указанным свойством TableName в режиме, заданном свойством Exclusive, и устанавливает свойство Active в True. Если файл содержит записи, первая запись становится текущей.


Метод PackTable

procedure PackTable;

Описание:
Физическое удаление из файла записей, помеченных как удаленные (упаковка таблицы).


Метод Post

procedure Post;

Описание:
Сохраняет все изменения текущей записи в файле. Устанавливает свойство Modified в False.


Метод Prior

procedure Prior;

Описание:
Делает текущей предыдущую физическую запись в открытом файле.

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


Метод Refresh

procedure Refresh;

Описание:
Обновление TDBF данными из файла (повторное открытие файла).


Метод SetFieldData

procedure SetFieldData(FieldNo: Integer; Data: String);

Описание:
В текущей записи замещает содержимое поля с номером FieldNo данными Data и устанавливает свойство Modified в True. Данные - это строка, полученная преобразованием данных соответствующего типа в текстовое представление. Логические значения должны представляться строками вида 'True', 'Yes', 'False' или 'No', в противном случае значение считается неопределенным. Дата - строка вида 'ДД.ММ.ГГ'.


Метод Translate

procedure Translate(Src, Dest: String; ToOEM: Boolean);

Описание:
Перевод текста Src в текст Dest из формата ANSI в формат OEM и наоборот.

Примечание:
Для корректного преобразования украинской буквы 'i' она заменяется на латинскую 'i'.