Delphi 3 и создание приложений баз данных

         

Где


• READ WRITE \ READ ONLY устанавливает уровень доступа к данным (по умолчанию READ WRITE);

• WAIT | NO WAIT определяет поведение при возникновении конфликта по обновлению записи данной транзакции с другой транзакцией, ранее сделавшей изменение в той же записи: WAIT (по умолчанию) побуждает данную транзакцию ожидать завершения конкурирующей транзакции;

NO WAIT определяет аварийное завершение данной транзакции;

• ISOLATION LEVEL определяет уровни изоляции транзакций на сервере (по умолчанию SNAPSHOT);

• RESERVING в рамках данной транзакции запирает (lock) таблицы, приведенные в одном или нескольких списках таблиц.

В последнем случае каждому элементу списка таблиц ставятся в соответствие параметры:

PROTECTED READ -

конкурирующие транзакции могут читать данные, но не могут изменять;

PROTECTED WRITE -

читать данные могут только транзакции с уровнями SNAPSHOT или READ COMMITTED и никакая конкурирующая транзакция не может их изменять.

Geneial SQL eiroi. multiple rows in singleton select.


Рис. 25.39. "Общая ошибка при выполнении SQL; возвращено множество значений, когда требуется единичное значение ".

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

Поэтому следует придерживаться правила оценивать, какой результат -множественный или единичный - будет в общем случае возвращать подзапрос. (И что делать после оценки? Я бы изменил оператор = на in where r.pokup in select.... и пояснил отсутствие ошибки)



Информация о таблице БД


• Primary pointer page - номер начальной страницы таблицы БД.

• Index root page -

номер начальной страницы для хранения индексов таблицы БД.

• Data pages - общее число страниц для хранения данных.

• Average fill -

процент заполнения страниц для хранения данных.

Fill distribution -

диаграмма заполнения страниц для хранения данных. Пример. Информация о таблице SPISKI: SPISKI (38)

Primary pointer page: 272, Index root page: 273 Data pages: 6, data page slots: 6, average fill: 65% Fill distribution:

0 - 19% = 0

20 - 39% = 0

40 - 59% = 1

60 - 79% = 5

80 - 99% = 0

Информация об индексе

Index -

Имя индекса.

Depth -

Число уровней в дереве индексных страниц (оптимальный показатель - не больше 3. При глубине индекса (depth) больше 3 сортировка с его использованием становится неэффективной. Leaf buckets - Число страниц нижнего уровня в дереве индексных страниц.

Nodes -

Общее число страниц в дереве.

Average data length -

Средняя длина каждого ключа в байтах.

Total dup -

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

Мах dup -

Число строк индекса с максимальным числом дублированных значений индексных полей.

Fill distribution - Гистограмма, показывающая число индексных страниц, соответствующих определенному проценту заполнения. Пример:

Index RDB$FOREIGN11 (1)

Depth: 1, leaf buckets: 1, nodes: 39

Average data length: 5.00, total dup: 16, max dup: 6

Fill distribution:

0 - 19% = 0

20 - 39% = 0

40 - 59% = 1

60 - 79% = 0

80 - 99% = 0



Изменение хранимой процедуры


ALTER PROCEDURE ИмяПроцедуры

[ (входной_параметр тип_данных [, входной параметр тип данных...])]

[RETURNS

(входной параметр тип данных [,входной параметр тип данных ...])]

AS

<тело процедуры>;



Изменение определения домена


ALTER DOMAIN имя {

[SET DEFAULT {литерал! NULL | USER}]

I [DROP DEFAULT]

I [ADD [CONSTRAINT] CHECK (<огранич_домена>)]

I [DROP CONSTRAINT]



Изменение существующего триггера


ALTER TRIGGER ИмяТриггера FOR ИмяТаблицы

[ACTIVE I INACTIVE]

{BEFORE | AFTER}

{DELETE INSERT | UPDATE}

[POSITION номер]

AS <тело триггера>



Изменение записей


UPDATE <объект>

SET столбец! = <значение1> [,столбец2 = <значение2>...]

[WHERE <условие поиска >]

Удаление записей

DELETE FROM <объект>

[WHERE <условие поиска>];



Компонент TDBComboBox


Свойства property DataField: string; - содержит имя поля.

property DataSource: TDataSowce; -

определяет имя связанного с НД компонента DataSource.

property DropDownCount: Integer; -

определяет число строк в выпадающем списке.

property Items : Tstrings; -

хранит список вариантов значения поля.

property ReadOnly: Boolean; -

содержит True, если значение поля доступно только для чтения.

Компонент TDBLookupComboBox


ПРИМЕЧАНИЕ. Набор данных-1 (НД-1), к которому принадлежит поле, возвращающее значение из НД-2; набор данных-2 (НД-2), из которого берется значение.



Компонент TStoredProc


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

В утилите WISQL InterBase хранимую процедуру действия можно вызвать при помощи оператора

EXECUTE PROCEDURE имя [параметр [, параметр ...|];

Например, вызов процедуры STOIM с указанием двух входных параметров приведет к выдаче значения выходного параметра в окне результатов WISQL (рис. 28.3).

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

Из приложения клиента процедуру действия вызывают при помощи компонента TStoredProc. Для этого в его свойство DatabaseName помещают псевдоним удаленной БД, в которой расположена хранимая процедура. Затем выбирают имя соответствующей хранимой процедуры из выпадающего списка в свойстве StoredProcNawe компонента TStoredProc. При этом происходит считывание имен входных и выходных параметров и их типов. Их можно увидеть, нажав кнопку (...) в свойстве Params или вызвав редактор определения параметров компонента TStoredProc. Для этого необходимо сделать компонент текущим, нажать правую кнопку мыши и в появившемся меню выбрать опцию Define Parameters. Вид представления параметров в редакторе определения параметров компонента TStoredProc показан на рисунке 28.4.

В окне Parameter Name указываются имена параметров. Поле Parameter Type устанавливает тип параметра (Input, Output). Поле Data Type определяет тип данных параметра. Поле Value устанавливает значение параметра по умолчанию.

ЗАМЕЧАНИЕ.

При считывании характеристик параметров непосредственно из хранимой процедуры Delphi блокирует кнопки Add, Delete, Clear, предназначенные для добавления, удаления, очистки характеристик параметра. Для других случаев параметры можно определять явно. При этом необходимо заботиться о соответствии типов данных параметров процедуры и компонента TStoredProc. Имена параметров и порядок их следования могут не совпадать с именами и порядком следования параметров в хранимой процедуре на сервере. В этом случае указать соответствие параметров компонента и процедуры на сервере можно, используя свойство компонента TStoredProc

property ParamBindMode: TParamBindMode;

для которого допустимы значения

pbByName

- (по умолчанию) соответствие параметров ведется по именам (имена одинаковых параметров в компоненте и процедуре на сервере должны совпадать);

pbByNumber

- соответствие параметров производится по их порядковым номерам: производится попытка первый по порядку параметр компонента соотнести с первым по порядку параметром процедуры на сервере, второй - со вторым и т.д.

Установить значения входных параметров и получить значения выходных параметров процедуры можно, используя метод

function ParamByName(const Value: string): TParam;

Например,

// входной параметр StoredProc2.ParamByName('IN_TOVAR').Value :=

Table1.FieldByName('TOVAR').Value;

// выходной параметр

Label5.Caption := IntToStr(StoredProc2.ParamByName('MAX_KOLVO').Value) ;

Перед выполнением процедуры нужно произвести связывание параметров компонента TStoredProc и параметров хранимой процедуры при помощи метода

procedure Prepare;

Вызов хранимой процедуры действия осуществляется методом procedure ExecProc;

Пример.

Пусть на сервере определены хранимые процедуры действия FIND_MAX_KOLVO и STOIM. Осуществим их вызов из клиентского приложения, написанного на Delphi.

Процедура FIND_MAX_KOLVO возвращает в выходном параметре MAX_KOLVO максимальную партию отгруженного товара, наименование которого передается во входном параметре IN_TOVAR:

CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20))

RETURNS(MAX_KOLVO INTEGER) AS

BEGIN

SELECT MAX(KOLVO) FROM RASHOD WHERE TOVAR = : IN_TOVAR INTO : MAX_KOLVO;

SUSPEND;

END

Процедура STOIM возвращает стоимость количества товара. Параметр IN_KOLVO определяет число единиц товара; IN_TOVAR определяет название товара.

CREATE PROCEDURE STOIM (IN_TOVAR VARCHAR (20) , IN_KOLVO INTEGER)

RETURNS(OUT_STOIM INTEGER) AS

DECLARE VARIABLE ZENA_ED INTEGER;

BEGIN

SELECT ZENA FROM TOVARY WHERE TOVAR = :IN_TOVAR INTO : ZENA_ED;

OUT_STOIM = ZENA_ED * IN_KOLVO;

END

Расположим в форме:

1. компонент TTable, ассоциированный с таблицей TOVARY, для выбора названия товара для его передачи в хранимую процедуру как входного параметра;

2. компонент TStoredProc (имя StoredProc!) для выполнения процедуры STOIM;

3. компонент TStoredProc (имя StoredProc2) для выполнения процедуры FIND_MAX_KOLVO;

4. компонент TButton для инициации выполнения хранимых процедур;

5. два компонента TLabel для визуализации результатов выполнения процедуры.

Напишем обработчик нажатия кнопки, в котором происходит присваивание значений входных параметров и получение значений выходных параметров процедур:

procedure TForm1.Button1Click(Sender: TObject);

begin

StoredProc2.UnPrepare;

StoredProc1.UnPrepare;

StoredProc1.ParamByName('IN_TOVAR').Value := Table1.FieldByName('TOVAR').Value;

StoredProc1.ParamByName('IN_KOLVO').Value := StoredProc2.ParamByName('MAX_KOLVO').Value;

StoredProc1.Prepare;

StoredProc1.ExecProc;

Label3.Caption :=IntToStr(StoredProc!.ParamByName('OUT_STOIM').Value) ;

StoredProc2.ParamByName('IN_TOVAR').Value := Table1.FieldByName('TOVAR').Value;

StoredProc2.Prepare;

StoredProc2.ExecProc;

Label5.Caption := IntToStr(StoredProc2.ParamByName('MAX_KOLVO').Value) ;

end;

Результат работы приложения приведен на рисунке 28.5.

Рис. 28.5. Значения максимального отпуска товара (количество и стоимость) возвращаются хранимой процедурой выбора как выходные параметры



Компонент ТТаblе


Приводимые ниже свойства, методы, события уникальны для компонента TTable. Помимо этого, TTable обладает также свойствами, методами, событиями, общими для наборов данных. Они описаны в разделе "Наборы данных".



Методы


procedure Apply Updates (const DataSets: array of TDataSet); -

применяется для подтверждения кэшированных изменений сразу в нескольких НД. Список НД определяется параметром DataSets. В случае указания нескольких НД их имена разделяются запятыми.

procedure Close; -

закрывает БД и все связанные с ней открытые НД.

procedure CloseDatasets; -

закрывает открытые НД, связанные с БД, но не закрывает саму БД.

procedure Commit; -

подтверждает текущую транзакцию, т.е. подтверждает все модификации в БД, имевшие место с момента последнего вызова метода Start Transaction. Если ни одна транзакция не активна, возбуждается исключение.

procedure Open; -

открывает БД, соединяя компонент TDatabase с сервером или BDE для Paradox или dBASE.

procedure Rollback; -

откатывает текущую транзакцию, т.е. отменяет все модификации в БД, имевшие место с момента последнего вызова метода Start Transaction.

procedure StartTransaction;

- инициирует начало транзакции. Если в этот момент активна некоторая транзакция, возбуждается исключение. Транзакционные изменения в наборах БД, имевшие место после выполнения метода StartTransaction, либо подтверждаются методом Commit, либо отменяются методом Rollback. До подтверждения или отмены изменений транзакция, начатая StartTransaction, считается активной.

procedure Append; -

переводит НД в состояние dslnsert, добавляет новую запись с пустыми полями. Применение метода Род! запоминает новую запись в БД после последней записи. Метод рассчитан на неиндексированные НД. Для индексированных НД его выполнение имеет те же последствия, что и выполнение метода Insert.

procedure AppendRecordfconst Values: array of const); -

метод аналогичен последовательному выполнению цепочки "выполнить метод Append", "присвоить значения полям данных из списка", "выполнить метод Post".

procedure Apply Updates; -

применяется для подтверждения кэшированных изменений для отдельного НД.

procedure Cancel; -

отменяет изменения, сделанные в существующей записи (режим dsEdit), или добавление новой записи в БД (режим dslnsert).

procedure CancelUpdates; -

отменяет кэшированные изменения в НД, сделанные с момента последнего выполнения метода ApplyUpdates, либо, если такой метод ни разу не выполнялся, все изменения, сделанные с момента перехода НД в режим кэшированных изменений (CachedUpdates = True).

procedure ClearFields

; - очищает содержимое полей текущей записи набора данных. Если НД не находится в режиме вставки новой записи или редактирования, возбуждается исключение. В случае успешного выполнения вызывается обработчик события OnDalaChange (компонент TDataSource, связанный с НД), поскольку реальное содержимое записи при очистке полей изменяется.

procedure Close; -

закрывает НД;

procedure CommitUpdates; -

применяется для обновления в БД кэшированных изменений, успешно подтвержденных методом Apply Updates. Успешность подтверждения состоит в том, что при подтверждении кэшированных изменений не было выдано ни одной ошибки.

procedure Delete; -

удаляет текущую запись из НД, сдвигая оставшиеся записи "вверх".

procedure DisableControls;

и procedure EnableControls; - отключают и затем восстанавливают связь с визуальными компонентами, связанными с данным НД (например, TDBGrid). Это важно при выполнении действий с НД, влекущих за собой частое изменение местоположения курсора БД, чтобы в визуальном компоненте не возникал эффект "прокрутки" записей и не тратилось время на обновление изменений.

procedure Edit; -

переводит НД в режим редактирования (dsEdit), после чего значения полей можно изменять. Выполнение метода Post приводит к сохранению измененной записи в НД. Выполнение метода Cancel приводит к отказу от сделанных изменений.

function FindFirst: Boolean; -

ищет первую в НД запись, удовлетворяющую фильтру, условие которого определяется обработчиком события OnFi/terRecord или (и) свойством Filter.

function FindLast: Boolean; -

ищет последнюю запись, удовлетворяющую фильтру, условие которого определяется обработчиком события OnFilterRecord или (и) свойством Filter.

function FindNext: Boolean; -

переходит на следующую запись, удовлетворяющую фильтру, условие которого определяется обработчиком события OnFilterRecord или (и) свойством Filter.

junction FindPrior: Boolean; -

переходит на предыдущую запись, удовлетворяющую фильтру, условие которого определяется обработчиком события OnFilterRecord или (и) свойством Filter.

procedure First; -

устанавливает курсор на логически первую запись в наборе данных.

procedure FreeBookmark( Bookmark: TBookmark); -

освобождает системные ресурсы для закладки Bookmark.

function GetBookmark: TBookmark; -

создает для текущей записи закладку и возвращает ссылку на нее;

procedure GotoBookmark( Bookmark: TBookmark); -

перемещает курсор БД на запись, определяемую закладкой Bookmark;

procedure Insert; -

переводит НД в состояние dslnsert, добавляет новую запись с пустыми полями. Метод Post запоминает новую запись в БД после текущей записи. Выполнение метода Cancel приводит к отказу от добавления новой записи.

procedure InsertRecord(const Values: array ofconst); -

аналогична последовательному выполнению цепочки "выполнить метод Insert", "назначить значения полям данных из списка", "выполнить метод Post".

procedure Last; -

устанавливает курсор на логически последнюю запись в наборе данных.

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

Options: TLocateOptions): Boolean; -

осуществляет поиск в НД записи, удовлетворяющей (полностью или частично) условиям KeyValues, в полях, список которых задается KeyFields. При нахождении записи делает ее текущей в НД. В качестве поисковых могут задаваться как индексные, так и неиндексные поля. Текущий индекс значения не имеет.

procedure LockTable(LockType: TLockType); -

накладывает на таблицу БД (Paradox, dBase) блокировку на операции чтения или записи; в дальнейшем блокировка может быть снята методом Unlock Table.

TLockType = (ItReadLock, ItWriteLock);

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

const ResultFields: string): Variant; -

ищет в НД запись, удовлетворяющую условию KeyValues, в полях, список которых задается KeyFields, и возвращает список значений полей, заданных ResultFields. Указатель записи при этом не изменяется. В качестве поисковых могут задаваться как индексные, так и неиндексные поля. Текущий индекс значения не имеет.

function MoveBy (Distance: Integer): Integer; -

перемещает курсор НД на Distance записей к концу набора данных (Distance > 0) или к его началу (Distance < 0) в логическом порядке, определенном индексом (свойство IndexFieldNames или IndexName).

procedure Next; -

перемещает курсор НД на следующую запись в НД в логическом порядке, определенном индексом (свойство IndexFieldNames или IndexName).

procedure Open; •

открывает НД.

procedure Post; -

переводит НД из режимов dsEdit или dslnsert в режим dsBrowse. Измененная (режим dsEdit) или новая запись (режим dslnsert) записывается в НД.

procedure Prior; -

перемещает курсор НД на предыдущую запись в НД в логическом порядке, определенном индексом (свойство IndexFieldNames или IndexName}.

procedure Refresh; -

обновляет НД из таблицы БД; служит для синхронизации нескольких НД, работающих с одной таблицей в одном приложении, а также -в многопользовательском режиме в архитектуре "файл-сервер" - для показа в НД обновлений, внесенных в таблицу другими пользователями.

procedure SelFields (const Values: array ofconst);

- аналогична последовательному выполнению цепочки "выполнить метод Edit", "присвоить значения полям данных из списка", "выполнить метод Post".

procedure UnlockTable(LockType: TLockType); •

снимает с таблицы БД (Paradox, dBase) блокировку на операции чтения или записи, ранее наложенную на таблицу методом Lock Table.

TLockType = (ItReadLock, ItWriteLock);

События property AfterCancel: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Cancel. В момент события изменения в записи уже потеряны. Это событие может не возникнуть в том случае, если вызов обработчика метода Cancel блокирован в силу наступления каких-либо условий в обработчике события BeforeCancel

property AfterClose: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Close или установки свойства Active в False. В момент события НД уже закрыт. Это событие может не возникнуть в том случае, если вызов обработчика метода Close блокирован в силу наступления каких-либо условий в обработчике события BeforeClose.

property AfterDelete: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Delete. В момент события запись уже удалена. Это событие может не возникнуть в том случае, если вызов обработчика метода Delete блокирован в силу наступления каких-либо условий в обработчике события BeforeDelete.

property AfterEdit: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Edit, сразу же после перехода в состояние dsEdit из состояния dsBrowse. В момент события изменения в запись еще не внесены. Это событие может не возникнуть в том случае, если вызов обработчика метода Edit блокирован в силу наступления каких-либо условий в обработчике события BeforeEdit.

property Afterlnsert: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Insert или Append, сразу же после перехода в состояние dslnsert из состояния dsBrowse. В момент события изменения в запись еще не внесены. Это событие может не возникнуть в том случае, если вызов обработчика метода Insert блокирован в силу наступления каких-либо условий в обработчике события Beforelnsert.

Назначить полям добавляемой записи значения по умолчанию можно в методе OnNewRecord.

property AfterOpen: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает немедленно после выполнения метода Open или установки свойства Active в True. В момент события НД уже открыт. Это событие может не возникнуть в том случае, если вызов обработчика метода Open блокирован в силу наступления каких-либо условий в обработчике события BeforeOpen.

property AfterPost: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает после выполнения метода Post. Курсор в момент наступления события не позиционирован на запомненную запись, если НД (в этом случае компонент TTable) ранжирован (отфильтрован) при помощи методов ApplyRange или SetRange свойства Filter или события OnFUterRecord, а запоминаемая запись имеет значения фильтруемых полей, выходящих за диапазон фильтра. В противных случаях курсор указывает на запомненную запись.

Это событие может не возникнуть в том случае, если вызов обработчика метода Post блокирован в силу наступления каких-либо условий в обработчике события BeforePost.

property AfterScroll: TDataSetNotifyEventI;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Событие наступает после перехода на другую запись в НД. property BeforeCancel: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

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

property BeforeClose: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

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

Используется для перевода НД в режим dsBrowse, если на момент закрытия НД находится в режимах dsEdit или dslnsert. В этом случае для перевода НД в режим dsBrowse нужно вызвать метод Post (с запоминанием изменений) или метод Cancel (для отмены изменений).

property BeforeDelete: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

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

property BeforeEdit: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

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

property Beforelnsert: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает перед физическим выполнением метода Insert, но после его вызова.

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

property BeforeOpen: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Наступает перед физическим выполнением метода Open, но после его вызова. В обработчике можно воспрепятствовать выполнению метода Open путем принудительного возбуждения исключительной ситуации, вызова метода Abort или выполнения иных действий, которые заведомо приведут к возбуждению исключения property BeforePost: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

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

property BeforeScroll: TDataSetNotifyEventI;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Событие наступает перед выполнением перехода на другую запись в НД. property OnDeleteError: TDataSet ErrorEvent;

TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction) of object;

TDataAction = (daFail, daAbort, daRetry);

Наступает при неудачном выполнении метода Delete.

property OnCalcFields: TDafaSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Используется для расчета значений вычисляемых полей. Определяет алгоритм, по которому следует рассчитывать значения таких полей. Наступает при чтении информации из ТБД. Кроме того, если свойство AutoCalcFields имеет значение True, событие OnCalcFields наступает также и при модификации значений невычисляемых полей в режимах dslnsert и dsEdit данного НД или НД, с ним связанного (когда установлены ограничения целостности в самой ТБД, а не тогда, когда они подразумеваются).

Поскольку событие OnCalcFields наступает очень часто, его обработчик должен содержать максимально возможно короткий код.

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

property OnEditError: TDataSetErrorEvent;

TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction) of object;

TDataAction = (daFail, daAbort, daRetry);

Наступает при неудачном выполнении методов Insert и Edit. property OnFilterRecord: TFilterRecordEvent;

TFilterRecordEvent = procedure(DataSet: TDataSet; var Accept: Boolean) of object;

Задает условия фильтрации; возникает, когда свойство Filtered устанавливается в True. Альтернативный способ фильтрации по любым” в том числе неиндексным, полям, для свойства Filter. Однако может использоваться совместно с ним, а также с фильтрациями, накладываемыми при помощи методов SetRange и Apply Range.

property OnNewRecord: TDataSetNotifyEvent;

TDataSetNotifyEvent = procedure(DataSet: TDataSet) of object;

Используется для присваивания значений по умолчанию полям вновь создаваемой записи НД перед тем как эта запись станет доступна пользователю для ввода значений полей. Присваивание значений по умолчанию не устанавливает в свойство Modifyed значение True. Наступает после события BeforeInserf и до события Afterlnsert.

property OnPostError: TDataSetErrorEvent;

TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

var Action: TDataAction) of object;

TDataAction = (daFail, daAbort, daRetry);

Наступает при неудачном выполнении метода Post. property OnUpdate Error: TUpdateErrorEvent;

TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;

Наступает в случае, если при попытке подтверждения кэшированных изменений для НД происходит ошибка.

property OnUpdateRecord: TUpdateRecordEvent;

TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;

UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;

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




function SeriesCount : Longint; -

возвращает число серий, присутствующих в текущий момент в графике.

procedure RefreshData; -

обновляет данные в серии из НД, которые служат их источником.


procedure DoKey(Key: DBCtrlGridKey); -

выполняет определенное действие, задаваемое параметром Key. Некоторые из возможных значений этого параметра:

gkNull

Действия нет.

gkEditMode

Перевод в режим редактирования.

gkLeft Moves

Перемещение на 1 колонку влево со скроллингом (если нужен).

gkRight

Перемещение на 1 колонку вправо.

gkUp

Перемещение на 1 запись вверх.

gkDown

Перемещение на 1 запись вниз.

gkScrolIUp

Делает запись в предыдущей строке текущей без изменения ее местоположения.

gkScrollDown

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

gkPage Up

Перемещение к предыдущей странице TDBCtrlGrid.

gkPageDown

Перемещение к следующей странице TDBCtrlGrid.

gkHome

Перемещение на первую запись.

gkEnd Moves

Перемещение на последнюю запись.


• procedure DefaultDrawColumnCell(const Rect: TRect; DataCol: Integer; Column:

TColumn; State: TGridDrawState); -

выводит ячейки TDBGrid стандартным способом (по умолчанию), как это было бы, если бы свойство TDBGrid Default Drawing содержало значение True. Обычно это актуально, если свойство Default Drawing равно False и для вывода содержимого ячеек используется обработчик OnDrawColumnCell или OnDrawDataCell, где некоторые ячейки (строки) могут выводиться нестандартно (иным цветом, шрифтом, фоном, с особенным форматированием значения), а некоторые ячейки должны выводиться стандартным способом. В последнем случае из OnDrawColumnCell или OnDrawDataCell и вызывается метод DefaultDrawColumnCell.

• function ValidFieldIndex(FieldIndex: Integer): Boolean; -

возвращает True, если значение Fieldlndex является правильным индексом столбца TDBGrid, и False -в противном случае.


procedure CloseUp; -

сворачивает распахнутый список выбора.

procedure DropDown; -

раскрывает ("распахивает") список выбора.

Компонент TDBLookupListBox




LoadFromFile(const FileName: string);

загружает в TDBMemo содержимое файла, имя которого определяется константой или переменной FileName.

SaveToFUe(const FileName: string);

записывает содержимое TDBMemo в файл, имя которого определяется константой или переменной FileName.




procedure Clear; -

полностью удаляет текст из компонента.

procedure ClearSelection; -

удаляет выделенный фрагмент текста.

procedure CopyToClipboard; -

копирует выделенный фрагмент текста в буфер обмена Windows.

procedure CutToClipboard; -

вырезает выделенный фрагмент текста и вставляет его в буфер обмена Windows.

junction GetTextLen: Integer; -

возвращает длину текста.

function FindText(const SearchStr: string; StartPos, Length: Integer; Options:

TSearchTypes): Integer; -

производит поиск вхождения в текст комментария строки SearchStr. Поиск производится во фрагменте текста, начиная с позиции StartPos и заканчивая StartPos + Length -1. Первый символ текста комментария имеет номер 0.

Если поиск успешен, возвращается номер символа, начиная с которого SearchStr входит в текст комментария. В противном случае возвращается -1.

Параметр Options представляет собой множество, в которое могут входить элементы:

st Whole Word - строка SearchStr должна содержать целое слово (если занимает фрагмент слова, этот факт при поиске не учитывается);

stMatchCase -

величина букв SearchStr и найденного фрагмента должна совпадать.

procedure LoadMemo; -

загружает содержимое поля комментария в компонент TDBRichEdit. Этот метод необходимо использовать, когда при изменении курсора набора данных не происходит обновления компонента TDBRichEdit содержимым поля комментария текущей записи, т.е. когда свойство AutoDisplay находится в значении False.

procedure PasteFromClipboard; -

вставляет содержимое буфера обмена Windows в текст комментария, начиная с текущей позиции курсора.

procedure Print (const Caption: string); -

выводит текст комментария на печать. Параметр Caption определяет заголовок в очереди печати.

procedure SelectAll; -

выделяет весь текст.


procedure ShowCubeDialog; -

во время выполнения осуществляет вход в редактор куба, в котором могут быть изменены или переопределены свойства куба, установленные во время разработки. Более подробно см. свойство DimensionMap.


procedure RegisterEvents; -

выполняет регистрацию приложения как приемника сообщений от сервера БД о наступлении событий, определяемых свойством Events

procedure UnregisterEvents; -

отключает регистрацию приложения как приемника сообщений от сервера БД о наступлении событий, определяемых свойством Events. Данный метод не может применяться в обработчике события OnEventAlert. Перед выполнением метода в обработчике OnEventAlert полезно установить изменяемый параметр CancelAlerts ъ False.


procedure ExecSQL; -

открывает НД, если в свойстве SQL содержится SQL-запрос на выполнение действия (отличный от оператора SELECT).

procedure Open; -

открывает НД, если в свойстве SQL содержится SQL-запрос на выборку данных (оператор SELECT).

procedure Prepare; -

подготавливает динамический запрос к выполнению.

procedure UnPrepare; -

высвобождает ресурсы, занимаемые запросом, ранее подготовленным к выполнению методом Prepare.


procedure NewPage; -

выполняет переход на новую страницу. Может использоваться в обработчиках событий компонентов отчета BeforePrint или AfterPrint и не может - в обработчиках событий OnPrint, OnStartPage и OnEndPage.

procedure Preview; -

выводит отчет в окно предварительного просмотра. procedure Print; - печатает отчет.

procedure PrinterSetup; -

выдает диалоговое окно установки параметров принтера.


function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; A Color: TColor) : Longint; -

добавляет новую точку в серию. Параметры AXValue и AYValue содержат соответственно значения по осям Х и Y. Параметр AXLabel содержит метку для добавляемой точки серии. Параметр AColor определяет цвет. Функция возвращает позицию новой точки в серии.

function AddY (Const A Y Value: Double; Const AXLabel: String; AColor: TColor):

Longint; -

добавляет в серию новое значение по оси X. Применяется для тех серий, в которых график строится по Х и меткам значений по Х (например, Pie, Bar). Назначение параметров такое же, как у метода AddXY.

procedure Assign Values (Source : TChartSeries); -

копирует все точки из серии Source в текущую серию.

procedure CheckDataSource; -

обновляет точки в серии, независимо от того, какой компонент является источником данных - НД или другая серия. Обновление производится по текущим данным источника. Метод рекомендуется вызывать в случае изменений данных в источнике.

procedure Clear; -

удаляет все значения из серии; если вслед за этим не занести новых точек, будет показываться пустой график.

procedure ColorRange(A ValueList: TChartValueList; Const From Value, To Value:

Double; AColor: TColor); -

изменяет цвет указанного диапазона точек серии. AValueList - либо XValues, либо YValues. FromValue указывает начальное, а То Value конечное значение в списке AValueList. AColor - новый цвет.

function Count: Longint; -

возвращает число точек в серии.

procedure Delete (Valuelndex : Longint); -

удаляет из серии точку с номером ValueIndex. График, к которому принадлежит серия, автоматически перерисовывается.

procedure DoSeriesClick( Valuelndex.•Longint; Button:TMouseB utton; Shift:

TShiftState; X, Y: Integer); virtual; -

инициирует наступление события OnCUck.

function GetCursor Valuelndex : Longint; -

возвращает индекс точки серии в TChart ValueList, ближе всего к которой расположен курсор мыши. Если такую точку определить не удается, возвращается -1.

procedure GetCursor Values ( Var x,y : Double ); -

возвращает значения по X и Y точки графика (а не только серии), ближе всего к которой расположен курсор мыши.;

function GetHorizAxis :• TChartAxis; -

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

function GetVertAxis:TChartAxis; -

возвращает указатель на вертикальную ось.

function MaxX Value: Double; virtual; -

возвращает максимальное значение по X.

function MinXValue : Double; virtual; -

возвращает минимальное значение по X.

function MaxY Value: Double; virtual; -

возвращает максимальное значение по Y. function MinYValue: Double; virtual; - возвращает минимальное значение по Y.

procedure RefreshSeries; -

обновляет значения серии из источника данных, указанного в свойстве DataSource.

procedure Repaint; -

приводит к полной перерисовке всего графика. Рекомендуется вызывать этот метод в случае изменения хотя бы одного из основополагающих свойств серии (например, при изменении значения в DataSource и др.).

function ValuesListCount:Longint; -

возвращает количество используемых в серии списков значений точки. Обычно это 2 списка (XValues и YValues), но некоторые серии используют 3 (BubbleSeries - XValues, YValues, Radius; GanttSeries -Y, Start, End).

function VisibleCount: Longint; -

возвращает количество видимых на графике точек серии,


procedure AddPassword(const Password: string); -

добавляет пароль.

procedure CloseDatabase (Database: TDatabase); -

закрывает открытую БД, определяемую параметром Database. Принудительное закрытие БД практикуется достаточно редко, поскольку закрытие всех открытых БД производится при окончании работы приложения.

procedure DropConnections; -

разрывает имеющиеся соединения с БД в рамках сессии.

function FindDatabase (const DatabaseName: string): TDatabase; -

пытается отыскать БД (компонент TDatabase} в коллекции TSession. Databases (коллекция открытых БД). Имя искомой БД определяется строковым параметром DatabaseName. Если в коллекции открытых БД сессии имеется такая БД, у которой значение DatabaseName совпадает с параметром DatabaseName метода FindDatabase, в качестве результата возвращается указатель на найденный компонент TDatabase. В противном случае (поиск неудачен) возвращается nil.

procedure Get AliasNamesf List: TStrings); -

очищает список List и затем заносит в него список псевдонимов БД , определенных в BDE.

procedure GetAliasParams(const AliasName: string; List: TStrings); -

очищает список List и затем помещает в него параметры псевдонима, определяемого строкой AliasName.

procedure GetDriverNames(List: TStrings); -

очищает список List и затем заносит в него информацию об установленных на текущий момент драйверах BDE. Заметим, что драйверов 'PARADOX' и 'DBASE' не существует, поскольку эти СУБД управляются драйвером 'STANDARD'.

procedure GetDriverParams(const DriverName: string; List: TStrings); -

очищает список List и затем заносит в него умалчиваемые параметры для драйвера, указанного в параметре DriverName. В случае использования Paradox или dBASE (DriverName = 'STANDARD'), в списке указывается только один параметр - 'РАТН='. Драйверы SQL-СУБД могут иметь переменное число параметров.

function GetPassword: Boolean; -

реализует принудительный вызов стандартного диалога ввода паролей.

procedure GetTableNames (const DatabaseName, Pattern: string; Extensions, SystemTables: Boolean; List: TStrings); -

очищает список List и добавляет в него имена всех таблиц, определяемых параметром DatabaseName. Если необходимо добавить имена только некоторых таблиц, шаблон их имени указывается параметром Pattern. Значение параметра System Tables, равное True, включит в состав таблиц, чьи имена занесены в List, имена системных таблиц (для удаленных баз данных). Установка в True параметра Extensions приведет к включению в имена таблиц расширений имени файла.

function OpenDatabase(const DatabaseName: string): TDatabase; -

пытается отыскать компонент TDatabase, у которого свойство DatabaseName совпадает с параметром DatabaseName метода FindDatabase. В случае успеха возвращается указатель на найденный и открытый компонент TDatabase; если такой компонент не существует, он создается, открывается и указатель на него возвращается в качестве результата работы метода.

procedure RemoveAllPasswords; -

удаляет все пароли.

procedure RemovePassword(const Password: string); -

удаляет конкретный пароль.


procedure ApplyRange; -

осуществляет фильтрацию записей в TTable. Условия фильтрации определяются SetRangeStart и SetRangeEnd.

procedure CancelRange; -

отменяет режим фильтрации. НД возвращается к неотфильтрованному состоянию.

procedure DeleteTable; -

физически удаляет ТБД из базы данных. Метод применим только к закрытым НД.

procedure EditKey; -

используется для перевода в состояние dsSetKey, если ранее для поиска с использованием GoToKey или GoToNearest по этому же индексу использовался SetKey.

procedure EditRangeEnd;

- позволяет изменить верхнюю границу фильтра, ранее установленную при помощи SetRangeEnd.

procedure EditRangeStart;

- позволяет изменить нижнюю границу фильтра, ранее установленную при помощи SetRangeStart.

procedure Empty Table; -

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

function FindKey (const Key Values: array ofconst): Boolean; -

осуществляет поиск в НД записи, у которой индексные поля текущего индекса НД содержат те же значения, что и Key Values. Если запись найдена, курсор НД перемещается на нее и метод возвращает True. В противном случае местоположение курсора не изменяется и метод возвращает False.

procedure FindNearest(const Key Values: array ofconst); -

осуществляет поиск в НД записи, у которой индексные поля текущего индекса НД содержат те же значения, что и Key Values. Если запись найдена, курсор НД перемещается на нее. В противном случае курсор перемещается на запись с большим значением индекса.

procedure GotoCurrent (Tablet: TTable); -

устанавливает курсор БД набора данных Table 1 на ту же запись, на которой находится курсор БД набора данных Table2. Это важно в тех случаях, когда при одновременной работе с одной и той же ТБД выгодно применять два или более НД. В этом случае требуется совместить курсоры БД двух НД, чтобы работа производилась с одной и той же физической записью ТБД.

function GotoKey: Boolean; -

аналогичен FindKey, однако значения индексных полей должны быть установлены явно (через Fields [индекс}, FieldByName или имя поля}.

procedure GotoNearest; -

аналогичен FindNearest, однако значения индексных полей должны быть установлены явно (через Fields [индекс], FieldByName или имя поля).

procedure SetKey; -

переводит НД в состояние dsSetKey поиска записи. Метод используется явно для методов поиска на точное соответствие GoToKey и неточное соответствие GoToNearest, дублирующих методы FindKey и FindNearest (при их выполнении SetKey вызывается неявно).

procedure SetRange (const Start Values, EndValues: array ofconst); -

имеет тот же эффект, как и применение SetRangeStart, Set Range End” Apply Range. В качестве параметра используются массивы констант, каждый из которых содержит значения ключевых полей.

procedure SetRangeEnd; -

устанавливает, что определяемое ниже значение ключевого поля (полей) будет рассматриваться как верхняя граница фильтра;

procedure SetRangeStart; -

устанавливает, что определяемое ниже значение ключевого поля (полей) будет рассматриваться как нижняя граница фильтра;


procedure SetParams(UpdateKind: TUpdateKind); -

используется для установки значений параметров SQL-оператора, который должен обновить кэшированные изменения записи НД. Вид соответствующего оператора выбирается из свойств InsertSQL, ModifySQL, DeleteSQL компонента TUpdateSQL и определяется параметром UpdateKind.

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

procedure ExecSQL (UpdateKind: TUpdateKind); -

выполняет SQL-оператор для записи результатов кэшированных изменений в физическую ТБД. Вид соответствующего оператора выбирается из свойств InsertSQL, ModifySQL, DeleteSQL компонента TUpdateSQL и определяется параметром UpdateKind.

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

procedure Apply (UpdateKind: TUpdateKind); -

объединяет в себе функциональность методов SetParams и ExecSQL. В соответствии со зныачением параметра UpdateKind определяет требуемый SQL-оператор, заносит действительные значения в параметры этого оператора и затем выполняет сам оператор.

Объявление локальных переменных


DECLARE VARIABLE <имя переменной > <тип данных>;



Объявление UDF (функций, определяемых пользователем) в базе данных


DECLARE EXTERNAL FUNCTION ИмяФункции

[<Тип данных> | CSTRING (число) [, <Тип данньк> | CSTRING (число) ...]]

RETURNS {< Тип данных > [BY VALUE] | CSTRING (число)}

ENTRY_POINT "<Имя функции в DLL>"

MODULE_NAME "< Имя DLL >";



Обращение к хранимой процедуре (утилита WISQL)


EXECUTE PROCEDURE имя [параметр [, параметр ...]];



Ограничение, накладываемое на значения полей, ассоциированных с доменом


<огранич_домена> = {

VALUE <оператор> <значение>

VALUE [NOT] BETWEEN <значение1> AND <значение2>

VALUE [NOT] LIKE <значение> [ESCAPE <значение>]

VALUE [NOT] IN (<значение1> [, <значение2> ...])

VALUE IS [NOT] NULL

VALUE [NOT] CONTAINING <значение>

VALUE [NOT] STARTING [WITH] <значение>

(<огранич_домена>)

NOT <огранич_домена>

<огранич_домена> OR <огранич_домена>

<огранич домена> AND <огранич домена>

}

где <оператор> = {= | < | > | <= | >= [ !< | !> | о | !=}



Ограничения на значения столбца


CHECK (<условия_поиска>)

<условия поиска> =

{<значение> <оператор> {<значение1> | (<выбор_одного>)}

I <значение> [NOT] BETWEEN <значение1> AND <значение2>

<значение> [NOT] LIKE <значение> [ESCAPE <значение>]

| <значение> [NOT] IN (<значение1> [, <значение2> ...]

I <выбор_многих>)

I <значение> IS [NOT] NULL

| <значение> {[NOT] {= I < I >} >= | <=}

{ALL | SOME | ANY} (<выбор_многих>)

EXISTS (<выражение_выбора>)

SINGULAR (<выражение_выбора>)

<значение> [NOT] CONTAINING <значение1>

| <значение> [NOT] STARTING [WITH] <значение1>

I (<условия_поиска>)

I NOT <условия_поиска>

I <условия_поиска> OR <условия_поиска>

<условия_поиска> AND <условия_поиска>}

<значение> = {столбец | <константа> | <выражение> | <функция>

I NULL | USER I RDB$DB_KEY

} [COLLATE collation]

<константа> = число | "строка"

<функция> = {

COUNT (* I [ALL] <значение> I DISTINCT <значение>)

SUM ([ALL] <значение> | DISTINCT <значение>)

AVG ([ALL] <значение> | DISTINCT <значение>)

МАХ ([ALL] <значение> | DISTINCT <значение>)

MIN ([ALL] <значение> | DISTINCT <значение>)

CAST (<значение> AS <тип_данных>)

UPPER (<значение>)

GEN_ID (генератор, <значение>)

}

<оператор> = {= | < | > | <= ( >= | !< f !> | <> | !=}

<выбор_ одного =

оператор SELECT, возвращающий одно значение или ни одного.

<выбор многих>

= оператор SELECT, который может возвращать более одного значения (список значений) или ни одного. <выражение_выбора> = оператор SELECT , который может возвращать более одного значения (список значений) или ни одного.

Оператор циклической выборки


FOR

<оператор SELECT>

DO

<составной оператор>;



Оператор выбора SELECT


Стандартный оператор SELECT InterBase, расширенный за счет предложения INTO

SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2> ...]}

FROM <таблица1> [, < таблица2> ...]

[WHERE <условия поиска>]

[GROUP BY столбец [COLLATE collation]

[,столбец! [COLLATE collation] ...]

[HAVING < условия_поиска >]

[UNION <onepaTop_select>]

[PLAN <план_ выполнения_запроса>]

[ORDER BY <список_столбцов>]

INTO :переменная [, переменная...]



Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей


[CONSTRAINT <имя ссылочной целостности>]

FOREIGN KEY (<список столбцов внешнего ключа>)

REFERENCES <имя родительской таблицы> [<список столбцов

родительской таблицы>]



Определение типа данных


<тип_данных> = {

{SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}

[<размерность_массива>]

I {DECIMAL | NUMERIC} [(точность [, масштаб])]

[<размерность_массива>]

I DATE [<размерность массива>]

I {CHAR I CHARACTER | CHARACTER VARYING I VARCHAR}

[(целое)] [<размерность_массива>] [CHARACTER SET набор_символов]

I {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}

[VARYING] [(целое)] [<размерность_массива>]

I BLOB [SUB_TYPE {целое | имя_подтипа}] [SEGMENT SIZE целое]

[CHARACTER SET набор_символов]

I BLOB [(длина_сегмента [, подтип])]}



Отъем привилегий


REVOKE [GRANT OPTION FOR]{

{ALL [PRIVILEGES] | SELECT | DELETE | INSERT

I UPDATE [(столбец [.столбец ...])]}

ON [TABLE] {ИмяТаблицы | ИмяПросмотра}

FROM {<объект> | <список пользователей>}

I EXECUTE ON PROCEDURE ИмяПроцедуры

FROM {<объект> | < список пользователей >}

};



Предоставление привилегий доступа к таблицам БД, просмотрам, вызовам процедур


GRANT{

{ALL [PRIVILEGES] | SELECT DELETE | INSERT I UPDATE [(столбец [,столбец ...])]}

ON [TABLE] {ИмяТаблицы | ИмяПросмотра}

TO {<объект> | <список_пользователей>}

I EXECUTE ON PROCEDURE procname

TO {<объект > | < список_пользователей>}

};

<объект > = PROCEDURE ИмяПроцедуры | TRIGGER ИмяТриггера |

VIEW ИмяПросмотра | [USER] ИмяПользователя | PUBLIC [, <объект>]

< список_пользователей > = [USER] ИмяПользователя[, [USER]

ИмяПользователя...] [WITH GRANT OPTION]



Свойства, методы, события


Свойства, методы, события.
Компонент TDataBase *
Свойства *
Методы *
События *
Свойства *
Методы *
Компонент TDBChart *
Свойства *
Методы *
Компонент TDBCheckBox *
Свойства *
События *
Компонент TDBComboBox *
События *
Компонент TDBCtriGrid *
Свойства *
Методы *
События *
Компонент TDBEdit *
Свойства *
События *
Компонент TDBGrid *
Свойства *
Методы *
События *
Компонент TDBListBox *
Свойства *
События *
Компонент TDBLookupComboBox *
Свойства *
Методы *
Свойства *
Компонент TDBMemo *
Свойства *
Методы *
Компонент TDBRadioGroup *
Свойства *
События *
Компонент TDBRichEdit *
Свойства *
Методы *
События *
Компонент TDBText *
Свойства *
Компонент TDecisionCube *
Свойства *
Методы *
События *
Компонент TdecisionGrid *
Свойства *
События *
Компонент TDecisionPivot *
Свойства *
Компонент TDecisionSource *
Свойства *
События *
Компонент TField *
Свойства *
События *
Компонент TIBEventAlerter *
Свойства *
Методы *
События *
Компонент TQuery *
Свойства *
Методы *
Компонент TQRBand *
Свойства *
События *
Компонент TQRExp *
Свойства *
Компонент TQRGroup *
Свойства *
Компонент TQRSubDetail *
Свойства *
Компонент TQRSysData *
Свойства *
Компонент TQuickRep *
Свойства *
Методы *
События *
Компонент TChartSeries *
Свойства *
Методы *
События *
Компонент TSession *
Свойства *
Методы *
События *
Компонент ТТаblе *
Свойства *
Методы *
Компонент TUpdateSQL *
Свойства *
Методы *

В. Формат SQL-операторов (СУБД InterBase) База данных *


Создание базы данных *

Определение типа данных *

Домены *

Создание домена *

Ограничение, накладываемое на значения полей, ассоциированных с доменом *

Изменение определения домена *

Таблицы базы данных *

Определение первичного ключа *

Определение уникального ключа *

Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей *

Ограничения на значения столбца *

Добавление нового столбца в таблицу БД *

Добавление новых ограничений целостности *

Удаление столбца (столбцов) из таблицы БД *

Удаление ограничений целостности *

Удаление таблицы БД целиком *

Индексы *

Создание индекса *

Деактивизация индекса *

Активизация индекса *

Вычисление показателя "полезности" индекса *

Удаление индекса *

Выборка данных из таблиц БД *

Изменение данных *

Добавление записей *

Изменение записей *

Просмотры *

Создание просмотра *

Удаление просмотра *

Хранимые процедуры *

Создание хранимой процедуры *

Обращение к хранимой процедуре (утилита WISQL) *

Тело процедуры *

Изменение хранимой процедуры *

Удаление хранимой процедуры: *

Алгоритмический язык триггеров и хранимых процедур *

Объявление локальных переменных *

Оператор присваивания *

Условный оператор *

Оператор выбора SELECT *

Оператор циклической выборки *

Принудительная выдача выходных параметров (только хранимые процедуры) *

Оператор цикла *

Выход из процедуры, триггера *

Вложенный вызов другой хранимой процедуры *

Инициация наступления события *

Обращение к старому и новому значениям столбца (только триггеры) *

Триггеры *

Создание триггера *

Структура тела триггера *

Изменение существующего триггера *

Удаление триггера *

Генераторы *

Создание генератора *

Установка стартового значения генератора *

Транзакции *

Старт транзакции *

События *

Инициация наступления события *

UDF (Функции, определяемые пользователем) *

Объявление UDF (функций, определяемых пользователем) в базе данных *

Привилегии доступа *

Предоставление привилегий доступа к таблицам БД, просмотрам, вызовам процедур *

Отъем привилегий *

Приложение В.



Принятые сокращения


БД - база данных

НД -

набор данных

ТБД -

таблица базы данных

СУБД -

система управления базами данных

BDE

- Borland Database Engine, машина баз данных фирмы Borland

DBD -

Database Desktop, утилита в составе Delphi для создания таблиц БД, просмотра и изменения данных в таблицах БД

SQL -

Structured Query Language, язык структурированных запросов к реляционным базам данных

Ro -

при описании свойств компонентов Delphi означает read only, то есть свойство доступно только для чтения

Rt-

при описании свойств компонентов Delphi означает run time, то есть свойство доступно только во время выполнения приложения и не доступно во время его разработки

S : = ' '


// Обработка ошибки через Message

IF POS('FOREIGN',E.Message) > 0 THEN

S := 'Нарушение целостности БД. Для старого значения поля TOVAR '

+ 'есть дочерние записи в таблице "Расход" '

ELSE

IF POS('Key violation',E.Message) > 0 THEN

S := 'Нарушение уникальности поля ТОВАР'

ELSE

S := 'Другая ошибка';

ShowMessage (S);

end;

Параметр Е : свойство ErrorCode

Если привести параметр Е к типу EDBEngineError простой операцией приведения типов:

EBDEngineError(Е)

можно воспользоваться свойствами класса EDBEngineError:

property Errors(Index: Integeri: TDBError; -

список ошибок в стеке ошибок Borland Database Engine. Номер первой ошибки 0. Номер последней ошибки равен значению свойства ErrorCount, уменьшенному на 1.

property ErrorCount: Integer; -

содержит общее число ошибок в стеке BDE.

property ErrorCode: DBIResult; -

возвращает код ошибки типа Word.

В каталоге, в котором располагается Delphi, в подкаталоге \DOC\ в файле bde.int определяются коды ошибок, возвращаемые методом ErrorCode. Код ошибки имеет тип Word и обычно определяется как сумма категории ошибки и самой ошибки.

Код категории ошибки можно получить при помощи функции (модуль BDE.pas)

function ErrCat(ErrorCat: Word): Word;

Код ошибки внутри данной категории можно получить при помощи функции (модуль BDE.pas)

function ErrCode(ErrorCode: Word): Word;

Пример

использования:

procedure TForm1.TovaryUpdateError(DataSet: TDataSet; Е:

EDatabaseError;

UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);

var S : String;

PartCat, PartCode : Word;

begin

S:=' '

//обработка ошибки через ErrCode

IF Е is EDBEngineError THEN

WITH EDBEngineError (Е) do begin

PartCat := ErrCat(EDBEngineError(Е).Errors

[ErrorCount - 1].ErrorCode);

PartCode := ErrCode(EDBEngineError(Е).Errors

[ErrorCount - 1].ErrorCode);

IF PartCat = ERRCAT_INTEGRITY THEN

S := 'Нарушение целостности базы';

IF PartCat = ERRCAT_DATACORRUPT THEN

S := 'Физическое разрушение данных';

IF PartCat = ERRCAT_IO THEN

S := 'Ошибка операции ввода-вывода';

{...}

IF PartCat = ERRCAT_OTHER THEN S := 'Ошибка категории ERRCAT_OTHER';

ShowMessage('Произошла ошибка типа = ' + S) ;

END;//with

end;

Свойства OldValue и New Value

При использовании кэшированных изменений доступны следующие свойства компонента Tfield: поле таблицы БД или для серверных СУБД -столбец таблицы БД.

property OldValue: Variant;

Содержит исходное значение поля (столбца), то есть значение, имевшее место до каких-либо изменений. После того, как кэшированные изменения были успешно подтверждены, старое значение поля (столбца) извлечь становится невозможным.

property New Value: Variant;

Содержит новое значение поля (столбца) после внесения в поле каких-либо изменений. В том случае, когда при попытке подтверждения кэшированных изменений происходит ошибка, в обработчике OnUpdateError можно программно скорректировать значение New Value и повторить попытку подтверждения изменений, указав UpdateAction = uaRetry.



SELECT ..FROM


В простейшем случае оператор SELECT имеет вид

SELECT {* | <значение1> [, <значение2> ...]}

FROM <таблица1> [, < таблица2> ...]

После ключевого слова FROM приводится список ТБД, из которых будет происходить выборка данных.

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

Пример.

Выдать набор данных, состоящий из всех столбцов и всех записей из таблицы RASHOD (рис. 25.1).

SELECT * FROM RASHOD

что эквивалентно

SELECT N_RASH, DAT_RASH, KOLVO, TOVAR, POKUP FROM RASHOD



SELECT POKUP || ' (' || GOROD || ')' FROM POKUPATELI


COLUMN1

Лира ТОО (МОСКВА)

[Саяны ИЧП (Москва]

[Адмирал АО (С Петербург)

| Геракл (Уфа]

Рис 25.58



Следует всегда помнить, чем условие


ЗАМЕЧАНИЕ. Следует всегда помнить, чем условие в HAVING отличается от условия в WHERE:

• HAVING исключает из результирующего НД группы с результатами агрегированных значений;

• WHERE исключает из расчета агрегатных значений по группировкам записи, не удовлетворяющие условию;

• в условии поиска WHERE нельзя указывать агрегатные функции.

Пример.

Выдать на каждую дату число отпусков товаров, в которых количество отпускаемого товара больше или равно 1000 единиц (результат на рис. 25.21). SELECT DAT_RASH,COUNT(*) FROM RASHOD

WHERE KOLVO >= 1000 GROUP BY DAT RASH

Пример.

Выдать даты отпусков товаров, в которых количество отпускаемого товара больше или равно 1000 единиц. В результирующий НД включить только те группы, по которым число таких отпусков товаров больше 1 (результат на рис. 25.22). SELECT DAT_RASH,COUNT(*) FROM RASHOD

WHERE KOLVO >= 1000 GROUP BY DAT_RASH HAVING COUNT(*) > 1



property OnLogin:


property OnLogin: TLoginEvent;
TLoginEvent = procedure(Database: TDatabase; LoginParams: TStrings) of object;
Событие OnLogin возникает, когда компонент TDatabase начинает сессию соединения с SQL-сервером.
Наборы данных
(компоненты TDataSet, TBDEDataSet, TDBDataSet)


property OnClick: TNotifyEvent;
TNotify Event = procedure(Sender: TObject) of object;
наступает, если на компоненте TDBCheckBox щелкнуть мышью. Поскольку именно таким образом происходит снятие отметки или отметка компонента, данное событие может использоваться для оценки изменения значения свойства Checked.
property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при получении компонентом фокуса управления.
property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при утрате компонентом фокуса управления.


property OnClick: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при одиночном щелчке мышью на компоненте.
property OnDblClick: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при двойном щелчке мышью на компоненте.
property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при получении компонентом фокуса управления.
property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
наступает при утрате компонентом фокуса управления.


property OnMouseDown: TMouseEvent;
TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift:TShiftState;
X, Y: Integer) of object;
TShiftState = set of(ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
TMouseButton = (mbLeft, mbRight, mbMiddle);
Наступает, когда пользователь нажимает кнопку мыши, находясь при этом на TBCtr/Grid.
property OnMouseUp: TMouseEvent;
TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState;
X, Y: Integer) of object;
TShiftState = set of(ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
TMouseButton = (mbLeft, mbRight, mbMiddle);
Наступает, когда пользователь отпускает нажатую ранее кнопку мыши, находясь при этом на TBCtrlGrid.
property OnPaintPanel: TPaintPanelEvent;
TPaintPanelEvent = procedure(DBCtrlGrid: TDBCtrlGrid; Index: Integer) of object;
Наступает для каждой панели TDBCtrlGrid перец ее показом. Обработчик этого события может управлять рисованием панели. Параметр TDBCtrlGrid показывает, какой именно TDBCtrlGrid рисуется в данный момент; параметр Index определяет индекс рисуемой панели.


property OnChange: TNotifyEvent;
TNotify Event = procedure(Sender: TObject) of object;
Наступает при изменении значения в поле.
property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при получении фокуса ввода компонентом TDBEdit.
property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при утрате фокуса ввода компонентом TDBEdit.


•property OnColEnter: TNotifyEvent;
type TNotifyEvent = procedure(Sender: TObject) of object;
Наступает в момент, когда столбец становится текущим. Наступает после события OnColExit.
• property OnColExit: TNotifyEvent;
type TNotifyEvent = procedure(Sender: TObject) of object;
Наступает в момент, когда столбец теряет фокус ввода. Наступает перед событием OnColEnter.
•property OnColumnMoved: TMovedEvent;
type TMovedEvent = procedure (Sender: TObject; FromIndex, ToIndex: LongInt) of object;
Наступает после перетаскивания столбца TDBGrid на новую позицию в TDBGrid.
•property OnDblClick: TNotifyEvent;
TNotifyEvent = procedure (Sender: TObject) of object;
Наступает после двойного щелчка мышью в тот момент, когда TDBGrid обладает фокусом ввода.
•property OnDrawColumnCeU: TDrawColumnCellEvent;
TDrawColumnCellEvent = procedure (Sender: TObject; const Rect: TRect; DataCol:
Integer; Column: TColumn ; State: TGridDrawState) of object;
TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
Наступает при выводе каждой ячейки TDBGrid. Если значение свойства DefaultDrawing равно True, свойство вызывается уже после графической прорисовки ячейки. Если свойство DefaultDrawing равно False, обработчик данного события служит для хранения кода, который обеспечивает прорисовку ячейки. При этом, если некоторые ячейки должны выводиться стандартным способом (как если бы DefaultDrawing было равно True), из обработчика OnDrawColumnCeU вызывается метод DefaultDrawColumnCell.
•property OnDrawDataCell: TDrawDataCellEvent;
TDrawDataCellEvent = procedure (Sender: TObject; const Rect: TRect; Field:
TField; State: TGridDrawState) of object;
TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
Введен для обратной совместимости с более ранними версиями. Наступает для TDBGrid, у которых свойство State = csDefault. Этот обработчик не нужно использовать в 32-разрядных приложениях.
•property OnEditButtonClick: TNotifyEvent;
type TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при нажатии кнопки (...) в режиме редактирования в ячейке постоянного столбца TDBGrid. Свойство BuffonSty/e данного постоянного столбца должно быть установлено в cbsEllipse.
•property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает, когда TDBGrid получает фокус ввода.
•property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает, когда TDBGrid теряет фокус ввода.
•property OnKeyDown: TKey Event;
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
TShiftState = set of(ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Наступает, когда пользователь нажимает любую клавишу или комбинацию клавиш на клавиатуре (но еще не отпустил).
•property OnKeyDown: TKeyEvent;
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble):
Наступает, когда пользователь нажимает отдельную клавишу (цифрового и;
алфавитного символа) на клавиатуре, а также комбинацию клавиш, котор;
приводит к формированию кода цифрового или алфавитного символа.
•property OnKeyUp: TKeyEvent;
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) i object;
TShiftState = set of(ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Наступает, когда пользователь отпускает любую клавишу или комбинаци клавиш на клавиатуре, которую он нажал ранее.


property OnClick: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при одиночном щелчке мышью на компоненте TDBListBox. property OnDblClick: TNotifyEvent;
TNotifyEvent = procedure( Sender: TObject) of object;
Наступает при двойном щелчке мышью на компоненте TDBListBox. property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при получении компонентом фокуса ввода. property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при утрате компонентом фокуса ввода.


property OnChange: TNotifyEvent
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при изменении значения поля, связанного с компонентом TDBRadioGroup.
property OnEnter: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при получении компонентом фокуса ввода. property OnExit: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при утрате компонентом фокуса ввода.


property OnProtectChange: TRichEditProtectChange;
TRichEditProtectChange =
procedure (Sender: TObject; StartPos, EndPos: Integer; varAllowChange: Boolean) of object;
Наступает, если пользователь пытается изменить защищенный текст. Параметры StartPos и EndPos содержат границы защищенного текста. Установка в True изменяемого параметра Allay/Change разрешает изменять защищенный текст.
В обработчике данного события можно предусмотреть и такие действия, как снятие атрибута защищенного текста.
property OnResizeRequest: TRichEditResizeEvent;
TRichEditResizeEvent = procedure(Sender: TObject; Rect: TRect) of object;
Наступает при изменении размера шрифта. Параметр Rect содержит сведения о новых границах изменяемого текста (в экранных координатах).
property OnChange: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при изменении текста.


property OnLowCapacity: TCapacityErrorEvent;
TCapacityErrorEvent = procedure(var Action: TErrorAction) of object;
TErrorAction = (eaFail, eaContinue);
Наступает в случае, когда не хватает памяти в кэше для хранения многомерных данных. Максимальный размер кэша устанавливается в свойстве Capacity.
property OnRefresh: TCubeRefreshEvent;
TCubeRefreshEvent = procedure(DataCube: TCustomDataStore; DimMap:
TCubeDims) of object;
Наступает перед изменением плана куба. Это происходит после изменения параметров куба во время выполнения (см. метод ShowCubeDialog}.


TDecisionDrawCellEvent = procedure (Sender: TObject; Col, Row: Longint;
var Value: string; varAFont: TFont; varAColor: TColor; AState: TGridDrawState;
ADrawState: TDecisionDrawState) of Object;
наступает при прорисовке ячейки в TDecisionGrid. Параметры:
Col - номер столбца;
Row - номер строки;
Value - символьное представление значения, показываемого в ячейке;
A Font -
шрифт, которым показывается значение в ячейке; A Color - цвет фона, которым показывается значение в ячейке;
AState -
состояние ячейки. TGridDrawState = set of (gdSelected, gdFocused, gdFixed); ADrawState -
множество, определяющее вид данных, показываемых в ячейке. Может включать в себя значения: • dsGroupStart - ячейка - первая строка или столбец для измерения. В этом случае в множество ADrawState входят также значения dsRow Value или dsColValue.
• dsRowCaption - в ячейке показывается заголовок строки, то есть имя измерения, значения которого показываются горизонтально.
• dsColCaption - в ячейке показывается заголовок столбца, то есть имя измерения, значения которого показываются вертикально.
• dsSum - в ячейке показывается метка или значение промежуточной суммы. В этом случае в множество ADrawState входят также значения dsRow Value, dsCol Value и dsData.
• dsRow Value - в ячейке показывается одно из значений измерения (метка), а не собственно данные. Название измерения в этом случае расположено в ячейке слева.
• dsColValue - в ячейке показывается одно из значений измерения (метка), а не собственно данные. Название измерения в этом случае расположено в ячейке сверху.
• dsData - в ячейке показываются только данные.
• dsOpenAfter - ячейка имеет знак "+" в правой части, использующийся для раскрытия данных по следующему измерению. В этом случае в множество ADrawState входят также значения dsRowCaption, dsColCaption, dsRow Plus и dsColPlus.
• dsCloseAfter - ячейка имеет знак "-" в правой части, использующийся для сокрытия данных по следующему измерению. В этом случае в множество ADrawState входят также значения dsRowCaption, dsColCaption, dsRowPlus и dsColPlus.
• dsRowIndicator - ячейка используется только для показа знаков "+" или "-", и располагается в самом левом столбце TDecisionGrid.
• dsColIndicator - ячейка используется только для показа знаков "+" или "-", и располагается в самой верхней строке TDecisionGrid.
• dsRowPlus - ячейка, определяемая dsRowIndicator, содержит значение "+". Появляется только совместно с dsRowIndicator.
• dsColPlus - ячейка, определяемая dsColIndicator, содержит значение "+". Появляется только совместно с dsColIndicator.
• dsNone - у ячейки нет никакого предназначения.
property OnDecisionExamineCell: TDecisionExamineCellEvent;
TDecisionExamineCellEvent = procedure (Sender: TObject; ICol, IRow: LongInt;
ISum: Integer; const ValueArray: TSmallIntArray) of Object;
Наступает, когда пользователь, находясь в ячейке данных, нажимает правую кнопку мыши. Параметры:
ICol - номер столбца ячейки;
IRow - номер строки ячейки;
ISum -
номер текущей суммы; ValueArray -
массив координат в координатной сетке TDecisionSource (а не TDecisionGrid). Для получения имени измерения, соответствующего конкретному элементу массива, следует использовать метод GetDimensionNamej. property OnTopLeftChanged: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при скроллинге данных в сетке TDecisionGrid.


property OnBeginPivot: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает перед изменением данных в кубе, что имеет место при нажатии (отжатии) кнопки, соответствующей измерению куба, в компоненте TDecisionPivot или при раскрытии/свертке данных по измерению в TDecisionGrid путем изменения знака "+" около названия измерения на "-", и наоборот. Событие наступает тогда, когда изменения данных в кубе уже осуществлены, но еще не актуализированы.
property OnEndPivot: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Событие вызывается той же причиной, что и событие OnBeginPivot, однако наступает после актуализации изменения данных в кубе.
property OnLayoutChange: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает после изменения схемы данных в кубе (после события OnBeginPivot, но перед событием OnEndPivot) и только в том случае, когда данные в кубе остаются теми же. При изменении состава измерений, которое сопровождается изменением данных в кубе, наступает событие OnNewDimensions.
property OnNewDimensions: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает после изменения данных в кубе. property OnStateChange: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает после изменения свойств куба (компонент TDecisionCube).


property OnGetText: TFieldGetTextEvent;
TFieldGetTextEvent = procedure(Sender: TField; var Text: string; Display Text:
Boolean) of object;
Наступает при показе содержимого поля в визуальных компонентах, связанных с БД. Например, для ТБД, показываемой в TDBGrid, это событие вызывается для каждой записи.
Используется для форматирования значения поля, чтобы оно показывалось в виде, отличном от того, в котором оно хранится в БД.
property OnSetText: TFieldSetTextEvent;
TFieldSetTextEvent = procedure(Sender: TField; const Text: string) of object;
Наступает всякий раз, когда значение поля изменено. Отличие события от события On Validate в том, что если определен обработчик для OnSetText, новое значение в поле автоматически не заносится и это должен сделать программист.
Иными словами, если в обработчике этого события новое значение программно не заносится в поле, в нем остается старое значение. Для обработчика события On Validate это достигается методом Abort или путем возбуждения исключительной ситуации.
property On Validate: TFieldNotify Event;
TFieldNotifyEvent = procedure(Sender: TField) of object;
Наступает после любого изменения значения поля, произведенного вручную или программно (это относится и к вводу значения в поле при создании новой записи). Служит для контроля правильности значений поля, если на него накладываются какие-либо ограничения. Событие возникает перед выполнением метода Post, физически записывающего измененную запись в ТБД. В случае несоответствия значения поля накладываемым ограничениям выполнение Post (и, следовательно, запоминание в БД записи с неверным полем) можно предотвратить, используя метод Abort или принудительно возбудив исключительную ситуацию (rais'е Exception. Create).
Событие возникает после события OnSetText.
property OnChange: TFieldNotifyEvent;
TFieldNotifyEvent = procedure(Sender: TField) of object;
Наступает в случае изменения значения в поле. Обработчик служит тем же целям, что и обработчик события On Validate. Событие возникает после события On Validate.
Исключения
EDBEditError -
возбуждается в случае, если поле, требующее обязательного ввода в него значения (свойство Required = True), на момент запоминания в таблице БД (на момент выполнения метода Post) содержит пустое значение.


procedure OnEventAlert: TEventAlert;
TEventAlert = procedure ( Sender: TObject; EventName: string;
EventCount: Longint; var CancelAlerts: Boolean);
Возникает при получении клиентским приложением от сервера уведомления о наступлении одного из событий, список которых содержится в свойстве Events. Назначение параметров:
• EventName - содержит имя события, посланного сервером приложению клиента;
• EventCount - содержит список событий (типа, определенного параметром EventName), имевших место на сервере с момента последней передачи клиентскому приложению уведомления о наступлении событий;
CancelAlerts -
изменяемый параметр; значение True (по умолчанию) сообщает серверу о том, что клиентское приложение продолжает интересоваться событиями из списка, указанного всвойстве Events; False сообщает о том, что интерес приложения к уведомлению о событиях иссяк.


property BeforePrint : TQRBeforePrintEvent; -
наступает перед печатью информации, размещенной в области компонента TQRBand.


property AfterPreview : TQRAflerPreview Event;
Наступает после закрытия окна предварительного просмотра отчета. property AfterPrint: TQRAfter Print Event;
Наступает после вывода отчета на печать. property BeforePrint: TQRBeforePrintEvent;
Наступает в момент генерации отчета, до выдачи окна предварительного просмотра отчета и до вывода отчета на печать.
property OnEndPage : procedure (Sender : TObject);
Наступает в момент подготовки к генерации последней страницы отчета. property OnStartPage : procedure (Sender : TObject);
Наступает в момент подготовки к генерации первой страницы отчета.


property OnBeforeAdd: TSeriesOnBeforeAdd;
TSeriesOnBeforeAdd = Function(Sender: TChartSeries): Boolean of object;
Наступает перед добавлением точки в серию. В обработчике данного события может производиться анализ корректности добавляемых в серию точек. Наступает также при соединении серии с источником данных (TTable или TQuery).
property OnAfterAdd: TSeriesOnAfterAdd;
TSeriesOnAfterAdd = Procedure(Sender:TChartSeries; ValueIndex:Longint) of object;
Происходит после добавления точки в серию. property OnClear Values : TSeriesOnClear;
TSeriesOnClear = Procedure(Sender: TChartSeries) of object;
Происходит при очистке серии от точек.
property OnClick : TSeriesClick;
TSeriesClick = procedure(Sender:TChartSeries; Valuelndex: Longint; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
Происходит при щелчке мышью на серии.
property OnGetMarkText: TSeriesOnGetMarkText;
TSeriesOnGetMarkText = procedure (Sender: TChartSeries; Valuelndex: Longint;
Var MarkText: String)
Происходит при формировании марки для точки в серии. Обработчик может использоваться для изменения содержимого марки.


property OnStartup: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
Наступает при активизации сессии в тот момент, когда сессия еще не стала активной. Используя обработчик данного события, можно во время выполнения приложения устанавливать значения свойств NetFileDir и PrivateDir

Создание базы данных


CREATE {DATABASE | SCHEMA} "<имя_файла>"

[USER "имя_пользователя" [PASSWORD "пароль"]]

[PAGE_SIZE [=] целое]

[LENGTH [=] целое [PAGE[S]]]

[DEFAULT CHARACTER SET набор_символов]

[<вторичный_файл>];

<вторичный файл> = FILE "<имя файла>" [<файлов информ>]

[<вторичный_файл>]

<файлов_информ> = LENGTH [=] целое [PAGE[S]] I STARTING

[AT [PAGE]] целое [<файлов_информ>]



Создание домена


CREATE DOMAIN домен [AS] <тип_данных>

[DEFAULT {литерал] NULL | USER}]

[NOT NULL] [CHECK (<усл_поиска_домена>)]

[COLLATE collation];



Создание хранимой процедуры


CREATE PROCEDURE ИмяПроцедуры

[ (входной_парамэтр тип__данньк [, входной_парам5тр тип_данных... ]) ]

[RETURNS

(входной_параметр тип__данных [, входной_параметр тип_данньк ...])]

AS

<тело процедуры>;



Создание индекса


CREATE [UNIQUE] [ASC[ENDING] I DESC[ENDING]] INDEX ИмяИндекса ON ИмяТаблицы (столбец! [,столбец2 ...]);



Создание просмотра


CREATE VIEW ИмяПросмотра [(cTon6eu_viewl [,столбец view ...])]

AS <oneparop_select> [WITH CHECK OPTION];



Создание триггера


CREATE TRIGGER ИмяТриггера FOR ИмяТаблицы

[ACTIVE I INACTIVE]

{BEFORE | AFTER}

{DELETE | INSERT | UPDATE}

[POSITION номер]

AS <тело триггера>



Старт транзакции


SET TRANSACTION [READ WRITE | READ ONLY]

[WAIT | NO WAIT]

[[ ISOLATION LEVEL] {SNAPSHOT [TABLE STABILITY]

I READ COMMITTED [[NO] RECORD_VERSION]}]

[RESERVING < список_таблиц > [FOR [SHARED | PROTECTED] [READ

WRITE] ], [< список таблиц > . .. ];



Структура тела триггера


[<объявление локальных переменных процедуры>]

BEGIN

<оператор>

[<оператор> ...]

END



с данным компонентом TDatabase. Если


property AliasName: TSymbolStr; -
указывает псевдоним BDE, ассоциированный с данным компонентом TDatabase. Если заполнено свойство DriverName, значение свойства AliasName очищается. property Connected: Boolean; -
указывает, соединен ли компонент с БД при старте приложения. property DatabaseName: TFileName; -
определяет локальный псевдоним приложения, который может использоваться при доступе к БД вместо псевдонима BDE, пути или имени БД. Именно значение, определяемое данным свойством, показывается в выпадающем списке свойства DatabaseName компонентов TTable и TQuery при разработке приложения. ro, rt property DataselCount: Integer; -
определяет число активных НД, связанных с этой БД (компоненты TTable и TQuery). ro, rt property Datasets [Index: Integer]: TDBDataSet; -
коллекция активных НД (компоненты TDBDataSet), связанных с данной БД. Число компонентов определяется свойством DatasetCount. Минимальный индекс 0, максимальный -DatasetCount -1. property DriverName: TSymbolStr;
- указывает имя драйвера BDE, такого как STANDARD (dBASE и Paradox), ORACLE, SYBASE, INFORMIX или INTERBASE. Значение свойства очищается, если устанавливается значение свойства AliasName, и наоборот. ro property IsSQLBased: Boolean; -
указывает, ассоциирован ли данный компонент TDatabase с SQL-ориентированной БД. ro, rt property InTransaction: Boolean; -
возвращает True, если в рамках данного соединения с БД, определяемого компонентом TDatabase, имеется активная транзакция. property KeepConnection: Boolean; -
указывает, следует ли хранить соединение с БД, если нет связанных с ней открытых НД. property LoginPrompt: Boolean; -
определяет, запрашивать ли при первом соединении с БД имя пользователя и пароль или они указываются в свойстве Params. property Params: TStrings; -
список параметров для соединения с БД. property SessionName: string; -
указывает компонент TSession, с которым связана БД. property Temporary: Boolean; -
указывает, создавать ли временный компонент TDatabase для БД, для которых компоненты TDatabase не определены в приложении явно. property Translsolation: TTranslsolation; -
устанавливает уровень изоляции транзакций для SQL-сервера.
property AutoCalcFields: Boolean; -
определяет порядок наступления события OnCalcFields и, соответственно, вызова его обработчика, в котором реализуется алгоритм расчета значений вычисляемых полей. Если AutoCalcFields = True, событие OnCalcFields наступает при изменении любого поля в данном НД или НД, связанного с ним (когда установлены ограничения целостности в самой ТБД, а не тогда, когда они подразумеваются). В противном случае событие OnCalcFields наступает только при чтении записей из ТБД.
ro property BOF: Boolean; -
возвращает True, если курсор БД находится на логически первой записи в НД. function Bookmark Validf Bookmark: TBookmark): Boolean; -
возвращает True, если закладке Bookmark присвоено значение, и False - если не назначено. ro property CanModify: Boolean; - определяет, может ли НД переводиться в состояние dsEdit и dslnsert (True) или не может (False). Это свойство зависит от значения свойства Readonly набора данных. Если ReadOnly=True, CanModify автоматически переводится в False. Когда Readonly•= False, CanModify может принимать значения как True, так и False, устанавливая таким образом возможность изменения НД в зависимости от каких-либо условий.
Для компонента TQuery это свойство имеет значение True, если получен "живой" результат SQL-запроса. "Живой" результат может быть получен тогда, когда, во-первых, свойство RequestLive имеет значение True и, во-вторых, оператор SELECT синтаксически верен. В случае неверного синтаксиса оператора SELECT возвращается результат, доступный только для чтения (случай локального SQL) или генерируется ошибка (доступ к удаленным серверам).
property CacheBlobs: Boolean; -
определяет, выделяется ли в памяти буфер для хранения содержимого BLOB-поля текущей записи НД. Если свойство имеет значение True (значение по умолчанию), буфер выделяется, если False - нет. Буфер необходим, если содержимое BLOB-поля (например, мемо-поля) показывается в форме для текущей записи НД и должно быстро обновляться при переходе на новую запись. property CachedUpdates: Boolean; -
включает (True) и выключает (False) режим кэшированных изменений для НД. function CompareBookmarks(Bookmarkl, Bookmark2: TBookmark): Integer; -
сравнивает две закладки -, Bookmark 1 и Bookmark2 -, и возвращает 0, если закладки идентичны, или 1, если различаются.
property Constraints: TCheckConstraints; -
представляет собой коллекцию компонентов TCheckConstraints. Каждый такой компонент определяет ограничение, накладываемое на значение одного или более полей. ro, rt property DefaultFields: Boolean; -
указывает, используются ли для НД поля по умолчанию (True) или поля, определенные при помощиреов/cniopa полей (False). roproperty EOF: Boolean; -
возвращает True, если курсор находится на логически последней записи в НД. property FieldDefs: TFieldDefs; -
содержит информацию о полях, физически объявленных в ТБД, независимо от того, присутствуют ли они в коллекции полей TField (если такая коллекция определена для НД). property Filter: string; -
указывает условия фильтрации. Альтернативный метод фильтрации по любым, в том числе неиндексным полям для обработчика события OnFilterRecord. Однако может использоваться совместно с ним, а также с фильтрациями, накладываемыми при помощи методов SetRange и Apply Range. property Filtered: Boolean; -
установленное в True, инициирует фильтрацию, условие которой записано или в обработчике события OnFilterRecord, или содержится в свойстве Filter. Если установлены разные условия фильтрации и в событии OnFilterRecord, и в свойстве Filter, выполняются оба. property FilterOptions: TFilterOptions; -
устанавливает режимы фильтрации с использованием свойства Filter. По умолчанию FilterOptions = [ ]; ro, rt property Found: Boolean; -
возвращает True, если текущее выполнение метода FindFirst, FindLast, FindNext, FindPrior привело к выбору записи, удовлетворяющей фильтру, условие которого определяется обработчиком события OnFilterRecord или (и) свойством Filter; ro property Modified: Boolean; -
автоматически устанавливается в True, если значение какого-либо поля записи НД было изменено в режимах dsEdit или dslnsert. Методы Post и Cancel переводят свойство в состояние False. ro property State: TDataSetState; -
возвращает режим, в котором в текущий момент находится НД. Возможные значения: dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields. dsFilter. property UpdateMode; -
при многопользовательском доступе к БД определяет режим проверки изменения данной записи другим пользователем. Возможные значения: • WhereAll - сравнение записи будет вестись на соответствие значений по каждому полю. Это наиболее жесткий метод, обеспечивающий наивысшую достоверность.
• WhereKeyOnly • сравнение записи будет вестись на соответствие только индексного поля (полей). Это наименее жесткий метод, обеспечивающий минимальную достоверность.
• WhereChanged - сравнение записи будет вестись на соответствие индексного поля (полей) и полей, подвергшихся изменению. Этот метод проверки обеспечивает небольшую достоверность, хотя она и несколько выше, чем при WhereKeyOnly.
property UpdateRecordTypes: TUpdateRecordTypes; -
указывает, какие из записей будут видны в НД после проведения кэшированных изменений. Множество TUpdateRecordTypes может содержать следующие значения: rt Modified -
показывать измененные записи; rtlnserted -
показывать добавленные записи; rt Deleted -
показывать удаленные записи; rtUnmodified- показывать не изменявшиеся записи.


property Series [Index:Longint]:TChartSeries; -
содержит список серий графика; Index лежит в диапазоне Q..SeriesCount-\, поскольку отсчет серий начинается с нуля.


property Checked: Boolean; -
указывает, отмечено ли поле, на которое ссылается TDBCheckBox (значение True) или не отмечено (False). property DataField: string; -
содержит имя поля. property DataSource: TDataSowce; -
содержит имя компонента DataSource, связанного с НД. property ReadOnly: Boolean; -
содержит True, если значение поля доступно только для чтения. rt property State: TCheckBoxState;
- возвращает состояние поля. Возможные значения: cbUnchecked- поле не отмечено;
cbChecked -
поле отмечено; cbGrayed -
промежуточное состояние, когда поле не отмечено, но в нем показывается серый символ отметки; cbGrayed показывает, что поле
содержит пустое значение.
property ValueChecked: string; -
устанавливает значения поля, при которых TDBCheckBox переходит в состояние cbChecked. При наличии нескольких значений они разделяются точкой с запятой. property ValueUnchecked: string; -
устанавливает значения поля, при которых TDBCheckBox переходит в состояние cb Unchecked. При наличии нескольких значений они разделяются точкой с запятой.


property AllowDelete: Boolean; -
определяет, возможно ли удаление записей из TDBCtriGrid (True, по умолчанию) или это невозможно (False). property Allowlnsert: Boolean; -
определяет, возможна ли вставка записей в TDBCtrlGrid (True, по умолчанию) или это невозможно (False). property ColCount: Integer; -
определяет число колонок в TDBCtrlGrid. По умолчанию равно 1. property Orientation: DBCtrlGridOrientation; -
определяет ориентацию TDBCtrlGrid -
вертикальную (по умолчанию) или горизонтальную; DBCtrtGridOrientation = (go Vertical, goHorizontal);
property PanelBorder: DBCtrlGridBorder; -
определяет тип кромки панели -выступающая (по умолчанию) или обычная; DBCtrlGridBorder = (gbNone, gbRaised);
ro rt property Pane/Count: Integer; -
число панелей, видимых в TDBCtrlGrid. property PanelHeight: Integer; - высота компонента в пикселах; rt property Panellndex: Integer; -
показывает, какая панель (в диапазоне 0..PanelCount -1) используется для показа текущей записи. property PanelWidth: Integer; -
ширина компонента в пикселах; property RowCount: Integer; -
содержит число строк панелей в TDBCtrlGrid, начиная с 1. Изменение этого свойства ведет к увеличению/уменьшению числа панелей в TDBCtrlGrid без изменения их высоты (PanelHeight). Отличие этого свойства от Pane/Count состоит в том, что число RowCount можно изменять.


property DataField: string; -
указывает имя поля. property DataSource: TDataSource; -
содержит имя компонента DataSource, связанного с набором данных; property ReadOnly: Boolean;
- если содержит True, значение поля доступно только для чтения.


•property DataSource : TDataSowce; -
содержит имя компонента TDataSource, который ссылается на соответствующий набор данных (компоненты TTable или TQuery). • property Columns : TDBGridColumns; -
коллекция столбцов TDBGrid. Имеет собственные свойства и методы: ••
го rt property Count: Integer; - содержит число столбцов в TDBGrid. •• rt property Items [Index: Integer]: TColumn; -
обеспечивает доступ к свойствам столбца с индексом Index, принадлежащего диапазону [O..TDBGrid1.Columns.Count-l]: •••
property Alignment : TAlignment; - определяет выравнивание в столбце; •••
property ButtonStyle: TColumnButtonStyle; - определяет тип кнопки, назначенной столбцу; TColumnButtonStyle = (cbsAuto, cbsEllipsis^ cbsNone); •••
property Color: TColor - определяет цвет фона; ••• function DefaultColor: TColor; -
восстанавливает умалчиваемый цвет столбца; •••
function DefaultFont: TFont; - восстанавливает умалчиваемый шрифт столбца; ••• function DefaultReadOnly: Boolean; -
восстанавливает умалчиваемое значение свойства ReadOnly столбца; •••
function DefaultWidth: Integer; - восстанавливает умалчиваемую ширину столбца; ••• property DropDownRows : Integer; -
определяет число строк в выпадающем списке возможных значений столбца; ••• property Field: TField; -
ссылается на компонент TField, значения которого выводятся в столбце; •••
property FieldName: String; - определяет имя поля; •••
property Font: TFont; - определяет шрифт содержимого столбца, его размер и цвет; •••
property PickList: TStrings; - определяет список возможных значений столбца; •••
property ReadOnly: Boolean; - определяет возможность (False) или невозможность (True) корректировки значений в столбце; ••• property Title: TColumnTitle; -
определяет свойства и методы для работы с заголовком столбца: •••• property Alignment: TAlignment;
- определяет выравнивание; ••••
property Caption: String; - определяет текст заголовка; ••••
property Color: TColor; - определяет цвет фона заголовка столбца; •
•••• junction DefaultColor: TColor; -
восстанавливает умалчиваемый цвет заголовка; •••• function DefaultFont: TFont; -
восстанавливает умалчиваемый шрифт; •••• function DefaultCaption: String; -
восстанавливает умалчиваемый текст заголовка; •••• property Font: TFont; -
определяет шрифт заголовка столбца, его размер и цвет; ••••
procedure RestoreDefaults; - восстанавливает все свойства заголовка столбца, принимавшиеся по умолчанию. ••• property Width: Integer; -
определяет ширину столбца в пикселах; •••
procedure RestoreDefaults; - восстанавливает все свойства столбца, принимавшиеся по умолчанию. •• ro, rt property State : TDBGridColumnsState; -
возвращает значение csDefault, если столбцы TDBGrid формируются на основе свойств полей ТБД, и значение csCustomized, если в TDBGrid присутствуют постоянные столбцы. • property Default Drawing : Boolean;
- определяет, рисуется ли ячейка TDBGrid и данные, в ней содержащиеся, автоматически (значение True), или по алгоритму определенному разработчиком приложения алгоритму (значение False). В случае, если имеет место управление прорисовкой со стороны самого приложения, алгоритм такого управления прорисовкой должен содержаться в обработчиках событий OnDrawColumnCell или OnDrawDataCell для данного TDBGrid. Заметим, что обработчик событий DrawDataCell введен для совместимости с более ранними версиями Delphi. • property DragMode: TDragMode:
- определяет "перетаскивание" (drag and drop) столбцов. Возможные значения: dmAutomatic -
перетаскивание запрещено. dmMannal -
можно перетаскивать столбцы, изменяя тем самым порядок их следования. • property Options: TDBGridOptions; -
управляет видом и поведением TDBGrid во время выполнения. Это свойство состоит из группы логических подсвойств:
dgEditing True
(по умолчанию): разрешает редактирование, вставку и удаление записей непосредственно из TDBGrid. False: запрещает указанные действия.
dgAlwaysShowEditor True:
выбор поля означает его перевод в состояние редактирования. False (по умолчанию) : поле автоматически не переводится в режим редактирования при его выборе.
dgTitles True
(по умолчанию):, показывает заголовки столбцов в TDBGrid. False: заголовки столбцов не показываются.
dglndicator True
(по умолчанию): показывается индикатор текущей записи как самый левый серый столбец. Указатель в режиме dsBrowse - стрелка влево, в режиме dsEdit - символ I-Beam, в режиме dslnsert -звездочка. False: указатель текущей записи не показывается.
DgColumnsResize True
(по умолчанию): возможно изменение ширины столбцов путем сдвига границы столбца в области заголовка. False: изменение ширины столбцов не допускается.
dgColLines True
(по умолчанию): показываются вертикальные линии-разделители между столбцами. False: вертикальные разделители столбцов не показываются.
dgRowLines True
(по умолчанию): показываются горизонтальные линии-разделители строк. False: разделители строк не показываются.
dgTabs True
(по умолчанию): клавиша TAB используется для передвижения между столбцами текущей записи. False: клавиша TAB используется для выхода из TDBGrid.
dgRowSelect True:
инверсная полоса, показывающая текущую строку TDBGrid во время обладания им фокусом ввода, отмечает всю строку. False (по умолчанию): инверсная полоса отмечает только ячейку текущего столбца в текущей строке.
dgAIwaysShowSelection True:
инверсная полоса для отметки текущей строки показывается в TDBGrid независимо от того, обладает он фокусом управления или нет. False (по умолчанию): инверсная полоса видна только в то время, когда TDBGrid обладает фокусом ввода.
dgConfirmDelete True
(по умолчанию): при удалении записи из TDBGrid (комбинация клавиш Ctrl+Del) запрашивается подтверждение удаления. False: подтверждение удаления не запрашивается, запись удаляется немедленно.
• rt property Selectedlndex: Integer; -
возвращает номер поля, ассоциированного текущим столбцом в TDBGrid. Нумерация полей идет от 0. Если возвращено значение -1, никакое поле с данным столбцом не ассоциировано. • rt property SelectedField: TField; -
позволяет обратиться к полю, ассоциированному с текущим столбцом в TDBGrid. • property ReadOnly: Boolean; -
позволяет редактировать, удалять и добавлять записи в НД непосредственно из TDBGrid. Свойство CanModify соответствующего НД установлено в True.


property DataField: string; -
указывает имя поля. property DataSource: TDataSource; -
определяет имя компонента DataSourc связанного с набором данных; property Items
: Tstrings; - хранит список вариантов значения поля. property ReadOnly: Boolean; -
если содержит True, значение поля доступн только для чтения.


property DataField: string; -
устанавливает поле НД-1, в которое будет браться значение из НД-2. property DataSowce: TDataSource; -
указывает на компонент TDataSource, связанный с НД-1. property DropDownAlign: TAUgn; -
определяет выравнивание в выпадающем списке; property DropDownRows: Integer; -
определяет число строк в выпадающем списке; property DropDownWidth: Integer; •
определяет ширину выпадающего списка; property Key Field: string; -
устанавливает поле связи между НД-1 и НД-2. rt property Key Value: Variant; -
содержит текущее значение поля связи. Если во время выполнения Вы установите его значение при помощи оператора присваивания, будет осуществлена попытка отыскать в НД-2 запись со значением, совпадающим со значением, занесенным в свойство Key Value. property ListField: string; -
устанавливает поле, значения которого будут показываться в списке выбора. Если значение не заполнено, берется значение свойства KeyField. property ListSource: TDataSource; -
указывает на компонент TDataSource НД-2. property RowCount: Integer; •
указывает, сколько строк показывается в выпадающем списке. При изменении размеров списка, например, путем изменения свойства Height, RowCount изменятся автоматически.


property DataField: string; -
устанавливает поле НД-1, в которое будет браться значение из НД-2. property DataSowce: TDataSource; -
указывает на компонент TDataSource, связанный с НД-1. property KeyField: string; -
устанавливает поле связи между НД-1 и НД-2. rt property Key Value: Variant; -
содержит текущее значение поля связи. Если во время выполнения Вы установите его значение при помощи оператора присваивания, будет осуществлена попытка отыскать в НД-2 запись со значением, совпадающим со значением, занесенным в свойство Key Value. property ListField: string; -
устанавливает поле, значения которого будут показываться в списке выбора. Если значение не заполнено, берется значение свойства KeyField. property ListSource: TDataSource; -
указывает на компонент TDataSource НД-2. property RowCount: Integer; -
указывает, сколько строк показывается в выпадающем списке. При изменении размеров списка, например, путем изменения свойства Height, RowCount изменятся автоматически.


Alignment: TAlignment; -
определяет выравнивание текста в TDBMemo - влево (taLeftJustify), вправо (taRightJustify), по центру (taCenter). AutoDisplay : Boolean; -
в состоянии True указывает на необходимость того, чтобы любые изменения в поле комментария НД, автоматически отображались и в TDBMemo. В состоянии Fa/s'е подобные действия не производятся и обновление информации в TDBMemo необходимо производить программно. property DataField: string; -
указывает имя поля комментария. DataSowce : TDataSource; -
указывает на компонент DataSource, который, в свою очередь, связан с НД, к которому принадлежит поле. Lines: Tstrings; -
содержит строки поля комментария. property ReadOnly: Boolean; -
в значении True определяет, что текст комментария доступен только для чтения; в значении False определяет, что текст комментария можно изменять. ScrollBars : TScrotlStyle; -
определяет полосы прокрутки в окне TDBMemo: отсутствие полос прокрутки (ssNone), горизонтальную (ssHorizontal), вертикальную (ssVertical) и обе полосы (ssBoth).
WordWrap : Boolean; -
в состоянии True переносит те слова, которые не умещаются в области показа на новую строку (при этом свойство ScrollBars не должно определять линию горизонтальной прокрутки). В состоянии False этого не происходит. Text: Strings; -
позволяет обращаться к содержимому поля комментария как к переменной типа String.


property Columns: Integer; -
указывает, сколько назначено столбцов для вывода переключателей. property DataField: string; -
указывает имя поля. property DataSource: TDataSource; -
имя компонента DataSource, связанного с набором данных; property Items: Tstrings; -
хранит список вариантов значения поля. property ReadOnly: Boolean; -
в значении True определяет, что значение поля доступно только для чтения; в значении False определяет, что значение поля можно изменять. property Value: siring; -
возвращает значение поля, связанного с компонентом TDBRadioGroup, в текстовом виде.


property AutoDisplay: Boolean; -
определяет, следует ли обновлять содержимое компонента TDBRichEdit при переходе к другой записи (значение True) или не обновлять (False). В последнем случае нужно предпринять дополнительные программные действия для занесения, когда это необходимо, содержимого отформатированного поля в компонент. property DataField: string; -
указывает поле, информация из которого должна отображаться в компоненте TDBRichEdit. property DataSource: TDataSource; -
указывает компонент TDataSource, который, в свою очередь, ссылается на набор данных. В состав НД входит поле отформатированного комментария, чье содержимое должно быть отображено в TDBRichEdit. roproperty Field: T field; -
содержит ссылку на компонент TField, соответствующий полю, информация из которого показывается в компоненте TDBRichEdit. property HideScrollBars; -
определяет, следует автоматически убирать (True) или нет (False) полосы скроллинга из окна TDBRichEdit, если в их присутствии нет необходимости. property HideSelection: Boolean; -
определяет, следует (True) или не следует (False) скрывать выделение текста в окне TDBRichEdit, если фокус ввода перешел к другому компоненту. property Lines: TStrings; -
содержит строки текста, показываемого в TDBRichEdit. Строка текста соответствует одному элементу в свойстве Lines. Свойство применяется для построчной обработки текста; если необходимо работать с текстом как с единым целым, применяется свойство Text. rt property Paragraph: TParaAttributes; -
определяет характеристики текущего абзаца текста (то есть абзаца, в котором находится курсор). Свойства компонента TParaAttributes:
• property Alignment: T Alignment;
определяет выравнивание параграфа. Значения:
taLeftJustify -
влево; ta Center - по центру;
taRightJustify -
вправо. • property Firs'/Indent/ Longint;
определяет в пикселах абзацный отступ (первой строки параграфа) относительно левого края.
• property Leftlndent: Longint;
определяет в пикселах отступ всех строк параграфа от левого края.
• property Numbering: TNumberingStyle;
определяет отметку параграфов. Значения:
nsNone - отметка не производится. nsBullet - отметка производится символом '•'.
• property Rightlndent: Longint;
указывает в пикселах отступ от правого края.
property ReadOnly: Boolean; -
указывает, доступно ли содержимое TDBRichEdit только для чтения (True) или также для изменений (False). property PlainText: Boolean; -
указывает (True), что нужно игнорировать разметку текста (шрифт, цвет и т.д.) при записи в файл из компонента или из файла в компонент. В этом случае текст представляется в виде обычного текстового файла. Значение False (по умолчанию) указывает на необходимость принимать во внимание разметку текста. property SelAttributes: TTextAttributes; -
позволяет установить характеристики выделенного текста. Свойства компонента TTextAttributes: • property Color: TColor;
определяет цвет выделенного текста;
• property Height: Integer;
определяет высоту в пикселах выделенного текста;
• property Pitch: TFontPitch;
определяет, имеют ли литеры выделенного текста одинаковую ширину.
Значения:
fpDefault-
определяется используемым шрифтом; fpFixed -
одинаковая ширина; fp Variable -
переменная ширина. • property Protected: Boolean;
определяет (True), что текст защищен от изменения пользователем. В случае, если пользователь пытается изменить защищенный текст, вызывается обработчик события OnProtectChange. В этом обработчике можно снять защиту. Если обработчик указанного события не определен, защищенный текст доступен только для чтения.
• property Size: Integer;
определяет высоту в пунктах выделенного текста.
• property Style: TFontStyles;
определяет стиль выделенного шрифта. Множество Style может состоять из одного или нескольких значений:
fsBold -
жирный; fsltalic -
наклонный; fs Underline -
подчеркнутый; fsStrikeout -
зачеркнутый. property SelLength: Integer; - возвращает количество выделенных символов. property SelStart: Integer; -
возвращает номер первого выделенного символа в тексте. property SelText: string; -
возвращает выделенный текст.


property Data field: string;
указывает имя поля. property DataSource: TDataSource;
указывает имя соответствующего компонента TDataSource, связанного с НД.


property Capacity: Integer; -
определяет в байтах максимальный размер памяти кэша для хранения многомерного массива данных куба. В случае нехватки памяти возбуждается исключение ELowCapacity Error. property DataSet: TDataSet; -
определяет имя НД, который содержит данные для представления в кубе. Рекомендуется в качестве НД использовать созданный специально для этих целей компонент TDecisionQuery. roproperty DimensionCount: Integer; -
содержит текущее число измерений в кубе. property DimensionMap: TCubeDims; -
определяет параметры компонента TDecisionCube, такие как число и состав измерений куба; формат представления значений по конкретному измерению; метки, которые будут соответствовать каждому измерению в компонентах TDecisionGrid и TDecisionPivot; максимальное число измерений; состав показываемых значений. Установка указанных параметров осуществляется в редакторе куба (Decision Cube Editor), который активизируется при двойном щелчке мышью на компоненте TDecisionCube в форме приложения или при нажатии кнопки в поле данных свойства DimensionMap в инспекторе объектов.
ro property DimensionMapCount:Integer; -
содержит число полей из набора данных, которые участвуют в формировании многомерного куба. property MaxDimensions: Integer; -
содержит максимальное число измерений куба. property MaxSummaries: Integer; -
содержит максимальное число сумм для куба. property ShowProgressDialog: Boolean; -
определяет, нужно (True) или не нужно (False) выдавать прогресс-индикатор во время формирования куба. ro property Summary Count: Integer; -
возвращает число полей, использованных для формирования сумм.


property CaptionColor: TColor; -
определяет цвет фона для заголовков столбцов и строк. property CaptionFont: T font; -
определяет шрифт для заголовков столбцов и строк. ro property Cells [ACol, ARow: Integer]: String; -
возвращает в строковом виде содержимое ячейки на пересечении столбца А Со/ и строки ARow. ro property ColCount: Integer; -
возвращает текущее число столбцов. property DataColor: TColor; - определяет цвет фона во всех ячейках. property DataFont: T font; - определяет шрифт во всех ячейках. property DataSum Color: TColor; -
определяет цвет фона в ячейках, где показываются суммы. property DecisionSource: TDecisionSource; -
содержит имя компонента TDecisionSource. property DefaultColWidth: Integer; -
определяет ширину (в пикселах) всех ячеек TDecisionGrid; используется для изменения ширины ячеек в столбцах, ширину которых нельзя изменить при помощи мыши. Установка нового значения свойства DefaultColWidth приводит к изменению ширины сразу всех ячеек. property DefaultRowHeight: Integer; -
определяет высоту (в пикселах) всех ячеек TDecisionGrid; используется для изменения высоты ячеек в столбцах, ширину которых нельзя изменить при помощи мыши. Установка нового значения свойства DefaultRowHeight приводит к изменению высоты сразу всех ячеек. property Dimensions: TDisplayDims; -
коллекция компонентов TDisplayDim, каждый из которых позволяет управлять представлением данных, соответствующих конкретному измерению. Свойства компонента TDisplayDims:
• ro property Count: Integer;
возвращает число измерений в TDecisionGrid, то есть число компонентов TDisplayDim в коллекции TDisplayDims.
• property Items [Index: Integer]: TDisplayDim;
возвращает компонент TDisplayDim с индексом Index. TDisplayDim соответствует серии данных по одному измерению. Значение Index лежит в диапазоне 0..Count-1.
Свойства компонента TDisplayDim:
•• property Alignment: TAlignment;
определяет выравнивание;
••property Color: TColor;
определяет цвет фона в ячейках; ••property DisplayName: string;
определяет текст заголовка; •• property FieldName: string;
определяет имя поля, по которому строится измерение; •• property Format: string;
определяет формат представления значений в ячейках. •• property Subtotals: Boolean;
определяет, следует ли показывать (True) или нет (False) значения промежуточных сумм по измерению. ro property FixedCols.'integer; -
возвращает число столбцов, занятых для показа заголовков измерений и меток данных измерений, то есть для показа служебной информации, а не собственно данных. ro property FixedRows:integer; -
возвращает число строк, занятых для показа заголовков измерений и меток данных измерений, то есть для показа служебной информации, а не собстьенно данных. property GridLineColor: TColor; -
определяет цвет линий, отделяющих ячейки друг от друга. property GridLineWidth: Integer; -
определяет в пикселах ширину линий, отделяющих ячейки друг от друга. property LabelColor: TColor; -
определяет цвет фона ячеек, в которых показываются заголовки столбцов и строк. property LabelFont: TFont; -
определяет шрифт ячеек, в которых показываются заголовки столбцов и строк. property LabelSumColor: TColor;
- определяет цвет фона ячеек, в которых показываются заголовки сумм. property Options: TDecisionGridOptions; -
представляет собой множество, которое определяет параметры показа в TDecisionGrid. В множество могут входить значения: cgGridLines -
выводятся вертикальные и горизонтальные лини, отделяющие ячейки друг от друга; cgOutliner -
заголовки измерений куба содержат знаки "+" и "-", которые позволяют открывать или закрывать измерения без помощи компонента TDecisionPivot; cgPivotable -
разрешается перетаскивать измерения способом darg and drop. ro property RowCount:integer; - возвращает число строк в TDecisionGrid. property Totals: Boolean; -
определяет, показываются (True) или нет (False) значения подсумм по измерениям.


property ButtonAutoSize: Boolean; -
указывает, следует ли автоматически согласовывать размеры кнопок в компоненте TDecisionPivot, соответствующих измерениям куба, с размером самого компонента TDecisionPivot (значение True) или всегда поддерживать одни и те же размеры кнопок независимо от размеров компонента (значение False). property ButtonHeight: Integer; -
определяет высоту (в пикселах) кнопок в компоненте TDecisionPivot (только для случая, когда свойство ButtonAutoSize = False). property ButtonSpacing: Integer; -
определяет расстояние (в пикселах) между кнопками. property ButtonWidth: Integer; -
определяет ширину (в пикселах) кнопок в компоненте TDecisionPivot (только для случая, когда свойство ButtonAutoSize = False). property DecisionSource: TDecisionSource; -
содержит имя компонента TDecisionSource. property GroupLayout: TDecisionButtonPosition; -
определяет вид TDecisionSource: xtHorizontal -
горизонтальный; x't Vertical - вертикальные;
xtLeftTop - кнопки, соответствующие измерениям, которые выводятся в виде строк, помещаются слева внизу; кнопки, соответствующие измерениям-столбцам - вверху и кнопки, соответствующие суммам - вверху слева.
property Groups: TDecisionPivotOptions;
- множество, которое определяет, какие кнопки входят в TDecisionPivot. В состав множества могут входить значения: xtRows - кнопки измерений куба, которые выводятся как строки;
xtColumns -
кнопки измерений куба, которые выводятся как столбцы; xtSummaries -
кнопки, соответствующие суммам. property GroupSpacing: Integer; -
определяет расстояние (в пикселах) между группами кнопок, соответствующие измерениям по строкам, по столбцам и суммам.


property DecisionCube: TDecisionCube; -
содержит имя компонента TDecisionCube. property SparseCols: Boolean; -
определяет, показывать или нет столбцы с пустыми значениями. property SparseRows: Boolean; -
определяет, показывать или нет строки с пустыми значениями.


property Alignment: TAlignment; -
определяет выравнивание значения поля в визуальном компоненте: влево, по центру или вправо. property Calculated: Boolean; -
если содержит True, значение поля будет вычисляться в компонентах TTable или TQuery для каждой записи по алгоритму, определенному в процедуре-обработчике события TField.OnCalcFields. property CustomConstraint: string; -
содержит ограничения, накладываемые на значение поля. property ConstraintErrorMessage: string;
- определяет сообщение об ошибке, когда значение поля не удовлетворяет ограничениям, наложенным свойством CustomConstraint. property DataSet: TDataSet; -
содержит имя компонента TDataSource, который, в свою очередь, ссылается на НД (компоненты TTable и TQuery). property DataSize: Word; -
во время выполнения возвращает значение, означающее, сколько байт нужно для хранения поля в памяти. ro property DataType: TFieldType; -
содержит информацию о типе поля. property DefaultExpression: string; - задает значение поля по умолчанию. property DisplayLabel: string; -
определяет заголовок столбца, соответствующего данному полю в TDBGrid. property Display Width: Integer; -
определяет ширину столбца, соответствующего данному полю в TDBGrid. property Display format: string; -
применяется для форматирования при показе полей типа TDateField, TDateTimeField, TIntegerField, TSmallintField, TTimeField, TWordField. Для форматирования полей типа TIntegerField, TSmallintField and TWordField применяется процедура procedure Str(X [: Width [: Decimals ]]; var S);
Для форматирования полей типа TDateField, TDateTimeField и TTimeField применяется функция function Date Time ToStr (Date Time: TDateTime): string;
Для форматирования полей типа TBCDField, TCurrencyFleld и TFloatField, применяется функция function Float To TextFmt( Buffer: PChar; Value: Extended;
Format: PChar): Integer;
property DisplayText: string; -
содержит строковое изображение значения поля в том виде, в котором оно показывается в визуальном компоненте, когда НД находится не в режиме редактирования. property EditMask: string; -
служит для контроля правильности вводимых в поле значений. Ограничения накладываются при помощи формата. Если некоторый введенный символ не удовлетворяет маске, он не воспринимается. Для строковых полей значение данного свойства может использоваться для форматирования не только входных, но и выходных значений вместе со свойством DisplayText.
ro property EditMaskPtr: string; -
возвращает значение маски редактирования. Поскольку свойство доступно только для чтения, его следует использовать вместо EditMask в тех случаях, когда маска должна быть только прочитана. В итоге мы защищаемся от случайных изменений маски. property Edit format: string; -
применяется для форматирования значений полей типа TIntegerField, TSmallinTField, TWordField перед их редактированием. Форматирование выполняется функцией FloatToTextFmt. property FieldKind: TFieldKind; -
содержит информацию о виде поля. property ImportedConstraint: string; -
содержит ограничения значения поля, "навязанные" сервером. Их не нужно переопределять; дополнительные ограничения можно наложить при помощи свойства CustomConstraint. property Index: Integer; -
содержит логический номер поля в TTable или TQuery (начиная с 0). С помощью этого свойства можно менять порядок показа полей, отличный от того порядка, в котором они заданы при определении структуры ТБД. Например, если поле Number в ТБД физически пятое, в TTable (и, соответственно, TDBGrid) его можно расположить как первое по порядку, указав данное свойство равным 0. property IsIndexField: Boolean; -
во время выполнения возвращает True, если данное поле входит в индекс НД. property IsNull: Boolean; -
во время выполнения возвращает True, если поле содержит пустое значение. property FieldName: string; -
содержит имя поля в НД, с которым связан данный компонент TField. property FieldNo: Integer; -
содержит порядковый номер поля в НД. property Key fields: string; -
содержит список ключевых полей для соединения с НД, служащим источником для полей, возвращающих значения. В наборе-источнике значения полей, список которых содержится в свойстве LookupKeyFields, должны совпадать со значениями полей, указанных в свойстве KeyFields. ro property HasConslramts: Boolean;
- возвращает True, если для поля определены ограничения в свойствах CustomConstraint, ImportedConstraint или DefaultExpression. property Lookup: Boolean; -
возвращает True, если данное поле есть поле, возвращающее значение из другого НД; property LookupCache: Boolean;
- определяет, будут ли значения полей выбора данных храниться в кэше (значение True) или нет (значение False). property LookupDataSet: TDataSet; -
указывает на НД, являющийся набором-источником для полей, возвращающих значения. property LookupKeyFields: string; -
применяется для полей выбора данных; содержит список полей, по которым производится поиск нужного значения в наборе-источнике. Значения этих полей должны совпадать со значениями полей НД, к которому принадлежит поле выбора данных (список таких полей определяется в свойстве KeyFields);
ro property LookupList: TLookupList; -
содержит список значений из набора данных - источника для полей выбора данных, индексированных набором значений полей, список которых содержится в свойстве KeyFields. Метод ValueOfKey компонента TLookupList возвращает результирующее поле (значение поля выбора данных). property LookupResult field: string; -
указывает поле, чье значение возвращается из набора-источника в качестве значения данного поля. property Max Value: Longint;
property MinValue: Longint; -
указывают соответственно максимальное и минимальное значение, которое можно ввести в цифровое поле. property Name: TComponentName; -
имя компонента TField, по которому на него можно ссылаться в приложении; по умолчанию составляется из имени НД и физического имени поля, например Table1Number (поле с именем NumberBTable1). ro, rt property
New Value: Variant; - содержит новое значение поля (столбца) после внесения в поле каких-либо изменений. Доступно только в режиме кэшированных изменений. property Origin: string; -
содержит поле ТБД, послужившее источником для формирования поля набора данных, возвращаемого как результат выполнения SQL-запроса. ro, rtproperty OldValue: Variant;
-. содержит значение исходное поля (столбца), имевшее место до каких-либо изменений. Доступно только в режиме кэшированных изменений. property ReadOnly: Boolean; -
если True, означает невозможность изменения содержимого поля (в режимах dslnsert, dsEdit). property Required: Boolean; -
содержит True, если поле должно содержать значение, отличное от NULL, и False (по умолчанию), если нет. Если при выполнении метода Post для НД запоминаемая запись содержит пустое поле, у которого Re-quired = True, возбуждается исключительная ситуация EDBEditError. property Size: Integer; -
указывает размер поля в байтах. property Text: string; -
содержит символьное представление значения поля, когда НД находится в режиме редактирования (dsEdit). properly Visible: Boolean; -
если False, поле будет невидимо в TDBGrid и иных визуальных компонентах, хотя доступ к полю (и к его текущему значению) возможен. property Value: Variant; -
возвращает значение поля в виде переменной типа Variant.


property Database: TDatabase; -
содержит имя компонента TDatabase, управляющего соединением с БД, работающей под управлением Borland InterBase. property Events: TStrings;
- определяет список событий, о наступлении которых сервер БД будет информировать клиентское приложение. property Registered: Boolean; -
возвращает True, если активна регистрация приложения как приемника сообщений от сервера БД о наступлении событий, определяемых свойством Events.


ro, rtproperty CanModify: Boolean; -
определяет возможность изменения данных в результирующем наборе данных. Устанавливается автоматически. property Constrained: Boolean; -
предотвращает ввод записей, не удовлетворяющих условиям, перечисленным в предложении WHERE оператора SELECT (значение True). property DataSource: TDataSource; -
служит для указания компонента TDataSource, связанного с другим НД, когда значения каких-либо полей этого НД будут использоваться в качестве параметров динамического запроса. ro, rtproperty ParamCounf: Word; -
для динамических запросов возвращает число параметров запроса. property ParamByName(const Value: string): TParam; -
позволяет обратиться к конкретному параметру по его имени, определяемому константой Value. property Params [Index: Word] :TParams; -
для динамических запросов содержит коллекцию параметров запроса. rt property Prepared: Boolean; -
возвращает True, если запрос подготовлен методом Prepare. property RequestLive: Boolean; -
определяет возможность изменять (True) результирующий НД или только читать данные (False). True не означает автоматического разрешения записи в НД (см. свойство CanModify}. property SQL: TStrings; -
содержит текст SQL-запроса. property UmDirectional: Boolean; -
если содержит True, просмотр результирующего НД возможен только в одну сторону (от первой к последней записи).


property BandType: TQRBandType; -
определяет местоположение компонента в отчете и его поведение. Может иметь указанные ниже значения. • rb Title - определяет компонент заголовка отчета. Информация, размещенная в компоненте TQRBand, выводится один раз и располагается перед всеми другими частями отчета. Этот вид компонента TQRBand используется для вывода заголовочной информации отчета.
• rbPageHeader - определяет компонент заголовка страницы. Информация, размещенная в данном компоненте, выводится всякий раз при печати новой страницы отчета прежде всех иных частей отчета (но после информации, размещенной в компоненте заголовка отчета - для первой страницы).
• rbDetail - компонент детальной информации. Выводится всякий раз при переходе на новую запись в наборе данных отчета. Отчет печатается для всех записей набора данных, определяемого свойством DataSet, начиная с первой записи и заканчивая последней. Позиционирование на первую запись и последовательный перебор записей осуществляются компонентом TQuickRep автоматически.
• rbPageFooter - компонент подвала страницы. Если назначен, выводится для каждой страницы отчета после всех иных данных на странице.
• rbSummary - компонент подвала отчета. Выводится на последней странице отчета после всей иной информации, но перед подвалом последней страницы отчета.
• rbGroup Header - компонент заголовка группы. Применяется при группировках информации в отчете. Выводится всякий раз при выводе новой группы.
• rbGroupFooter - компонент подвала группы. Применяется при группировках информации в отчете. Выводится всякий раз при окончании вывода группы, после всех данных группы.
• rbSubDetail - компонент для выдачи детальной информации из подчиненного набора данных при выводе в отчете информации из двух или более НД, связанных в приложении при помощи механизма Master-Detail. Это значение присваивается компоненту автоматически, когда генерируется компонент TQRBand при размещении в форме компонента TQRSubDetail. Вручную это значение в свойство BandType устанавливать не следует.
• rbColumnHeader - компонент для размещения заголовков столбцов. Размещается в отчете на каждой сгранице после заголовка страницы.
• rbOverlay - используется для совместимости с более ранними версиями отчетов.
property Enabled : Boolean;
- указывает, печатается ли в отчете (True) или нет (False) информация, содержащаяся в компоненте TQRBand. property ForceNewPage: Boolean; -
указывает, должна ли информация в составе TQRBand всегда печататься с новой страницы (True) или нет (False).


property Expression: String; -
определяет формулу, по которой рассчитываются значения выражения.


property Expression : String; -
определяет формулу выражения. Все записи из набора данных отчета, для которых вычисление выражения Дает одинаковые значения, считаются принадлежащими одной группе property FooterBand: TQRCustomBand; -
содержит ссылку на компонент подвала группы.


property Bands : TQRSubDetailGroupBands; -
определяет заголовок и подвал для информации, группируемой в компоненте TQRSubDetail. Обладает двумя подсвойствами, указывающими на наличие или отсутствие заголовка и подвала. Это: • property HasHeader: Boolean;
• property HasFooter: Boolean;
property DataSet : TDataSet; -
указывает имя подчиненного набора данных, информация из которого будет выводиться в компоненте TQRSubDetail.


property Data: TQRSysDataType; -
определяет вид показываемой информации. Может иметь указанные ниже значения. • qrsColumnNo - номер текущей колонки отчета (для одноколоночного отчета всегда 1).
• qrsDate - текущая дата.
• qrsDate Time - текущие дата и время.
• qrsDetailCount - количество записей в НД отчета. В случае нескольких наборов указывает количество записей в Master-наборе. Для случая, когда НД представлен компонентом TQuery, эта возможность может быть недоступной, что связано с характером работы компонента TQuery, который возвращает столько записей, сколько необходимо для использования в текущий момент, а остальные поставляет по мере надобности.
• arsDetailNo - номер текущей записи в наборе данных отчета. В случае нескольких наборов содержит номер текущей записи в master-наборе.
• qrsPageNumber - номер текущей страницы отчета. • qrsPageCount - общее число страниц отчета.
• qrsReport Title - заголовок отчета.
• qrs Time -текущее время.


property Bands : TQuickRepBands; -
состоит из множества логических значений (False/True), которые определяют включение в отчет отдельных составляющих, а именно: HasColumnHeader -
заголовка столбцов отчета; • HasDetail - детальной информации;
• HasPageFooter - подвала страницы;
• HasPageHeader - заголовка страницы;
• HasSummary - подвала отчета;
• Над Title - заголовка отчета.
property DataSet : TDataSet; -
указывает на НД, на основе информации в котором и создается отчет. Обычно для выдачи отчета используется один НД. Если нужно вывести связанную информацию из нескольких таблиц БД, ее объединяют в одном НД при помощи оператора SELECT. В этом случае в качестве НД для отчета может использоваться компонент TQuery. Информацию из нескольких связанных НД можно включать в отчет, если эти НД связаны в приложении отношением Master-Detail. В этом случае в качестве НД указывается Master-набор, а ссылка на соответствующие Detail-наборы осуществляется в компонентах TQRSubDetail, использование которых в данном случае необходимо.
Если в отчет нужно включить информацию из не связанных наборов данных, применяют композитный отчет, то есть отчет, составленный из группы других отчетов.
property Frame : TQRFrame; -
определяет параметры рамки отчета: • Color - цвет линии рамки;
• DrawBottom - определяет, следует ли выводить линию снизу;
• DrawLeft- определяет, следует ли выводить линию слева;
• DrawRight- определяет, следует ли выводить линию справа;
• Draw Top- определяет, следует ли выводить линию сверху;
• Style - определяет стиль линии;
• Width - определяет ширину линии в пикселах.
property Page: TQRPage; -
определяет параметры страницы. property PrinterSettings: TQuickRepPrinterSettings;
- определяет параметры принтера. property PrintIfEmpty: Boolean;
- указывает, что следует (True) печатать отчет даже в том случае, если он не содержит данных.


property Active: Boolean; -
активизирует (показывает) серию в графике ( значение True) или скрывает ее (False). property DataSowce: TComponent; -
ссылается на компонент типа НД (TTable, TQuery, TClientDataSet) или на другую серию, откуда берутся данные для показа в серии. property HorizAxis: THorizAxis;
- указывает, какая горизонтальная ось будет использована для серии. Значения: aTopAxis - верхняя горизонтальная ось; aBottomAxis -
нижняя горизонтальная ось. property Marks : TSeriesMarks; -
описывает свойства марок серии, т.е. значений в прямоугольниках, рисуемых для каждого значения серии. Свойства объекта Marks: • property Arrow : TChartPen; -
задает свойства пера, рисующего марку; свойства объекта Arrow:
• property Color : TColor; -
цвет линий; • property Mode : TPenMode; -
способ рисования линий; • property Style : TPenStyle; -
стиль линий; • property Visible : Boolean; -
видимость линий; • property Width: Integer; -
толщина линий; • property ArrowLength : Integer; -
длина в пикселах линии, соединяющей марку с соответствующим изображением элемента серии; по умолчанию 16. • property BackColor: TColor; -
определяет цвет фона марки; по умолчанию $80FFFF (желтый). • property Clip: Boolean; -
если содержит True, марки не могут накладываться на другие элементы графика ( на легенду, метки осей и т.д ). • property Font: TFont; -
определяет шрифт, которым выводится информация внутри марки. • property ParentSeries: TChartSeries; -
содержит указатель на серию, к которой принадлежат марки. • property Style: TSeriesMarksStyle; -
определяет содержимое марки; по умолчанию smsLabel; в обработчике события TChartSeries. OnGetMarkText можно переопределить значения, принятые по умолчанию; возможные значения свойства Style: • sms Value -
значения по оси Y (Y Value), за исключением THorizBarSeries (XValue); например, "9087"; • smsPercent
- процентное значение, например "44%"; для форматирования процентного значения также используется свойство TChartSeries Percent Format; • smsLabel - показывает метку, ассоциированную с точкой графика, например "Сахарный песок" (при построении графика продаж по товарам); в том случае, если метки со значениями не ассоциированы, в марках выводятся сами значения;
• smsLabelPercent -
показывает метку и процентное значение, например "Сахарный песок 44%", • smsLabelValue - показывает метку и значение, например "Сахарный песок 9087";
• smsLegend -
показывает один из элементов легенды графика, список возможных значений содержит свойство TChartLegend TextStyle; • smsPercent Total-
показывает процентное значение и общую сумму, от которой оно взято, например "44% от 20563". • smsLabelPercentTotal -
показывает метку, процентное число и общую сумму, например "Сахарный песок 44% от 20653"; • smsXValue -
показывает значение по оси Х (XValue), например "01.02.1997"; • property Transparent: Boolean; -
значение True определяет, что цвет фона марки не используется (в качестве фона используется "прозрачный цвет"); по умолчанию False.
• property Visible: Boolean; -
определяет, видимы ли (True) или нет (False) марки на графике. property ParentChart: TCustomChart; -
указывает компонент TDBChart, к которому принадлежит серия. Изменение этого свойства позволяет во время выполнения добавлять в график новые серии, показывать серии в других графиках. property PercenlFormal: String; -
указывает формат показа процентных значений. property RecalcOptions : TSeriesRecalcOptions; -
указывает перечень событий, приводящих к пересчету значений серии (учитывается только для серий, свойство DataSource которых указывает на другую серию); по умолчанию [rOnDelete, rOnModify, rOnInsert, rOnClear]. property SeriesColor : TColor; -
определяет цвет, которым выводятся значения серии в графике property ShowInLegend : Boolean; -
определяет, показывать ли (True) легенду, или нет (False); по умолчанию True; property Title : String; -
определяет заголовок серии; по умолчанию заголовок отсутствует, но он может быть назначен в редакторе графика (кнопка Title в окне Series). property ValueColorf Index: Longint]: TColor; -
определяет цвет элемента серии с номером Index. property ValueFormat: String; -
определяет формат показа значений серии; при прорисовке осей используется для форматирования меток, при прорисовке серии используется для форматирования значений, показываемых в марках. property ValueMarkTextf Index: LongintJ: String;
- массив значений, выводимых в марках серии. property VertAxis: TVertAxis; -
определяет местоположение вертикальной оси -слева на графике (aLeftAxis) или справа (aRightAxis). property XLabelf Index: Longint J: String; -
массив, хранящий метки серии по оси X; Index должен находиться в диапазоне 0 Count -1. property XLabelsSource: String; -
имя поля НД (или иного источника значений для серии), определяемого в свойстве DataSource. Содержимое этого поля служит для отображения значений по оси X. Поле должно быть типа, к которому применяется метод AsString. Если значение свойства опущено, значения по оси Х не выводятся. property XValue [Index: Longint]: Double; -
возвращает значение в списке Х Values (см. ниже) с индексом Index (значение в диапазоне 0 Count -I). property X Values: TChart ValueList; -
хранит значения серии по оси X. Значения из этого списка НЕЛЬЗЯ удалять, добавлять и т.д. напрямую. Для этого следует воспользоваться соответствующими методами компонента TChartSeries. Могут быть полезны следующие свойства TChart ValueList. • property Value [Index: Longint ]: Double; -
обеспечивает доступ к элементу серии с индексом Index (значение в диапазоне 0 Count -1). • property ValueSource: String; -
указывает источник данных для формирования значений по оси X. В зависимости от того, каков источник данных для серии (свойство DataSource компонента TChartSeries), может содержать: 1) имя поля числового типа, типа даты, времени, даты и времени, в этом случае свойство серии DataSource должно ссылаться на НД (TTable, TQuery, TClientDataSet);
2) имя существующего TChart ValueList из другой серии; в этом случае свойство DataSource серии должно ссылаться на другую серию;
property YVaIue[Index:Longint]: Double;
property YValues: TChartValueList;
Аналогичны свойствам XValue и XValues и используются для вертикальной оси.


rt, ro property DatabaseCount: Integer; -
возвращает количество активных БД в приложении. rt, ro property Databases [Index: Integer]: TDatabase; -
позволяет получить доступ к активной БД с индексом Index; при этом каждой БД из списка Databases соответствует компонент типа TDatabase. Таким образом, при работе с каждой активной БД из списка Databases можно пользоваться свойствами, методами и событиями, присущими компоненту TDatabase. property KeepConnections: Boolean; -
определяет, следует ли приложению хранить соединение с неактивными БД. False означает "не хранить"; при значении True соединение с неактивными БД будет ликвидировано либо при окончании работы приложения, либо после выполнения метода Drop Connections'. rt property NetfileDir: string
; - указывает каталог, в котором содержится управляющий сетевой файл BDE PDOXUSRS.NET. Это свойство обеспечивает одновременную работу пользователей в сети. Значение свойства NetFileDir замещает значение сетевого каталога, определяемого в параметрах Paradox-драйвера в утилите настройки параметров BDE (BDE Administrator). rt property PrivateDir: string; -
определяет каталог, который используется для хранения временных файлов сессии БД.


property Exclusive: Boolean; -
дает пользователю исключительный доступ к НД (значение True). Это означает, что никто иной не только не может вносить изменения в НД, но вообще не имеет к нему доступа. Установить исключительный доступ можно, лишь когда ни один пользователь не имеет доступа к НД и тот не открыт. Заметим, что для SQL-наборов данных (компонент TQuery) исключительный доступ может означать запрет изменения НД другими пользователями. Однако последние могут просматривать содержимое НД.
ro Get Index Names (List: Tstrings) -
возвращает список имен индексов, определенных для ТБД, связанной в текущий момент с данным компонентом TTable. Заметим, что для Paradox-таблиц имя главного индекса является пустым. ro property IndexDefs: TIndexDefs; -
возвращает информацию обо всех индексах, определенных для ТБД, связанной с данным компонентом TTable. Перед считыванием значения этого свойства необходимо выполнить метод TTable IndexDefs. Update для обновления информации обо всех имеющихся индексах. ro IndexFieldCount: Integer; -
возвращает количество полей в текущем индексе НД. Номер первого индекса 0. property IndexFieldNames: string;-
указывает поля индекса, по которым должна производиться сортировка в НД. При этом строка содержит имена полей, входящих в некоторый индекс. В случае нескольких полей их имена разделяются точкой с запятой. Взаимоисключающее свойство: IndexName. ro Index fields [Index: Integer]: Tfield;
- возвращает информации о поле, определенном в текущем индексе под номером Index+1. Для п определенных полей Index лежит в диапазоне 0.. (п-1). property IndexName: string; -
указывает индекс, по которому будет проводиться сортировка в НД. Взаимоисключающее свойство: IndexFieldNames. property KeyExclusive: Boolean;
1) При фильтрации методами SetRangeStart, SetRangeEnd, Apply Range в НД не попадают записи, удовлетворяющие нижней или (и) верхней границе индекса, а только соответственно большие или меньшие (значение True). Устанавливается отдельно для нижней и для верхней границы индекса.
2) При поиске записей методами FindNearest или GotoNearest определяет, куда перемещать указатель текущей записи в случае успешного поиска: на найденную запись (False) или на следующую за ней запись (True). По умолчанию False.
property KeyFieldCount: Integer; -
определяет, сколько полей текущего индекса используются при поиске в НД методами GoToKey и GoToNearest. property MasterFields: string; -
используется в дочернем НД для указания имени поля связи между родительским и дочерним НД. property MasterSource: TDataSource; -
используется в дочернем НД для указания имени компонента TDataSource, связанного с родительским НД. property Readonly: Boolean; -
если True, НД не может корректироваться и доступен только для просмотра.


property InsertSQL: TStrings; -
содержит SQL- оператор INSERT для записи результатов кэшированных изменений в физическую ТБД. property ModifySQL: TStrings; -
содержит SQL-оператор UPDATE-для записи результатов кэшированных изменений в физическую ТБД. property DeleteSQL: TStrings; -
содержит SQL-оператор DELETE для записи результатов кэшированных изменений в физическую ТБД.

Свойства, методы, события.


Условные обозначения

rо - при описании свойств компонентов Delphi означает read only, то есть свойство доступно только для чтения;

rt

- при описании свойств компонентов Delphi означает run time, то есть свойство доступно только во время выполнения приложения и не доступно во время его разработки.

Таблицы базы данных


Создание таблицы базы данных

CREATE TABLE ИмяТаблицы [EXTERNAL [FILE] "<имя файла>"]

(<опр_столбца> [, <опр столбца> I <ограничение> ...]);

<опр_столбца> = опр_столбца{тип_данных | COMPUTED [BY] (<выражение>) | домен}

[DEFAULT {литерал! NULL I USER}]

[NOT NULL] [<огранич_столбца>]

[COLLATE collation]



Тело процедуры


[<объявление локальных переменных процедуры>] BEGIN

<оператор>

[<оператор> ...]

END



Tovar


KUP 10.01.97 3000 Ставрида консерв. Адмирал, АО 8 120.01.97 1000 Кока-кола Адмирал.АО

Удаление ограничений целостности


ALTER TABLE <имя таблицы> DROP <имя ограничения целостности^-



Удаление столбца (столбцов) из таблицы БД


ALTER TABLE <имя таблицы> DROP <имя столбца1>[,<имя столбца2>...];



Условный оператор


IF (<условие>) THEN <оператор 1>

[ELSE <оператор 2>]



Вложенный вызов другой хранимой процедуры


EXECUTE PROCEDURE имя [параметр [, параметр ...]];

[RETURNING_VALUES параметр [, параметр ...]];



Без баз данных сегодня невозможно


Без баз данных сегодня невозможно представить работу большинства финансовых, промышленных, торговых и прочих организации. Потоки информации, циркулирующие в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Не будь баз данных, мы давно захлебнулись бы в информационной лавине. Базы данных позволяют информацию структурировать, хранить и извлекать оптимальным для пользователя образом.
Поскольку использование баз данных является одним из краеугольных камней, на которых построено существование различных организаций, пристальное внимание разработчиков приложений баз данных вызывают инструменты, при помощи которых такие приложения можно было бы создавать. Выдвигаемые к ним требования в общем виде можно сформулировать как: "быстрота, простота, эффективность, надежность".
В основе такой общепризнанной популярности Delphi лежит тот факт, что Delphi, как никакая другая система программирования, удовлетворяет изложенным выше требованиям. Действительно, приложения с помощью Delphi разрабатываются быстро, причем взаимодействие разработчика с интерактивной средой Delphi не вызывает внутреннего отторжения, а наоборот, оставляет ощущение комфорта. Delphi-приложения эффективны, если разработчик соблюдает определенные правила (и часто - если не соблюдает). Эти приложения надежны и при эксплуатации обладают предсказуемым поведением.
Но вот проста ли Delphi? И да, и нет. Она лишь кажется простой, поскольку многие "подводные камни" скрыты от разработчика. Однако чем больше изучаешь ее, тем больше становится ясной ее глубина, которая одновременно и вызывает уважение, и пугает. Лишь со временем приходит понимание того, что для написания действительно мощных и функциональных приложений требуется постоянное изучение Delphi.
К сожалению, в существующей литературе о Delphi некоторые вопросы построения приложений баз данных изложены достаточно эклектично. Поэтому при изучении различных тонкостей приходится одновременно копаться в различных источниках. Осознавая насколько это неудобно, автор попытался собрать воедино информацию о возможностях, которые предоставляет Delphi для построения приложений баз данных. Автор отдает себе отчет в том, что в рамках одной книги это сделать тяжело. Поэтому он предоставляет читателю самому судить о том, насколько ему это удалось.
Книга разбита на две части. В первой рассматриваются общие вопросы построения приложений и средства, не зависящие от выбранной архитектуры базы данных. В самом начале первой части помещено введение в проблематику баз данных, предназначенное для тех, кто только начинает свое знакомство с ними. Искушенным пользователям это введение можно пропустить.
Во второй части книги рассматриваются вопросы построения приложений в архитектуре "клиент-сервер". Изложение ведется на основе исследования возможностей SQL-сервера Borland InterBase (локальная версия которого поставляется вместе с Delphi) и касается средств и компонентов, присущих только серверным базам данных. Параллельно показывается, как те или иные средства серверной базы данных могут использоваться в приложениях Delphi.
В конце книги помещены два раздела справочного характера. В первом приведен алфавитный перечень свойств, методов и событий компонентов для работы с базами данных. Во втором приложении приведены форматы SQL-операторов Borland InterBase.
Каждый раздел снабжен примерами программ на языке Object Pascal, или на SQL - языке серверных баз данных. Эти примеры брались из готовых приложений, то есть это работающие программы.

Выборка данных из таблиц БД


SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2> ...]}

FROM <таблица1> [, < таблица2> ...]

[WHERE <условия_поиска>]

[GROUP BY столбец [COLLATE collation]

[,столбец1 [COLLATE collation] ...]

[HAVING < условия поиска >]

[UNION <оператор select>]

[PLAN <план выполнения запроса>]

[ORDER BY <список_столбцов>]