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);
    begin
    Stream.LoadFromFile('c:\temp.txt');
    end;
  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...

Navigation



We are a small software company with thousands of customers delivering comany wide systems including accounting, logistics, e-commerce, POS, sales etc etc. Several years ago, when we were still a very small company, we used Delphi 3 and Paradox combined with BDE. As our system (and customer base) grew I decided to switch to Delphi 5 and Interbase. Being a huge improvement over Delphi 3 and Paradox, I encountered numerous problems with IBX: memory leaks, performance issues and other problems. Borland was not to be bothered: IBX was provided "as is" and no support was avaliable. 
Not being very eager to use third party components with Delphi at first, I decided to give FIBPlus a try. At once all problems where gone: no more memory leaks and  performance was very consistent. 
But the real advantage of switching to FIBPlus came with the upgrade to D2005: after upgrading there were some problems with the new FIBPlus version. After emailing the problem I received an update within an hour! And this was at 11 pm! A few other (smaller) errors where handled in the same way. 
Our motto is: software is as good as its support. And support of Devrace is just great!
Just a little indication of our FIBPlus use: all our software runs 100% on FIBPlus. Our customers have a total of aprox. 4.800 Firebird databases in production, with a combined size of over 130TB and over 80 million transactions a day. Every
day. And FIBPlus has not failed a single transaction. Not once. There is, however, one (minor) drawback in using FIBPlus: while debugging an application which uses and invalid SQL instruction, de Delphi Debugger returns to the FIBPlus code instead of to our calling code (where the actual error comes from), thereby complicating de debug proces a little. But that is a very small price to pay for a otherwise brilliant third party solution! >>

Bas Jordans JorSoft Ltd
FOR CUSTOMERS
Download full versions and updates in your Personal Area