|
Он содержит следующие свойства:
property Script:TStrings ; - текст выполняемого скрипта
property Database: TpFIBDatabase; - соединение, в контексте которого будет выполняться скрипт. Cвойство может быть не заданным, если в скрипте присутствует команда CREATE DATABASE.
property Transaction: TpFIBTransaction ; - транзакция, в контексте которой будет выполняться скрипт. Присвоение значения данному свойству также необязательно, поскольку компонент сам может управлять транзакциями.
property AutoDDL: boolean – определяет, будет ли в ходе выполнения скрипта автоматически вызываться Commit после каждой DDL команды.
property Paused: Boolean - позволяет прекратить выполнение скрипта внутри обработчиков событий компонента.
property StopStatementNo возвращает номер команды, на которой пользователь остановил выполнение скрипта.
Методы компонента:
Procedure Parse(Terminator: Char = ';') - выполняет парсинг скрипта, заданный в свойстве Script: TStrings. Аргументом выступает начальный символ-разделитель команд (по умолчанию, точка с запятой).
procedure ExecuteScript (FromStmt: integer = 1); - выполняет скрипт, заданный в свойстве Script: TStrings. Аргументом выступает номер команды, с которой начнется выполнение.
procedure ExecuteFromFile (const FileName: string;Terminator: Char = ';'); - выполняет скрипт, хранящийся во внешнем файле FileName. Загрузка полного текста скрипта в память при этом не производится: файл считывается построчно до формирования очередной команды, команда выполняется, а ее текст удаляется из памяти. Это позволяет выполнять скрипты очень большого объема.
function GetStatement (StmtNo: integer; Text: TStrings): PStatementDesc - позволяет получить информацию о команде по ее номеру (предварительно требуется вызов метода Parse). Функция возвращает ссылку на структуру PStatementDesc, хранящую информацию о команде.
События компонента:
property BeforeStatementExecute: TOnStatementExecute;
property AfterStatementExecute: TOnStatementExecute;
где
TOnStatementExecute = procedure(Sender: TObject; Line: Integer; StatementNo: Integer; Desc: TStatementDesc; Statement: TStrings);
События вызываются, соответственно, до и после выполнения текущей команды.
property OnExecuteError: TOnSQLScriptExecError;
где
TOnSQLScriptExecError = procedure(Sender: TObject; StatementNo: Integer; Line: Integer; Statement: TStrings; SQLCode: Integer; const Msg: string; var doRollBack: boolean; var Stop: Boolean) of object;
Событие происходит в случае, если выполнение текущей команды привело к ошибке.
Пример использования.
var scr: TpFIBScripter;
begin
scr :=
TpFIBScripter.Create(nil);
try
Scr.Script.Text :=
MyScriptText;
Scr.ExecuteScript;
finally
scr.Free;
end;
end;
2. В TpFIBDataSet добавлены новые методы:
procedure
DisableMasterSource;
procedure EnableMasterSource;
function
MasterSourceDisabled:boolean;
Методы служат для управления временным отключением режима master-detail. Например:
DetailDataSet.DisableMasterSource;
try
MasterDataSet.Edit;
MasterDataSet.FieldByName('ID').asInteger:=NewValue;
MasterDataSet.Post;
ChangeDetailDataSetLinkField(NewValue);
finally
DetailDataSet.EnableMasterSource;
end;
при этом детальный датасет не переоткрывается.
3. В TpFIBDataSet добавлено свойство AutoUpdateOptions.UseExecuteBlock: boolean. Свойство работает только при CachedUpdates = True. Если свойство UseExecuteBlock равно True, то вызовы ApplyUpdates и ApplyUpdToBase будут генерировать запросы с использованием конструкции EXECUTE BLOCK. Т.е., изменения в режиме CachedUpdates будут посылаться в базу не для каждой записи отдельно, а «пакетами» по 255 записей.
4. Добавлена поддержка CsMonitor. (автор - Юрий Плотников). Режим поддержки включается директивой "CSMonitor" в FIBPlus.inc (только в полной версии FIBPlus).
5.В TpFIBDatabase добавлен метод procedure ClearQueryCacheList.
6. У полей TFIBDataTimeField и TFIBTimeField добавлено свойство ShowMsec: boolean. Если свойство равно True, в визуальных DB-компонентах будут показываться значения времени с милисекундами.
7. Существенно увеличена скорость работы метода Locate. Новую реализацию можно выключить, убрав директиву {$DEFINE FAST_LOCATE} в файле FIBPlus.inc (только в полной версии FIBPlus).
8. Метод Lookup в TpFIBDateset для поиска нужных значений теперь использует сортировку, если данные отсортированы.
9. Теперь, если вы используете конструкцию Select from procedure в Firebird 2.1, и выходные параметры являются boolean или GUID, то в TpFIBdataSet создаются поля соответствующего типа.
1. Поправлена работа с UTF8 полями под InterBase 2007
2. Изменена логика работы метода CancelUpdates в TpFIBDataSet. Раньше, при вызове метода CancelUpdates в режиме CachedUpdates в удаленных записях восстанавливались те значения полей, которые были непосредственно в момент удаления. Т.е., если запись сначала редактировалась, а потом удалялась, то при отмене всех изменений мы получали не оригинальные значения записей, а уже измененные.
3. Поправлены Unicode lookup-поля.
4. Исправлена ошибка в методе TpFIBDataSet.CloneRecord, проявлявшаяся при наличии удаленных записей.
5. Исправлено неправильное позиционирование текущей записи при автоматическом вызове метода Refresh после удаления записи и при включенной опции poRefreshDeleted.
6. Поправлены параметры внутренних транзакций с учетом требований Firebird 2.1.
7. В компоненте TSIBfibEventAlerter поправлена авторегистрация интереса к событиям. Регистрация не срабатывала, когда TSIBfibEventAlerter и TpFIBDatabase находились на разных формах.
8. Поправлен метод procedure TFIBLargeIntField.SetVarValue(const Value: Variant). Метод неправильно работал, если на входе было NULL-значение.
Удивительно, как легко писать програмы на FIBPlus. Все как бы "под руками", не приходится ничего придумывать. Лучшие компоненты для работы с Firebird, если бы для других серверов такое было... >>