New features and enhancements:

1. A new TpFIBScripter component has been added.

It has the following properties:

property Script:TStrings ;  - stores a text of the script.

property Database: TpFIBDatabase; - stores the connection, where the script will be executed. You should not define this property if the script has the CREATE DATABASE command.

property Transaction: TpFIBTransaction ; - stores the transaction where the script will be executed. As the TpFIBScripter component can control transactions, you should not always define the Transaction: TpFIBTransaction property value.

property AutoDDL: boolean – defines whether to call Commit automatically after each DDL command when the script is being executed.

property Paused: Boolean – enables the developer to stop the script execution in TpFIBScripter event handlers.

property StopStatementNo – returns the number of the command where the user stopped the script execution.

TpFIBScripter methods:

Procedure Parse(Terminator: Char = ';') – parses the script, defined in the Script: TStrings property. The argument is the command separator (by default it is a semicolon “;”).
procedure ExecuteScript (FromStmt: integer = 1); -
executes the script defined in the Script: TStrings property. The argument is the number of the command which starts the execution.

procedure ExecuteFromFile (const FileName: string;Terminator: Char = ';'); - executes the script stored in the external file FileName. The full script text is not loaded in memory, the file is read line by line before the complete command is formed. When the command is ready, it’s executed and it’s text is deleted from memory. This approach enables you to execute very huge scripts.

function GetStatement (StmtNo: integer; Text: TStrings): PStatementDesc – enables you to get information about the command by its number позволяет (you should call the Parse method before it). The function returns a pointer to the PStatementDesc structure, which stores information about the command.

TpFIBScripter events:

property BeforeStatementExecute: TOnStatementExecute;

property AfterStatementExecute: TOnStatementExecute;


TOnStatementExecute = procedure(Sender: TObject; Line: Integer; StatementNo: Integer;  Desc: TStatementDesc; Statement: TStrings);

The events are called before/after the every command execution.

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;

The event happens if the current command was executed with errors.

An example.

var scr: TpFIBScripter;
  scr := TpFIBScripter.Create(nil);
    Scr.Script.Text := MyScriptText;

2. Now TpFIBDataSet has new methods:

    procedure DisableMasterSource;

  procedure EnableMasterSource;

  function  MasterSourceDisabled:boolean;

They are used to activate/deactivate the master-detail mode temporarily. For example:


and the detail dataset won’t reopen.

3. TpFIBDataSet has a new AutoUpdateOptions.UseExecuteBlock: Boolean property. It works only if CachedUpdates = True. If UseExecuteBlock is equal to True, then calling of ApplyUpdates and ApplyUpdToBase will generate queries with EXECUTE BLOCK. In other words changes made in the CachedUpdates mode will be sent to the database not for each record separately but in packages of 255 records.

4. Now FIBPlus supports CsMonitor (implemented by Yury Plotnikov). To use it you should activate the directive "CSMonitor" in (only for the full FIBPlus version).

5. TpFIBDatabase has a new method: procedure ClearQueryCacheList.

6. The TFIBDataTimeField and TFIBTimeField fields have the ShowMsec: Boolean property. If it is set to True, time values with milliseconds will be shown in visual DB components.

7. The Locate method works significantly faster. To use this feature you should deactivate the directive {$DEFINE FAST_LOCATE} in (only for the full FIBPlus version).

8. If the data is sorted, the Lookup method uses sorting to search for necessary values in TpFIBDateset.

9. Now if you use Select from procedure in Firebird 2.1 and input parameters are boolean or GUID, fields with corresponding types are created in TpFIBdataSet.

Bugs fixed:

1.  Now UTF8 fields correctly work with InterBase 2007.

2.  The CancelUpdates logic of TpFIBDataSet has been changed. When you called the CancelUpdates method in the CachedUpdates mode, FIBPlus restored field values which remained just before canceling. For example, if you first edited the record and then deleted it, you got changed field values instead of the original ones after calling CancelUpdates.

3.  Unicode lookup-fields work correctly now.

4.  An error in the TpFIBDataSet.CloneRecord method appeared if there were deleted records. Fixed.

5.  The current record was positioned in the wrong place if the Refresh method was called automatically after record deleting (if the poRefreshDeleted option was active). Fixed.

6.  Now internal transaction parameters work correctly for Firebird 2.1.

7.  Now TSIBfibEventAlerter correctly registers events. This component operated improperly when TSIBfibEventAlerter and TpFIBDatabase were placed on different forms.

8.  Now the procedure TFIBLargeIntField.SetVarValue(const Value: Variant) method operates rightly. It worked incorrectly when it had an input NULL value.

Preview text: What's new in version 6.8: 9 enhancements, 8 bug fixes. Has a new TpFIBScripter component and supports CSMonitor.
Prices in Euro:

235 (1 copy)
1250 (unlimited)

Volume discounts are available...


Using FIBPlus, I did everything I could only dream of with other data connectors and InterBase in 2 weeks. I am very happy with your work. Together we are successful. >>

Mark McFarlane
Download full versions and updates in your Personal Area