Delphi-Help

Главная Статьи Всё остальное Руководство по TDbf

Руководство по TDbf

Оцените материал
(5 голосов)


Оглавление

1. Введение. 4

2. Методы. 5

2.1. GetFieldData. 5

2.2. Resync. 5

2.3. CreateBlobStream.. 5

2.4. Translate. 5

2.5. ClearCalcFields. 6

2.6. CompareBookmarks. 6

2.7. CheckDbfFieldDefs. 6

2.8. AddIndex. 6

2.9. RegenerateIndexes. 7

2.10. CancelRange. 7

2.11. SearchKey. 7

2.12. SetRange. 7

2.13. UpdateIndexDefs. 7

2.14. GetIndexNames. 8

2.15. TryExclusive. 8

2.16. EndExclusive. 8

2.17. LockTable. 8

2.18. UnlockTable. 8

2.19. OpenIndexFile. 8

2.20. DeleteIndex. 8

2.21. CloseIndexFile. 9

2.22. RepageIndexFile. 9

2.23. Locate. 9

2.24. LocateRecord. 9

2.25. IsDeleted. 10

2.26. Undelete. 10

2.27. CreateTable. 10

2.28. CreateTableEx. 10

2.29. CopyFrom.. 10

2.30. RestructureTable. 11

2.31. PackTable. 11

2.32. EmptyTable. 11

2.33. Zap. 11

2.34. InitFieldDefsFromFields. 11

3. Свойства. 12

3.1. AbsolutePath. 12

3.2. DbfFieldDefs. 12

3.3. PhysicalRecNo. 12

3.4. LanguageID. 12

3.5. LanguageStr 12

3.6. CodePage. 12

3.7. ExactRecordCount 12

3.8. DbfFile. 13

3.9. DisableResyncOnPost 13

3.10. DateTimeHandling. 13

3.11. Exclusive. 13

3.12. FilePath. 13

3.13. FilePathFull 14

3.14. Indexes. 14

3.15. IndexFieldNames. 14

3.16. IndexName. 14

3.17. MasterFields. 15

3.18. MasterSource. 15

3.19. OpenMode. 15

3.20. ReadOnly. 15

3.21. ShowDeleted. 15

3.22. Storage. 16

3.23. StoreDefs. 16

3.24. TableName. 16

3.25. TableLevel 16

3.26. UseFloatFields. 17

3.27. Version. 17

3.28. BeforeAutoCreate. 17

3.29. OnCompareRecord. 17

3.30. OnLanguageWarning. 17

3.31. OnLocaleError 17

3.32. OnIndexMissing. 17

3.33. OnCopyDateTimeAsString. 18

3.34. OnTranslate. 18

1. Введение

TDBF является бесплатным компонентом прямого доступа, для совместимых сред фирмы Borland Delphi language. Это включает Delphi, C++Builder и Kylix. Он позволяет создавать очень компактные программы работы с базой данных, которая не требует применения программ инсталляции. Код работы с базой включается в исполнимый код. Это обеспечивает следующие возможности:

· Работа без BDE.

· Позволяет использовать родные dBase типы (character, numeric, logical, date и memo).
См. свойство
TableLevel.

· Поддержаны оба типа Memo полей - text и binary, так можно использовать поля без ограничения размера.

· Формат файлов на 100% совместим с dBase III+ or dBase IV или dBase for Windows.

· Поддержаны таблицы Clipper и Visual FoxPro.

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

· Много пользовательский доступ совместим по блокировкам с BDE. Только один пользователь может блокировать запись для записи, но остальные пользователи могут читать эту запись.

· Поддержаны индексы для быстрой сортировки, поиска и выделения диапазона на больших таблицах. Поддержаны индексы для NDX и MDX индексных файлов.

· Выражения поддержаны как для индексов, так и для фильтров.

· Поддержаны кодовые таблицы зависимые от ОС и множественные региональные локализации. Это позволяет читать и писать таблицы с разными кодовыми таблицами, независимо от ОС и указывать порядок сортировки удобный для вас и нужного вам языка. В текущий момент пока нет поддержки для Linux.

2. Методы

2.1. GetFieldData

function GetFieldData(Field: TField; Buffer: Pointer): Boolean; override;

{Из справки Борланда} Большинству приложений не требуется вызывать GetFieldData. Объект TField вызывает этот метод, через реализацию в методе GetData.

Параметр Field или FieldNo указывает поле, из которого должны быть извлечены данные. Параметр Field указывает на сам компонент, в то время как FieldNo указывает на номер поля. Параметр Buffer это буфер в памяти, который должен быть достаточного размера, чтобы поместить значение поля, так как оно представлено в базе (не отформатировано и не перетранслировано). Параметр NativeFormat указывает, что компонент dataset извлекает поле в родном формате C++Builder для указанного типа поля. Когда NativeFormat равен false, компонент dataset должен конвертировать значение поля в должный тип. Это позволяет обслуживать данные из наборов разных типов (ADO, BDE или других) одинаковым образом.

GetFieldData возвращает значение указывающее, что данные были извлечены успешно.

GetFieldData возвращает true, если буфер успешно заполнен данными из поля, и false, если данные не были извлечены.

2.2. Resync

procedure Resync(Mode: TResyncMode); override;

TDbf поддерживает запрет вызова resync. См. свойство DisableResyncOnPost.

2.3. CreateBlobStream

function CreateBlobStream(Field: TField; Mode: TBlobStreamMode):

TStream; override; {virtual}

{Из справки Борланда} Вызовите CreateBlobStream для создания потока (stream) для чтения из BLOB поля или для записи в него (binary large object BLOB). Параметр Field должен указывать на компонент TBlobField из свойства Fields. Параметр Mode указывает, как используется поток – для чтения, для записи или для обновления содержимого поля.

Потоки Blob создаются в указанном режиме для конкретной записи. Приложения должны создавать новый поток каждый раз, как когда меняется запись, вместо повторного использования существующего потока.

2.4. Translate

{$ifdef DELPHI_4}

function Translate(Src, Dest: PChar; ToOem: Boolean): Integer;

override; {virtual}

{$else}

procedure Translate(Src, Dest: PChar; ToOem: Boolean); override; {virtual}

{$endif}

Данные записываются в DBF файл в конкретной кодовой странице, "OEM". Win­dows использует кодовые страницы "ANSI" для показа данных. Эта функция перетранслирует между этими кодовыми страницами.

Указание true в ToOem транслирует из Windows в DBF. Указание false в ToOem транслирует из DBF в Windows.

2.5. ClearCalcFields

procedure ClearCalcFields(Buffer: PChar); override;

Внутренний метод.

2.6. CompareBookmarks

function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer;

override;

{Из справки Борланда} Вызовите CompareBookmarks для определения того, что обе закладки (bookmarks) идентичны или нет. Параметры Bookmark1 и Bookmark2 это закладки для сравнения.

Если закладки различаются, то CompareBookmarks возвращает 1. Если закладки идентичны или обе закладки равны NULL, то CompareBookmarks возвращает 0.

2.7. CheckDbfFieldDefs

procedure CheckDbfFieldDefs(DbfFieldDefs: TDbfFieldDefs);

Делает проверку на допустимость типов полей ваших определения в TDbfFieldDef на соответствие текущему состоянию TableLevel. При использовании TableLevel менее чем 7, не все типы являются допустимыми.

2.8. AddIndex

{$ifdef DELPHI_5}

procedure AddIndex(const AIndexName, Fields: String;

Options: TIndexOptions; const DescFields: String = '');

{$else}

procedure AddIndex(const AIndexName, Fields: String;

Options: TIndexOptions);

{$endif}

Параметр AIndexName это имя нового индекса. AIndexName должен содержать имя индекса, длиной не более 10 символов.

Параметр Fields это значение типа AnsiString value содержащее поле или выражение на основе которого базируется новый индекс.

Параметр Options это множество атрибутов для индекса. Параметр Options может содержать одно, несколько или не одного из значений TIndexOptions: ixPrimary, ixUnique, ixDescending, ixCaseInsensitive и ixExpression.

· Значение ixPrimary указывает на подлинно уникальный индекс. При попытке вставки двух одинаковых ключей будет возбуждено исключение.

· Значение ixUnique указывает на уникальный индекс. Повторные ключи игнорируются.

· Значение ixDescending указывает обратный порядок сортировки.

· Значение ixCaseInsensitive не используется.

· Значение ixExpression не обязательно указывать, это определяется автоматически при разборе параметра Fields.

2.9. RegenerateIndexes

procedure RegenerateIndexes;

Очищает все подключенные индексы и затем создает их с нуля.

2.10. CancelRange

procedure CancelRange;

{Из справки Борланда} Вызовите CancelRange для удаления установленного диапазона в текущей таблице. Удаление диапазона восстанавливает доступ до всех записей набора данных.

2.11. SearchKey

function SearchKey(Key: Variant; SearchType: TSearchKeyType): Boolean;

function SearchKeyPChar(Key: PChar; SearchType: TSearchKeyType): Boolean;

Данная функция предполагает, что Вы используете должный индекс, свойство IndexName.

Параметр Key указывает значение для поиска по активному индексу. Вы можете указать ключ, как вариантный тип или передать буфер, используя функцию SearchKeyPChar. В данном случае, передача буфера должна соответствовать следующим правилам, основанным на индексе и типа параметра key:

· Строковый индекс: указатель на первый символ строки, ограниченный нулем.

· MDX, цифровой: указатель на буфер, содержащий BCD, в формате dBase.

· NDX, цифровой: указатель на тип double.

Параметр SearchType это одно из следующих значений:

· Значение stEqual поиск точного соответствия ключа. Возвращает false, если ключ не найден.

· Значение stGreaterEqual поиск точного соответствия ключа или если не найдено, то следующую запись по порядку, которая больше по значению, чем ключ. Возвращает false, если достигнут конец файла.

· Значение stGreater поиск первой записи, значение которой больше значения ключа. Возвращает false, если достигнут конец файла.

Если возвращаемое значение false то указатель не перемещается.

2.12. SetRange

procedure SetRange(LowRange: Variant; HighRange: Variant);

procedure SetRangePChar(LowRange: PChar; HighRange: PChar);

Данная функция предполагает, что Вы используете должный индекс, свойство IndexName. Функция устанавливает диапазон записей для текущего набора записей. Параметр LowRange указывает начальную границу, а параметр HighRange указывает конечную. Для форматирования параметра смотрите функцию SetRangePChar и SearchKeyPChar.

2.13. UpdateIndexDefs

procedure UpdateIndexDefs; override;

Внутренний метод, который вызывает обновление определений полей (FieldDefs), обновляет оба определения для полей и для индексов, читая их из dbase и индексных файлов.

2.14. GetIndexNames

procedure GetIndexNames(Strings: TStrings);

Параметр Strings указывает список, который при возврате будет содержать список всех индексов. Значения из этого списка могут быть использованы для установки свойства IndexName.

2.15. TryExclusive

procedure TryExclusive;

Требует установки свойства Active в true. Вызовите TryExclusive для получения монопольного доступа к открытому файлу, без вызова Close, устанавливает свойство Exclusive в значение true и заново открывает таблицу. Свойство Exclusive обновляется для отражения нового состояния. Проверьте свойство Exclusive для того, чтобы убедиться, что установка режима прошла успешно.

2.16. EndExclusive

procedure EndExclusive;

Если Вы работали в монопольном режиме, то вызов EndExclusive возвращает вас в предыдущее состояние.

2.17. LockTable

function LockTable(const Wait: Boolean): Boolean;

Вызовите функцию LockTable для блокировки всей таблицы. Параметр Wait указывает, что компонент должен ожидать установки блокировки или отказа, если блокировку не удается установить.

Разница между режимами LockTable и Exclusive состоит в том, что в режиме Exclusive другие не могут открыть файл исключая, когда свойство ReadOnly установлено в true, а для LockTable они могут открывать файл в режиме чтения/записи. В режиме LockTable попытки изменения записей будут отвергнуты.

2.18. UnlockTable

procedure UnlockTable;

Когда таблица была заблокирована с помощью LockTable, вызов UnlockTable приведет к разблокировке таблицы.

2.19. OpenIndexFile

procedure OpenIndexFile(IndexFile: string);

вызовите процедуру OpenIndexFile для подсоединения индексного файла (IndexFile), вторичный, необслуживаемый индексный файл, например NDX файл к DBF файлу. Как только индексный файл присоединяется, то он сразу становится обслуживаемым.

2.20. DeleteIndex

procedure DeleteIndex(const AIndexName: string);

Параметр AIndexName указывает имя индекса, который следует удалить.

· Если индекс содержится в MDX файле, то он удаляется оттуда.

· Если индекс содержится в NDX файле, то он закрывается, отсоединяется и удаляется с диска.

2.21. CloseIndexFile

procedure CloseIndexFile(const AIndexName: string);

Индексный файл, открытый функцией OpenIndexFile или установкой свойства Indexes можно закрыть с помощью функции CloseIndexFile. Указанный индекс больше не будет обслуживаться.

2.22. RepageIndexFile

procedure RepageIndexFile(const AIndexFile: string);

Иногда при просмотре размера индексного файла можно заметит, что размер его не уменьшается после удаления индекса. Данная функция перестраивает указанный индексный файл с целью уменьшения размера. Передайте, пустую строку для перестройки MDX файла таблицы. Эффект от применения RepageIndexFile или пересоздания всех индексов в индексном файле одинаков, но RepageIndexFile работает значительно быстрее. Процедура RepageIndexFile аналогична операции "PackTable", но для указанного индексного файла.

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

2.23. Locate

function Locate(const KeyFields: string; const KeyValues: Variant;

Options: TLocateOptions): Boolean; override;

Функция Locate производит поиск в наборе данных записи и позиционирует указатель не нее. Параметр KeyFields это строка, содержащая список имен полей, разделенных символом точка с запятой, по которым производится поиск.

Параметр KeyValues это вариантный массив, содержащий значения поиска для полей. Если список KeyFields одиночное поле, параметр KeyValues указывает значение для этого поля для требуемой записи. Для указания множественных значений поиска, передайте вариантный массив как KeyValues.

Параметр Options это множество, указывающее параметры поиска по строковым полям. Если параметр Options содержит loCaseInsensitive, то функция Locate игнорирует регистр букв при сравнении полей. Если Options содержит loPartialKey, то функция Locate позволяет частичное совпадение со строкой в KeyValues. Если Options пустое множество, или если свойство KeyFields не содержит строковых полей, то параметр Options игнорируется.

Функция Locate возвращает true если искомая запись найдена, и делает эту запись текущей, иначе функция возвращает false.

Если указано одно поле и оно содержится в индексном файле, то поиск использует данный индекс. В этом случае Options игнорируется, как если бы Вы указали loPartialKey.

2.24. LocateRecord

function LocateRecord(const KeyFields: string; const KeyValues: Variant;

Options: TLocateOptions; bSyncCursor: Boolean): Boolean;

Это внутренний метод, который производит всю действительную работу по поиску.

2.25. IsDeleted

function IsDeleted: Boolean;

Вызовите функцию IsDeleted для проверки, что текущая запись помечена как удаленная. Данная функция действует, если свойство ShowDeleted установлено в true.

2.26. Undelete

procedure Undelete;

Вызовите процедуру Undelete для снятия отметки об удалении.

2.27. CreateTable

procedure CreateTable;

Вызовите процедуру CreateTable во время выполнения для создания таблицы, используя текущие определения набора данных. Если таблица уже существует, то процедура CreateTable перезапишет структуру таблицы и данные.

Если свойство FieldDefs содержит значения, эти значения используются для создания определений полей. Иначе будет использовано свойство Fields. Одно или несколько из этих свойств может содержать значения для создания таблицы.

Если свойство Indexes содержит значения, то эти значения используются для создания индексов в таблице. См. Также CreateTableEx.

2.28. CreateTableEx

procedure CreateTableEx(DbfFieldDefs: TDbfFieldDefs);

Вызовите процедуру CreateTableEx для создания таблицы, используя данные определения полей. Данные определения полей дают больше возможностей, например, таких как определение точности цифровых полей.

2.29. CopyFrom

procedure CopyFrom(DataSet: TDataSet; FileName: string;

DateTimeAsString: Boolean; Level: Integer);

Используйте данную процедуру для копирования указанного набора данных в новую таблицу. Параметр DataSet это тип TDataSet, из которого вы хотите скопировать, FileName это полное имя новой таблицы (включая путь и расширение). DateTimeAsString указывает, что поля datetime должны быть преобразованы в строковые поля в таблице результата. Это особенно полезно если вы желаете использовать TDbf для создания к текстовым процессорам например. Если этот параметр установлен в True, то срабатывает обработчик события OnCopyDateTimeAsString, где вы можете перекрыть стандартное преобразование из datetime в string, которое базируется на текущих региональных настройках. Свойство Level определяет TableLevel для новой таблицы.

В случае использования версий TDbf до 6.0 для преобразования datetime значений в BDE совместимый формат, используйте данную процедуру следующим образом: поместите два экземпляра TDbf на форму, установите у TDbf1 свойство DateTimeHandling в dtDateTime и подсоедините к существующей таблице. Убедитесь, что у TDbf2 оно установлено в dtBDETimeStamp и вызовите процедуру CopyFrom с DataSet = TDbf1 и DateTimeAsString = False. Затем Вы можете заменить старую таблицу новой и использовать TDbf в режиме dtBDETimeStamp в ваших приложениях.

2.30. RestructureTable

procedure RestructureTable(DbfFieldDefs: TDbfFieldDefs; Pack: Boolean)

Вызовите процедуру RestructureTable для изменения структуры текущей таблицы.

Параметр DbfFieldDefs позволяет указать новую структуру. Каждый элемент FieldDef содержит свойство CopyFrom, которое является индексом поля из которого копируется информация. Поля, с которые не указывается ни в одном из DbfFieldDef свойств CopyFrom, удаляются. Если вы назначаете копию определения таблицы DbfFieldDefs новому списку для модификации, то свойство CopyFrom нового списка FieldDefs автоматически назначается, исключая Delphi 3 пользователей. Поэтому пользователи Delphi 3 должны побеспокоиться назначением свойства CopyFrom для предотвращения удаления полей, чего естественно вы не желаете!

Параметр Pack указывает необходимость упаковки таблицы, для удаления записей помеченных для удаления.

2.31. PackTable

procedure PackTable;

Вызовите процедуру PackTable для окончательного удаления записей помеченных к удаления. Перед тем как эти записи будут окончательно удалены, они помечаются к удалению. Вызов процедуры PackTable удаляет эти записи физически из таблицы. Также это можно сделать с помощью вызова процедуры RestructureTable с указателем nil для параметра DbfFieldDefs и передачей true для Pack.

2.32. EmptyTable

procedure EmptyTable;

Метод EmptyTable удаляет все записи из таблицы. Он не изменяет текущую структуру таблицы и индексов.

2.33. Zap

procedure Zap;

Псевдоним для метода EmptyTable.

2.34. InitFieldDefsFromFields

{$ifndef DELPHI_5}

procedure InitFieldDefsFromFields;

{$endif}

Это внутренний метод InitFieldDefsFromFields, используемый различными функциями, например, CreateTable. Он создает определение полей для существующего набора Fields. Данная процедура нудна только для Delphi 4 и младше, поскольку в Delphi 5 и старше данная процедура реализована в TDataSet.

3. Свойства

3.1. AbsolutePath

property AbsolutePath: string read FAbsolutePath;

Это абсолютный путь до текущей таблицы. См. также FilePathFull.

3.2. DbfFieldDefs

property DbfFieldDefs: TDbfFieldDefs read GetDbfFieldDefs;

DbfFieldDefs это список определений полей для таблицы, подобен TDataSet.FieldDefs, за исключением того, что TDbfFieldDefs более подходит для dBase таблиц. Например, он включает информацию о родных типах полей и точность для числовых полей. См. также TDbfFieldDefs.

Для доступа к полям и их значениям в наборе данных используйте свойства Fields и Field Values, а также метод FieldByName.

3.3. PhysicalRecNo

property PhysicalRecNo: Integer read GetPhysicalRecNo write SetPhysicalRecNo;

Используйте свойство PhysicalRecNo для определения физического номера записи текущей записи. Его также можно использовать для установки курсора на нужную запись. Различие между RecNo состоит в том, что чтение RecNo возвращает последовательный номер, который тот же самый если индекс не используется и различается если индекс используется.

3.4. LanguageID

property LanguageID: Integer read GetLanguageID;

Используйте свойство LanguageID для определения кодовой страницы, комбинации об использованной локализации using. См. также DbfLang.pas для получения полной информации.

3.5. LanguageStr

property LanguageStr: String read GetLanguageStr;

Используйте свойство LanguageStr для чтения кодовой страницы, информации о локализации для dBase таблиц уровня 7.

3.6. CodePage

property CodePage: Cardinal read GetCodePage;

Используйте свойство CodePage для определения кодовой страницы dBase таблицы.

3.7. ExactRecordCount

property ExactRecordCount: Integer read GetExactRecordCount;

Используйте свойство ExactRecordCount для определения точного количества записей в текущем наборе данных. Оно включает в себя количество удаленных, отфильтрованных и индексированных записей. Этим оно отличается от свойства RecordCount, которое всегда дает существующую верхнею границу. Заметим, что данное свойство требует сканирования полного набора данных, в то время как свойство RecordCount это просто расчет.

3.8. DbfFile

property DbfFile: TDbfFile read FDbfFile;

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

3.9. DisableResyncOnPost

property DisableResyncOnPost: Boolean read FdisableResyncOnPost

write FDisableResyncOnPost ;

Когда запись записывается в таблицу, TDataSet извлекает все записи поблизости от текущей записи. Свойство DisableResyncOnPost управляет данным поведением. Оно позволяет увеличить скорость, если Вы добавляете группу записей. См. также TDataSet.DisableControls.

3.10. DateTimeHandling

property DateTimeHandling: TDateTimeHandling read FdateTimeHandling

write FDateTimeHandling default dtBDETimeStamp;

До версии 6.0 TDbf использовал запись значение в '@' (ftDateTime) полей как Delphi тип TDateTime. Для совместимости с BDE, эти поля нужно было записывать как BDE тип TimeStamp (число миллисекунд, начиная с 01/01/0001 плюс один день). Для обратной совместимости Вы можете использовать это свойство для определения как TDbf должен читать и писать значения datetime как TDateTime или как BDE TimeStamp. Сейчас по умолчанию это как dtBDETimeS­tamp, но для чтения значений в существующих TDbf таблицах Вы можете выбрать тип dtDateTime. Если Вы желаете преобразовать ваши данные, в совместимые с BDE, то обратите ваше внимание на процедуру CopyFrom.

3.11. Exclusive

property Exclusive: Boolean read FExclusive write FExclusive default false;

Используйте свойство Exclusive для предотвращения доступа других приложений к таблице, открытой в этом приложении. Перед открытием таблицы, установите свойство Exclusive в true. Таблица должна быть закрыта до смены свойства Exclusive.

Когда свойство Exclusive установлено в true, и приложение успешно открыло таблицу, то другие приложения не смог иметь к ней доступа. Если таблица, к которой требуется монопольный доступ, уже открыта другим приложением, то возникнет исключение. Для обработки таких исключений, заключите открытие в блок try except end. См. также TryExclusive.

Не устанавливайте свойство Exclusive в true во время разработки, если Вы одновременно устанавливаете свойство Active в true. В этом случае произойдет исключение, поскольку таблица уже используется в IDE.

3.12. FilePath

property FilePath: string read FRelativePath write SetFilePath;

Используйте свойство FilePath для определения, какой путь установил пользователь до файла текущей таблицы. Он может быть или относительным, или абсолютным. См. также FilePathFull.

3.13. FilePathFull

property FilePathFull: string read FAbsolutePath write SetFilePath

stored false;

Используйте свойство FilePathFull для определения абсолютного пути для текущей таблицы. Оно всегда содержит абсолютный путь, вне зависимости какой путь указан в свойстве FilePath. Обычно это используется во время разработки в IDE, когда вы устанавливаете относительный путь в свойстве FilePath, затем проверяете свойство FilePathFull чтобы определить где будет создана или открыта таблица.

3.14. Indexes

property Indexes: TDbfIndexDefs read FIndexDefs write SetDbfIndexes;

Свойство Indexes это коллекция определений индексов, каждый элемент которой описывает отдельный индекс для таблицы. Определяйте определение индекса до вызова процедуры CreateTable или создания таблицы во время разработки в среде.

Обычно приложение делает доступ или указывает индексы во время исполнения, через свойства IndexName и IndexFieldNames.

Если свойство Indexes обновляется или вручную редактируется, то свойство StoreDefs устанавливается в true.

Определения индекса в свойстве Indexes не всегда отражает текущие индексы доступные для таблицы. Перед проверки свойства Indexes, вызовите метод Update для обновления списка.

3.15. IndexFieldNames

property IndexFieldNames: string read GetIndexFieldNames

write SetIndexFieldNames;

Используйте свойство IndexFieldNames как альтернативный метод для указания индекса используемого для таблицы. В свойстве IndexFieldNames, укажите имя каждой используемой колонки как индекс для таблицы. Вы можете также указать выражение для существующего индекса. Имя колонки, указанное в свойстве IndexFieldNames должно быть уже проиндексировано.

Свойства IndexFieldNames и IndexName взаимно исключительны. Установка одно очищает другое.

3.16. IndexName

property IndexName: string read GetIndexName write SetIndexName;

Используйте свойство IndexName для указания альтернативного индекса для таблицы. Если свойство IndexName пусто, то сортировка осуществляется по физическому порядку записей в таблице.

Если IndexName содержит имя допустимого индекса, то индекс определяет сортировку записей. Имя индекса, указанное в свойстве IndexName должно быть или в главном индексном файле таблицы или в другом индексном файле, уже указанном в свойстве Indexes или открытом с помощью функции OpenIndexFile.

IndexFieldNames and IndexName are mutually exclusive. Setting one clears the other.

3.17. MasterFields

property MasterFields: string read GetMasterFields write SetMasterFields;

Используйте свойство MasterFields после установки свойства MasterSource для указания имени одно или более полей для создания связи основная подчиненная между этой таблицей и таблицей указанной в свойстве MasterSource.

Свойство MasterFields это строка, содержащая одно или более имен полей в основной таблице. Поля разделяются символов точка с запятой.

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

3.18. MasterSource

property MasterSource: TDataSource read GetDataSource write SetDataSource;

Используйте свойство MasterSource для указания имени компонента, чье свойство DataSet используется как главная таблица для установления связи с подчиненной. Указанное свойство DataSource должно быть другой TDbf таблицей.

Во время разработки выберите доступный источник из выпадающего меню свойства MasterSource в инспекторе объектов.

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

3.19. OpenMode

property OpenMode: TDbfOpenMode read FOpenMode write FopenMode

default omNormal;

Свойство OpenMode указывает, что делать, если указанная с данным именем таблица не существует и свойство Active устанавливается в true или вызывается метод Open.

· Значение omNormal прерывает открытие, если файл не существует.

· Значение omAutoCreate создает новую таблицу, если вызывается метод CreateTable и открывает ее.

· Значение omTemporary не используется.

3.20. ReadOnly

property ReadOnly: Boolean read FReadOnly write FReadonly default false;

Свойство ReadOnly указывает, что таблицу надо открыть в режиме только чтение. Если это свойство установлено в true, то таблицу нельзя изменять. Вы можете открыть таблицу в режиме только чтение, даже если она открыта в монопольном режиме.

3.21. ShowDeleted

property ShowDeleted: Boolean read FShowDeleted write SetShowDeleted

default false;

Свойство ShowDeleted указывает показывать записи, помеченные для удаления или нет. Используйте функцию IsDeleted для определения, что текущая запись помечена для удаления.

3.22. Storage

property Storage: TDbfStorage read FStorage write FStorage default stoFile ;

Свойство не используется.

3.23. StoreDefs

property StoreDefs: Boolean read FStoreDefs write FStoreDefs default False;

если свойство StoreDefs установлено в true, то определения индексов таблицы и ее полей записываются вместе с модулем данных или формой. Установка свойства StoreDefs в true делает возможным создание полей, индексов методом CreateTable простым делом, за один вызов во время исполнения приложения.

Свойство StoreDefs по умолчанию установлено в false. Оно устанавливается в true, когда свойства FieldDefs или Indexes обновляется или редактируется вручную; для предотвращения записи измененных или импортированных определений не забудьте сбросить это свойство в false.

3.24. TableName

property TableName: string read FTableName write SetTableName;

используйте свойство TableName для указания имени файла таблицы базы данных. Вы можете указать или полный путь с именем файла, в этом случае путь будет отделен и записан в свойство FilePath.

При установке TableName, свойство Active должно быть в состоянии false.

3.25. TableLevel

property TableLevel: Integer read FTableLevel write SetTableLevel;

Используйте свойство TableLevel для определения уровня текущей таблицы. Установка свойства TableLevel позволяет указать уровень для вновь создаваемых таблиц. Свойство Active должно быть в состоянии false во время установки этого свойства. Существуют следующие уровни:

· 3: совместимость с dBase III+

· 4: совместимость с dBase IV. Единственная разница в dBase III+ это текущая кодовая страница, локализация.. dBase III+ не использует преобразования для кодовой страницы и использует двоичный порядок для сортировки.

· 7: совместимость с Visual dBase VII. Не все свойства поддержаны, но здесь приведены поддержанные:

Ø Больше типов полей: datetime, 32-битные целые, 64-битные двойной точности.

Ø Значения по умолчанию для полей. Эта информация доступна через свойства DbfFieldDef.HasDefault и DefaultBuf.

Ø Значения Min и Max для полей не поддержаны, но могут быть прочитаны.

Ø Ссылочная целостность не поддержана.

· 25: совместимость с FoxPro. Настоящие типы немного различаются, но очень совместимы с dBase IV. CDX индексы не поддержаны.

3.26. UseFloatFields

property UseFloatFields: Boolean read FUseFloatFields write FuseFloatFields

default true;

Когда свойство UseFloatFields разрешено, то это заставляет использовать поля с плавающей запятой, даже если числовые поля имеют нулевую точность. Когда запрещено, то используются 32 или 64 битные целочисленные поля, в зависимости от размера поля.

3.27. Version

property Version: string read GetVersion write SetVersion stored false

используйте свойство Version для определения версии TDbf компонент.

3.28. BeforeAutoCreate

property BeforeAutoCreate: TBeforeAutoCreateEvent read FbeforeAutoCreate

write FBeforeAutoCreate;

Когда таблица отсутствует, а свойство OpenMode установлено в omAutoCreate и вызван метод Open, то возбуждается это событие. Реализуйте обработчик BeforeAutoCreate для предотвращения создания таблицы.

3.29. OnCompareRecord

property OnCompareRecord: TNotifyEvent read FOnCompareRecord

write FOnCompareRecord;

Данное событие не используется.

3.30. OnLanguageWarning

property OnLanguageWarning: TLanguageWarningEvent read FOnLanguageWarning

write FOnLanguageWarning;

Напишите обработчик OnLanguageWarning для запрета действий, когда данные записываются в таблицу со специфической кодовой таблицей, а операционная система не в состоянии преобразовать данные для просмотра в ANSI кодовую страницу. Вы можете указать режим только чтении или редактировать ни на что не глядя.

3.31. OnLocaleError

property OnLocaleError: TDbfLocaleErrorEvent read FOnLocaleError

write FOnLocaleError;

Напишите обработчик OnLocaleError для запрета действий, когда индексные данные записаны в определенном порядке, а операционная система не поддерживает данный порядок сортировки. Вы можете читать или изменять индекс ни на что не глядя, но индекс может оказаться поврежденным если Вы не понимаете, что делаете.

3.32. OnIndexMissing

property OnIndexMissing: TDbfIndexMissingEvent read FOnIndexMissing

write FOnIndexMissing;

Напишите обработчик OnIndexMissing для запрета действий, когда таблица ссылается на конкретный индекс, но сам индекс отсутствует. Значение по умолчанию это удалить связь, но Вы можете отказаться открывать таблицу.

3.33. OnCopyDateTimeAsString

property OnCopyDateTimeAsString: TConvertFieldEvent

read FOnCopyDateTimeAsString write FOnCopyDateTimeAsString;

Напишите обработчик OnCopyDateTimeAsString для предоставления своего форматирования полей DateTime в строковые поля. См. также процедуру CopyFrom.

3.34. OnTranslate

property OnTranslate: TTranslateEvent read FOnTranslate write FOnTranslate;

Напишите обработчик OnTranslate для предоставления пользовательского преобразования данных таблицы в кодовую таблицу "ANSI".

Прочитано 18498 раз
Другие материалы в этой категории: « Загрузка данных из таблицы в ComboBox, ListBox…

Авторизация



Счетчики