на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Робота з таблицями засобами Lazarus

Переконайтеся, що Ви встановили властивості FilePath (або FilePathFulll), TableLevel, і TableName вашого компоненту TDbf перед викликом:

TDbf.Active := True;

Коли запис видаляється, насправді він фізично залишається в таблиці. Періодично Ви повинні "пакувати" таблицю щоб відновити втрачене місце. Це може бути зроблено установкою ексклюзивного режиму доступу:

MyDbf.Exclusive := True;

MyDbf.Open;

MyDbf.PackTable;

//давайте, також, переробимо індекси

MyDbf.Regenerate.Indexes;

MyDbf.Close;

MyDbf.Exclusive := False;

Справжня сила програмування баз даних починається коли Ви маєте декілька таблиць які посилаються один на одного. Поки TDbf не підтримує довідкову цілісності, але підтримує подання головна/підпорядкована між таблицями TDbf.

Якщо ви хотіли показати всі накладні для наданого клієнта, підпорядкована таблиця (invoices) може залишатися синхронізованою з головною таблицею (customers) автоматично.

На компоненті накладні TDbf встановлюють наступне:

InvDbf.IndexName := `idxcustid';

InvDbf.MasterSource := dsCustomers;

InvDbf.MasterFields := `Id';

Можливості TDbf на цьому не закінчуються. Для більш складних програм знадобляться багато інших властивостей TDbf. Нижче розглянемо всі методи та властивості компонента TDbf.

1. Методы

1.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, якщо дані не були витягнуті.

1.2 Resync

procedure Resync(Mode: TResyncMode); override;

TDbf підтримує заборону виклику resync.

Див. властивість DisableResyncOnPost.

1.3 CreateBlobStream

function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override; {virtual}

Викличте CreateBlobStream для створення потоку (stream) для читання з BLOB поля або для запису в нього (binary large object BLOB).Параметр Field повинен вказувати на компонент TBlobField з властивості Fields. Параметр Mode вказує, як використовується потік - для читання, для запису або для оновлення вмісту поля. Потоки Blob створюються в зазначеному режимі для конкретної запису. Додатки повинні створювати новий потік щоразу, коли змінюється запис, замість повторного використання існуючого потоку.

1.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". Windows використовує кодові сторінки "ANSI" для показу даних. Ця функція перетрансльовує між цими кодовими сторінками. Вказівка true в ToOem транслює з Windows в DBF. Вказівка false в ToOem транслює з DBF в Windows.

1.5 ClearCalcFields

procedure ClearCalcFields(Buffer: PChar); override;

Внутрішній метод.

1.6 CompareBookmarks

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

Викличте CompareBookmarks для визначення того, що обидві закладки (bookmarks) ідентичні чи ні. Параметри Bookmark1 і Bookmark2 це закладки для порівняння. Якщо закладки розрізняються, то CompareBookmarks повертає 1. Якщо закладки ідентичні або обидві закладку рівні NULL, то CompareBookmarks повертає 0.

1.7 ChekDbfFieldDefs

procedure CheckDbfFieldDefs(DbfFieldDefs: TDbfFieldDefs);

Робить перевірку на допустимість типів полів ваших визначеннь в TDbfFieldDef на відповідність поточному стану TableLevel. При використанні TableLevel менш ніж 7, не всі типи є допустимими.

1.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.

1 . Значення ixPrimary вказує на справді унікальний індекс. При спробі вставки двох однакових ключів буде порушено виняток.

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

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

4 . Значення ixCaseInsensitive не використовується.

5 . Значення ixExpression не обов'язково вказувати, це визначається автоматично при розборі параметра Fields.

1.9 RegenerateIndexes

procedure RegenerateIndexes;

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

1.10 CancelRange

procedure CancelRange;

Викличте CancelRange для видалення встановленого діапазону в поточній таблиці. Видалення діапазону відновлює доступ до всіх записів набору даних.

1.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 то вказівник не рухається.

1.12 SetRange

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

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

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

1.13 UpdateIndexDefs

procedure UpdateIndexDefs; override;

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

1.14 GetIndexNames

procedure GetIndexNames(Strings: TStrings);

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

1.15 TryExclusive

procedure TryExclusive;

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

1.16 EndExclusive

procedure EndExclusive;

Якщо Ви працювали в монопольному режимі, то виклик EndExclusive повертає вас у попередній стан.

1.17 LockTable

function LockTable(const Wait: Boolean): Boolean;

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

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

1.18 UnlockTable

procedure UnlockTable;

Коли таблиця була заблокована за допомогою LockTable, виклик UnlockTable призведе до розблокуванні табліци.

1.19 OpenIndexFile

procedure OpenIndexFile(IndexFile: string);

Викличте процедуру OpenIndexFile для приєднання індексного файлу (IndexFile), вторинний, що не обслуговуються індексний файл, наприклад NDX файл до DBF файлу. Як тільки індексний файл приєднується, то він відразу стає обслуговується.

1
.20 DeleteIndex

procedure DeleteIndex(const AIndexName: string);

Параметр AIndexName повертає назву індексу, який потрібно видалити.

· Якщо індекс міститься в MDX файлі, то він видаляється звідти.

· Якщо індекс міститься в NDX файлі, то він закривається, від'єднується і видаляється з диска.

1.21 CloseIndexFile

procedure CloseIndexFile(const AIndexName: string);

Індексний файл, відкритий функцією OpenIndexFile або установкою властивості Indexes можна закрити за допомогою функції CloseIndexFile. Вказаний індекс більше не буде обслуговуватися.

1
.22 RepageIndexFile

procedure RepageIndexFile(const AIndexFile: string);

Іноді при перегляді розміру індексного файлу можна помітить, що розмір його не зменшується після видалення індексу. Ця функція перебудовує вказаний індексний файл з метою зменшення розміру. Передайте, порожній рядок для перебудови MDX файлу таблиці. Ефект від застосування RepageIndexFile або пересозданія всіх індексів в індексному фото однаковий, але RepageIndexFile працює значно швидше. Процедура RepageIndexFile аналогічна операції "PackTable", але для зазначеного індексного файлу.

Примітка: вам потрібно досить багато пам'яті для виконання цієї операції, оскільки тимчасовий індексний файл створюється в пам'яті і тільки потім переписується на диск.

1.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.

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.