New Features and Bug Fixes in Version 4.54 of ODBCExpress
=========================================================


New Features
------------

New features introduced since ODBCExpress 4.53:

1.  The following new functionality is added to the TOEDataSet:
    - The TFieldDef.Required property is implemented (in addition to the
      DataType, Precision and Size properties).
    - If Editable is set to True and an updatable concurrency is required, the
      concurrency is changed accordingly.
    - Current-row refresh functionality is fully implemented via the Refresh
      method.  This differs from the BDE's implementation of the Refresh method
      which applies to all the visible rows.


Bug Fixes
---------

The following bugs, which existed in ODBCExpress 4.53, are now fixed in this
version:

1.  The following problems which existed with the handle components are fixed:
    - A blob re-fetching problem occurred with the CellMemory property and a
      blob-fetching problem occurred with the CellString property.
    - String, binary and date/time precision problems existed with some ODBC
      drivers such as dBase and FoxPro.
    - The RowsFetched property did not return the correct value for some ODBC
      drivers (e.g. MS Access) when a prepared statement was re-executed.

2.  The following problems which existed with the TOEDataSet are fixed:
    - Deferred blob fetching did not work correctly.
    - A stored procedure SQL generation problem when the stored procedure
      contained no parameters.
    - A problem where numeric fields retrieved via some ODBC drivers (e.g.
      Oracle) were incorrectly detected as currency fields.
    - The design-time parameter editor sometimes caused an "invalid argument to
      date encode" error when used together with date/time parameters.
    - A problem in which refreshing a row with its current values at the
      database did not work if the row was already modified in the DataSet.
    - Some unnecessary calls to the Refresh method after a Cancel or Delete
      operation were made.
    - The MoveAbsolute(0) case was not handled.
    - A problem with the initial size of a parameter caused "invalid parameter
      size" errors with some ODBC drivers.  This problem still exists with some
      ODBC drivers in certain cases, but can be avoided or can be attributed to
      an ODBC driver implementation problem.
    - A problem with the parsing of a table name existed when the table name was
      the first element of a new line in the SQL property editor.
    - The AutoCalcFields property was not exposed.

3.  The following problems which existed with the TOEQuery are fixed:
    - A default-value problem where the value of LocateInsert was always True
      and could only be set at run-time and not at design-time.  The default
      value of LocateInsert is now the same as for the TOEDataSet, which is
      False instead of True.

4.  The following problems which existed with the non-visual components are
    fixed:
    - A problem in which some ODBC drivers (e.g. SQL Anywhere and Interbase)
      returned tables of all types (including system tables), no matter what the
      TableType setting of the TOECatalog was.  This fixes the tables listed by
      the table name property editors of all the other ODBCExpress components as
      well.
    - A "list index out of bounds" error sometimes occurred when using the
      WriteToFile functionality of the TOESchema property editor and an empty
      top row sometimes appeared after retrieving tables or views into the
      property editor.


Comments
--------

Some important comments on the new version:

1.  Please report any problems experienced with this new version to
    support@odbcexpress.com so that it can be addressed as soon as possible.

2.  Apply the latest Delphi 3 or C++Builder 3 Update Pack.

3.  Auto-increment fields work fine with the TOEDataSet component and will
    automatically be ignored as part of the column list during inserts and
    updates.  If they also form part of the primary key, they will automatically
    be used as part of the where-clause of updates and deletes, if necessary.

4.  The fields used by LocateInsert are the primary fields by default, but can
    be changed to include all the fields or a subset of the fields using the
    Target property.

5.  Closing and re-opening the TOEDataSet sometimes causes incorrect behaviour,
    such as empty result sets, with certain ODBC drivers (e.g. Oracle and SQL
    Anywhere).  If this occurs call the UnPrepare method between the Close and
    Open calls.  Of course this will cause the SQL statement to be re-prepared
    when you re-open the DataSet, but should fix the behaviour problems.