What's new in version 6.2?

Features and enhancements

  1. TFIBGUIDField values are automatically generated on inserting a new record.
  2. Now evident use of string values is possible in the WHERE clause with Unicode-connection to the database (SELECT * FROM T1 WHERE MyField = 'string'). Note: Versions 6.1 downwards can use only parameter values in Unicode connection.
  3. FIBPlusTools have been adapted for Delphi 2005.
  4. The BatchOutputRawFile method of the TpFIBQuery component has been changed:procedure BatchOutputRawFile (const FileName: string; Version: integer = 1);
    The second argument defines the way of writing to the file.

    If Version = 1, the old principle works: data are shown in the external file in the order, determined by SQL query fields. It is implied that the parameters will have the same order on reading the written data by the BatchInputRawFile method in a reading SQL. A number of TpFIBQuery fields (field data were written) and a number of TpFIBQuery parameters (the parameters will read the data) must coincide. String fields require conformity of the length of reading fields and the reading parameter; name conformity is not required.

    If Version = 2, a new writing principle is used. Besides the data, secondary information on fields (their name, type and length) is also written into the file. When being read, the data will be taken according to the name conformity. The number of fields and their order in the writing TpFIBQuery may not conform to those in the reading TpFIBQuery. No field type and length conformity is required. Field names must conform.

  5. The TpFIBDatabase component has new properties:

    property ServerMajorVersion: integer;
    property ServerMinorVersion: integer;
    property ServerRelease: integer;
    property ServerBuild: integer;

    their names explain their meaning.
  6. TpFIBQuery has new methods:

    function TableAliasForField(FieldIndex:integer):string; overload;
    function TableAliasForField(const aFieldName:string):string; overload;

    These functions return the table alias by a field number or by a field name.
  7. ISQLObject interface has a new method:

    function FieldName (FieldIndex: integer): string;
  8. Now maximum event length in TSIBfibEventAlerter is 128 symbols instead of 64.
  9. Now it's possible to use calculated Blob fields in your applications. To enable this, the TFIBBlobField class has obtained a new property IsClientField: Boolean, and TpFIBDataSet has obtained a new OnFillClientBlob:TOnFillClientBlob event, where

    TOnFillClientBlob = procedure (DataSet: TFIBCustomDataSet; Field: TFIBBlobField; Stream: TFIBBlobStream) of object;

    Now if IsClientField of the blob field is True, the field value is not taken from the database or not written into it. (though the blob field must be sill present in Select query). To fill in field values you should set the OnFillClientBlob event handler of a corresponding TpFIBDataSet. For example:

    procedure TForm1.NoLookupFIBDataSetFillClientBlob(DataSet: TFIBCustomDataSet; Field: TFIBBlobField; Stream: TFIBBlobStream);
  10. A new poCacheCalcFields option has been added to the TpFIBDataSet component. If it is True, the results of calculated and lookup fields are stored in cache. This enables to recalculate the fields only after the record modification. This mode is recommended if the calculated fields are used for complex calculation, or if there are used local sorting, filtering and searching by calculated fields.
  11. The TpFIBDataSet component has new methods:

    function CreateCalcField (FieldClass: TFieldClass; const aName, aFieldName: string; aSize: integer): TField;

    function CreateLookUpField (FieldClass: TFieldClass; const aName, aFieldName: string; aSize: integer; aLookupDataSet: TDataSet; const aKeyFields, aLookupKeyFields, aLookupResultField: string): TField;

    They enable to create calculated and lookup fields in run-time.
  12. Performance of Locate and DoSort methods has been considerably increased (thanks to Gary Haywood for his performance tests).
  13. Now if Required fields are empty, the CacheInsert and CacheEdit methods do not call an exception.
  14. Now a field of the TFIBWideStringField class may be Calculated (as a standard TWideStringField class cannot be used because of the VCL error).
  15. TpFIBDataSet has a new property FieldOriginRule: TFieldOriginRule, where

    TFieldOriginRule = (forNoRule, forTableAndFieldName, forClientFieldName, forTableAliasAndFieldName);

    It determines the rule of setting TField.Origin.

    forNoRule: Origin is not set (developers should set it themselves).
    forTableAndFieldName: Origin is set as a string: "physical table name "+"."+"physical field name".
    forClientFieldName: Origin conforms with Field.FieldName.
    forTableAliasAndFieldName: Origin is set as a string: "table alias in query"+"."+"physical field name".

    The forNoRule and forClientFieldName rules are useful for the developers who use FIBPlus together with DevExpress. The forTableAliasAndFieldName rule is important in Firebird 2.
  16. Now in the AutoUpdateOptions.UpdateTableName property it is possible to set not simply a table name, but a table name + " " + a table alias. If the table name is not upper-case (dialect 3), it must be written in double quotes (" ").

    This enables to correctly generate modifying queries for Firebird 2, as FIBPlus effectively works with such constructions as:

    Select a.*, b.Description DescripB
    from Tasks a
    left join Tasks b on (b.id = a.id)

    In other words, it works well with the constructions, in which one table is used more than once. The Description field must not be edited. Previous versions of FIBPlus (6.1 downwards) and IB/FB do not work correctly with such queries. Now in FIBPlus 6.2 it's enough to set AutoUpdateOptions.UpdateTableName := 'Tasks a' instead of AutoUpdateOptions.UpdateTableName := 'Tasks'.

Bugs fixed:

  1. A bug with the TFIBGUIDField class (the class was not registered). Fixed.
  2. The Locate method worked incorrectly with Unicode fields. Fixed.
  3. An error in the SQL editor in Delphi 2005. Switch to Code Editor worked incorrectly. Fixed.
  4. An error in the SQL parser, which appeared on uncommon queries. Fixed.
  5. An error in GUID fields in the master-detail mode. Fixed.
  6. The SetAsBCD and GetAsBCD methods of the FIBBCDField class worked incorrectly with calculated fields. Fixed.
  7. An error in the AsString property of the TpFIBQuery component on working with Unicode. Fixed.
  8. Fields of the NUMERIC(xxx, yyy) type were not shown correctly on using the DisplayFormat property for values which were not precised well by the Double type. Fixed.
  9. An error of inserting in an empty TpFIBDataSet, if poKeepSorting is True. Fixed.
  10. An error in ApplyUpdates on deleting all records. Fixed.
  11. ExtLocate into a sorted query in TpFIBDataSet worked incorrectly, if KeyFields order differed from real sorting field order. Fixed.
  12. Now, Search is a simple running over, on calling ExtLocate with the eloInSortedDS option into an unsorted query in TpFIBDataSet. Previous versions showed incorrect results of such Search. Fixed.

Preview text: This version better supports Unicode and is compatible with Firebird 2 and Delphi 2005
Prices in Euro:

235 (1 copy)
1250 (unlimited)

Volume discounts are available...


"FIBPlus is a great choice if you're going to work with InterBase and/or Firebird. The components let you easily use all the features of both databases in your applications...FIBPlus will make your InterBase and Firebird development easier than ever before...". Read the full story. >>

Bill Todd, president of The Database Group, Inc., a contributing editor to Delphi Informant Magazine, and a member of Team B
Download full versions and updates in your Personal Area