Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Краткие теоретические сведения. Установка текущего индекса






Установка текущего индекса. Текущий индекс определяет поля таблицы, по которым будет отсортировано текущее представление ее содержимого. Установка (подключение) текущего индекса, который предварительно должен быть создан (например, при помощи утилиты Database Desktop в виде Secondary Indexes), осуществляется двумя путями:

- путем занесения имени индекса в свойство

property IndexName: string;

компонента TTable (как на этапе конструирования, так и программно), например:

Table1.IndexName: ='INDEX_BY_FIO';

- путем занесения списка индексных полей в свойство

property IndexFieldNames: string;

компонента TTable (как на этапе конструирования, так и программно), например:

Table1.IndexFieldNames: =Family; Name; Surname';

При этом индекс с указанными полями должен физически существовать.

Установка приоритетного доступа при многопользовательском режиме. Свойство

property Exclusive: boolean;

дает пользователю исключительный доступ к набору данных (значение True), что чаще всего означает отсутствие доступа у других пользователей. Установить данное свойство можно лишь при условии, когда ни один пользователь не имеет доступа к НД и тот не открыт. Установка этого режима требуется при выполнении ряда операций над НД.

Выполнение общесистемных функций.

Для очистки записей в таблице используется метод

Procedure EmptyTable;

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

Резервное копирование таблиц баз данных может осуществляться с применением обычных библиотечных функций Pascal - AssignFile, Reset, Rewrite, BlockRead, BlockWrite, CloseFile. Также могут быть использованы вызовы функций Windows API

CopyFile(lpszExistingFile: PChar, lpszNewFile: PChar, fFailIfExists: Boolean): Boolean;

MoveFile(lpszExisting: PChar, lpszNew: PChar): Boolean.

Удаление таблиц осуществляется при помощи метода DeleteTable компонента TTable, выполняемого в режиме приоритетного доступа, а также при помощи библиотечной функции DeleteFile(const FileName: string): Boolean.

Поиск записей в НД. Для поиска записей в наборе данных применяются следующие методы компонента TTable:

Function FindKey([список значений]): Boolean - ищет запись, точно удовлетворяющую условиям в списке значений; существует дублирующий его метод GoToKey;

Procedure FindNearest([список значений]) - ищет запись, приблизительно удовлетворяющую условиям в списке значений; существует дублирующий его метод GoToNearest;

Function Locate([список полей], [список значений]): Boolean - устанавливает указатель на запись, у которой список полей точно или неточно содержит значения из списка значений.

Function Lookup([список поисковых полей], [список значений], [список результирующих полей]): Variant - возвращает значения полей из списка результирующих полей для записи в НД, у которой поля из списка поисковых полей точно содержат значения из списка значений. Указатель текущей записи не меняется.

Фильтрация (отбор) записей при представлении НД. При представлении набора данных в ходе обработки содержимого таблиц баз данных часто необходимо отобразить лишь записи, удовлетворяющие некоторому условию (фильтру).

Фильтрация может осуществляться следующим способом:

- присвоение строкового значения свойству Filter, которое описывает условие фильтрации, например в следующем виде: FIO='Иванов';

- присвоение значения True свойству Filtered, которое приводит к началу фильтрации данных.

Такой способ фильтрации допустим как на этапе конструирования, так и на этапе прогона программы. Однако следует помнить о том, что значение свойства Filter должно быть строковым. Имена переменных программы указывать нельзя, можно указывать имена полей и явно заданные значения, использовать операции отношения и логические операторы AND, NOT и OR, например:

([Doljnost] = 'Слесарь') AND ([TabNumb] > 300000).

С помощью свойства FilterOptions можно определить дополнительные условия фильтрации строковых полей:

foCaseInsetive - фильтрация проводится без учета разницы в регистре символов;

foNoPartialCompare - фильтрация проводится на точное соответствие.

Другой способ фильтрации - использование события OnFilterRecord, которое возникает при установке значения True свойству Filtered. Обработчик может иметь следующий вид:

procedure TForm1.Table1FilterRecord(DataSet: TDataSet;

var Accept: Boolean);

begin

Accept: = (DataSet[Doljnost] = 'Слесарь') AND (DataSet[TabNumb] > 300000);

end;

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

Навигация по набору данных состоит в оперировании отдельными записями, в отличие от обработки наборов данных при помощи операторов языка SQL. Текущей записью (с установленным на ней курсором) является та запись, над которой в данный момент времени может выполняться какие-либо операции (удаление, изменение, чтение значений содержащихся в записи полей).

С помощью методов First, Last, Next, Prior, MoveBy, FindFirst, FindLast, FindNext, FindPrior компонента TTable можно изменять положение курсора в НД и выбирать нужную запись. Организуя в цикле выполнение каких-либо действий над записью и вызов метода, обеспечивающего перевод курсора, можно выполнить однотипные действия над всеми или частью записей НД.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.