0% found this document useful (0 votes)
202 views10 pages

IBXUpd 608 Rdme

This document provides information about an update kit for InterBase Express (IBX) components for Delphi 6 and InterBase versions 5, 6, and 7. The update includes fixes and new features such as improved support for Boolean data types, XML output, and deprecation of IBClientDataset. Installation instructions are provided.

Uploaded by

Carlos Araújo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
202 views10 pages

IBXUpd 608 Rdme

This document provides information about an update kit for InterBase Express (IBX) components for Delphi 6 and InterBase versions 5, 6, and 7. The update includes fixes and new features such as improved support for Boolean data types, XML output, and deprecation of IBClientDataset. Installation instructions are provided.

Uploaded by

Carlos Araújo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 10

INTERBASE EXPRESS UPDATE KIT FOR InterBase 5, 6 & 7

-----------------------------Welcome to the InterBase Express Update Kit for


Delphi 6 and InterBase 5, 6 & 7!
Please report all issues to Quality Central
(qc.borland.com). IBX bugs/suggestions go in
the add-on\InterBase components area. Whenever
possible please include a test case against the
employee sample database that comes with
InterBase.
TABLE OF CONTENTS
----------------1. What's New in the IBX Update Kit
2. Documentation
3. Minimum System Requirements
4. Installing the IBX Update Kit
5. Uninstalling the IBX Update Kit
6. Fixes since D7 original release
1. WHAT'S NEW IN THE IBX UPDATE KIT
------------------------------------For detailed information on new features of this
release, refer to the online help.
In the help contents, choose "What's New in Delphi".
IBXpress60.bpl is now ibxpress62.bpl due to interface
changes. Any package that depends on ibxpress.dcp
will require recompiling after installing this update.
You will get an error message that a function is missing
and do you wish to load this package later. Answer Yes
to this (you will get it twice) and then rebuild the
package. Answering no placed the package into a special
location in the registry and you can never have it
load on startup again without manually modifying
the registry.
ReportBuilder has a package named rbIBEXx.dpk which
falls in this category. Also the Bold packages will
require a recomile (you can find a copy of the package
itself in CodeCentral also). If you have previously
installed IBClientDataSet (see below) it will also require
a recompile.
Future warning - IBClientDataset is depreciated in D7
and likely to go away in later versions.
2. DOCUMENTATION
---------------IBX Help files are still in development. For an
overview of new features and functionality, see the
Delphi 6 What's New Help file and the What's new
section of this readme.
Delphi 5 users can download the Delphi 6 help file
available on CodeCentral for a newer help file
including the Admin components help.

The Developers Guide included in the InterBase 6


documentation set has more information concerning
using the IBX components.
Previous patches and readme files are available at either
http://codecentral.borland.com/codecentral/ccweb.exe/author?authorid=102.
Future patches will also be available at these locations.
3. MINIMUM SYSTEM REQUIREMENTS
-----------------------------Delphi 6 must be installed. There are no resource changes
so the existing resource Dll for the French and German
versions will work without the need of new Dlls.
4. INSTALLING THE IBX UPDATE KIT
------------------------------------Double-click on the IBX Update Kit setup file
(IBXDP608.EXE or IBXBCB608.exe to automatically launch the
IBX 6.08 setup program. Follow the setup steps from there.
5. UNINSTALLING THE IBX UPDATE KIT
-----------------------------------The installer was switched to Wise and the option to
store the backup of the previous files is given. Follow
the normal uninstall option in the Add/Remove programs
on the control panel.
6. Fixes/Changes since Delphi 6 release
-----------------------------------1. IBCustomDataset should now correctly allow for seeing
the old value when in cached update mode and cancel to
value that was at the start of the edit instead of all
the way back to the original read value.
2. Added Notification to the IBCustomDataset to stop an AV
that can happen when an IBUpdateSQL is on a form different
than the IBCustomDataset resides.
3. Added OutputXML method to IBCustomDataSet (IB 6.5 or
higher feature).
4. Added PSSet/GetParams DataSnap support to IBDataset.
5. ReRaises the exception in IBCustomDataset if the
OnUpdateError returns uaFail.
6. Calling ApplyUpdates when not in CachedUpdate mode now
raises an Exception.
7. Locate no longer right trims your passed value or field
values.
8. Added Boolean support to IBCustomDataSet (future IB 7.0
feature).
9. changing the transaction now unprepares IBCustomDatasets
correctly.

10. RefreshParams now works correctly for IBCustomDataset and


DataSnap.
11. Changing the SQL now correctly closes the Dataset.
12. IBCustomDataset's DoBeforeEdit fires before the IBX custom
code instead of after.
13. IBCustomDataset now honors the FixedChar property. Setting
it to false will right trim the string, leaving it true will
treat it like a CHAR data type.
14. Default value attributes correctly handled (Required is
turned off).
15. Fixed problems with PSExecuteStatment and the assignment
of Database and transaction properties.
16. Fixed a problem of generating parameters in PSExecuteStatement.
17. Fixed AV when PSGetQuoteChar is called, but no database assigned.
18. Fixed a bug in BookmarkValid when the underlying record had been
deleted.
19. Added support to copy the master value down to the detail field
on a new record. The GeneratorField will fire first before
the copy is made. Also there is a new global variable,
CopyMasterFieldToDetail, which MUST be true for this to work.
It defaults to false. The copy logic is simple, if
the master field name matches the detail param name and also
matches a detail field name it will be copied down.
20. Simple DefaultExpression support. Only values supported, not SQL
Expressions.
21. IBCustomDataSet's SetActive now sets the underlying StreamedActive
to thevalue passed and not true.
22. Create fields now correctly sets the ProviderFlags. This includes
pfInKey if the table has a primary key and computed fields not
having any ProviderFlags set.
23. IBDatabase added Primary key support to the Schema caching.
24. IBDatabase added In_Key to see if a field is in the key of a table.
25. IBTransaction - modification of AutoStopAction. AutoStopAction only
fires if the transaction was autostarted.
26. IBTransaction - New Property AllowAutoStart. When true (default) allows
TIBCustomDataset decendants to start the transaction when opening.
27. IBTransaction - New method - AutoStartTransaction, this starts a
transaction in such a way that the AutoStopAction fires when all
the datasets are closed.
28. IBDatabase - Timer creation delayed until needed (IdleTimer set
to a non 0 value).

29. IBTransaction - Timer creation delayed until needed (IdleTimer set


to a non 0 value).
30. IBDatabase - better support for loss of connection. Should no longer
stack overflow and everything is properly closed. The actual
error message though is not always a lost connection error message.
31. Better error message when LoginPrompt is true, but no LoginDialogExProc
is assigned.
32. Default Values found better for the Schema cache.
33. IBDatabaseInfo handles lost connections better.
34. IBEvent correctly returns the number of event counts.
35. IBEvents raises and exception if a connection is not active but
RegisterEvents is called.
36. IBEvents Registered is now based on the number of Threads active.
37. IBExtract supports Boolean data types (IB 7.0 future feature).
38. IBExtract checks the SQLDialect of the DB when determining
numeric field types.
39. IBExtract now correctly determines the Blob subtype.
40. IBX now loads the IBXML dll/so support if IB 6.5 or higher
available. These Dlls are only necessary to deploy if you
are using functionality from them, otherwise IBX will stub
out the function calls.
41. The isc_dsql_xml_Xxxx functions resolved for use.
42. IBQuery now supports Int64 params.
43. IBServices.pas source included.
44. TIBXSQLVAR now includes Boolean support (IB 7.0 future feature)
45. New TIBOutputXML class
TIBXMLFlag = xmlAttribute, xmlDisplayNull, xmlNoHeader;
TIBXMLFlags = set of TIBXMLFlag;
TIBOutputXML = class(TObject)
private
FTableTag: String;
FHeaderTag: String;
FStream: TStream;
FDatabaseTag: String;
FFlags: TIBXMLFlags;
FRowTag: String;
public
procedure WriteXML(SQL : TIBSQL);
property Stream : TStream read FStream write FStream;
property HeaderTag : String read FHeaderTag write FHeaderTag;
property DatabaseTag : String read FDatabaseTag write FDatabaseTag;

property TableTag : String read FTableTag write FTableTag;


property RowTag : String read FRowTag write FRowTag;
property Flags : TIBXMLFlags read FFlags write FFlags;
end;
property Stream - A TStream descendant that the output should be written t
o.
property
property
property
property
property

HeaderTag - The header tag to output.


DatabaseTag - Database tag to output.
TableTag - Table tag to output.
RowTag - row tag to output.
Flags - The XML Flags to use when generating the XML.

procedure OutputXML(sqlObject : TIBSQL; OutputObject: TIBOutputXML) - Call t


his procedure to actually output the XML file. Example procedure TForm1.Button1Click(Sender: TObject);
var
IBOutputXML : TIBOutputXML;
Stream : TStringStream;
begin
IBDatabase1.DatabaseName := Edit6.Text;
IBDatabase1.Connected := true;
IBTransaction1.StartTransaction;
IBOutputXML := TIBOutputXML.Create;
Stream := TStringStream.Create('');
try
IBOutputXML.HeaderTag := '<?xml version = "1.0"?>' + #10#13 + '<!-- Examples
XML from IB (overcash) -->' + #10#13;
IBOutputXML.DatabaseTag := Edit1.Text;
IBOutputXML.TableTag := Edit2.Text;
IBOutputXML.RowTag := Edit3.Text;
IBOutputXML.Stream := Stream;
IBOutputXML.Flags := [];
if CheckBox1.Checked then
IBOutputXML.Flags := IBOutputXML.Flags + [xmlAttribute];
if CheckBox2.Checked then
IBOutputXML.Flags := IBOutputXML.Flags + [xmlDisplayNull];
if CheckBox3.Checked then
IBOutputXML.Flags := IBOutputXML.Flags + [xmlNoHeader];
IBSQL1.SQL.Clear;
IBSQL1.SQL.Add(Edit4.Text);
OutputXML(IBSQL1, IBOutputXML);
Stream.Position := 0;
Memo1.Lines.LoadFromStream(Stream);
finally
IBOutputXML.Free;
Stream.Free;
IBSQL1.Close;
IBTransaction1.Commit;
IBDatabase1.Connected := false;
end;
end;
46. IBSQL now has a readonly property FieldCount to get the field
count.

47. IBSQL AsVariant now supports Int64 fields.


48. IBSQL AsVariant now supports varShortInt, varWord, varLongWord
Variant types.
49. TIBOutputRawFile and TIBInputRawFile now properly handles
VarChar, Blob and NULL values. Files outputed with the
older file format are not compatible with the newer format.
50. IBSQL now uses GUIDs to name the cursor so Randomize no
longer necessary when used in Dlls.
51. IBSQL - Calls to isc_dsql_prepare now send the correct SQLDialect.
52. IBSQL FreeHandle now checks for a valid connection before freeing
the handle.
53. IBSQL SetDatabase now only assigned the new value if the value
is different than the current Database value.
54. IBSQL - Changing the Transaction now frees the handle from the
old transaction first.
55. IBStoredProc now supports setting params that are of ftFixedChar
types.
56. IBTable - InitfieldDefs now correctly handles Default field types.
57. IBTable no longer errors out on Views, ReadOnly is set true instead.
58. IBUtils now has a procedure DecomposeDatabaseName to help break
apart connection strings.
59. IBXtras now included in ibxpress71.bpl (except visual controls).
60. New package VCLIB70.bpl contains the IBFilterDialog run time controls.
61. New package CLXIB70.bpl contains the QIBFilterDialog run time controls.
62. IBClientDatset depreciated an no longer installed by default. All
source now in the demos\db\SQLClientDataset directory.
63. IBClientDataSet fixed AV when IB client not available at design time.
64. IBClientDataSet MasterFields with multiple fields are now properly handled.
-- IBXtras changes since the 6.03 release
65. IBConnectionBroker - ExhustedDelay property now spelled correctly.
(Sorry I did not override DefineProperties to maintain backwards
compatibility)
66. IBConnectionBroker prepared for internationalization.
67. IBDatabaseINI prepared for internationalization.
68. IBFilterDialog - Execute is now a function and return a boolean
(true on the OK button false on the cancel).

69. IBFilterDialog prepared for internationalization.


70. IBScript - Support for RECONNECT. RECONNECT ends the current
connection and reconnects using the same connection parameters.
71. IBSCript - Character Sets now supported through the SET NAMES command.
72. IBScript - Transaction not started on some DML statements now fixed.
73. IBScript prepared for internationalization.
74. IBSQLParser - Parses SET NAMES command.
75. QIBFilterDialog - Added Notification to stop AVs when the underlying
dataset destroyed.
76. QIBFilterDialog - Execute is now a function and return a boolean
(true on the OK button false on the cancel).
77. QIBFilterDialog prepared for internationalization.
78. Sprig support (Object Tree View) for all appropriate IBXtras components
at design time.
7.05 and IB 7.0 exclusive features
---------------------------------1. IBExtract supports the new Boolean data type.
2. XSQLDA version 2 support for 68 byte meta data lengths.
3. Added TSQLVAR, TSQLVAR_V1 and TSQLVAR_V2. These encapsulate
either a XSQLVAR verison 1 or 2. Direct access to the
underlying record is no longer allowed.
4. TIBXSQLVAR now has a SqlVar property to get at the underlying
TSQLVar class.
5. TIBXSQLVAR's Data property now returns a TSQLVAR.
6. To set a XSQLVAR's data or ind size now call SetDataSize or
SetIndSize methods of TSQLVAR.
7. TIBXSQLVAR will create a TSQLVAR_V1 (version on SQLVAR) if a 6.5
or ealier client version is detected and a version 2 if 7.0
or higher is detected. The 7.0 client can correctly use a
version 2 against a 6.5 database (which understands only
version 1).
8. TSQLVAR now has a property SqlDef which allows statements like
FXSQLVAR^.sqltype and (not 1) = SQL_ARRAY
to be more cleanly written like
FXSQLVAR.SqlDef = SQL_ARRAY
9. TIBExtract has a new property, IncludeSetTerm, a boolean that
defaults to false. When true meta data scripts will include
SET TERM^; when needed.
10. IBScript no longer requires SET TERM statements for procedures
and triggers.

11. TIBStatisticalService supports the record version option (IB 7.0


only).
12. Lost connections hsould now give the corerct error message.
7.06 and IB 7.1 exclusive features
---------------------------------1. IB.pas - New exception, EIBPlanError, added. This will allow
you to selectively ignore plan exceptions.
2. IB.pas - IBAlloc doesn't call ReallocMem if a nil pointer is
passed, it instead just calls GetMem.
3. IBCustomDataSet.pas - TIBStringField more efficient in its memory
allocation.
4. IBCustomDataSet.pas - TIBStringField no longer calls Translate
when Transliterate is true. Because of the way the call is passed
this call had no effect at all, but did do an unnecessary StrLen call.
5. IBCustomDataSet.pas - PSExecute now implemented
6. IBCustomDataSet.pas - ApplyUpdates and CancelUpdates not longer
does the equivalent of a FetchAll afterwards. (QC 2971)
7. IBCustomDataSet.pas - TIBUpdateSQL IBX 7.05 "Update Failed" when
changing key field (QC# 3685)
8. IBCustomDataSet.pas - InternalLocate fails on timestamp fields
(QC 2022)
9. IBCustomDataSet.pas - IB 7.1 SQLPrecision support.
10. IBCustomDataSet.pas - IBX incorrectly sets virtual field required
flag to True. Now if the relation naem is an empty string it will
not be set required (even though the SQLDA implies it is). (QC 3599)
11. IBCustomDataSet.pas - PSGetTableName behavior modification. If
you have multiple tables in your join it will not return the table
that belongs to the first field returned by default. You can continue
to override this behavior with the Providers OnGetTableName event that
the past behavior always required.
12. IBCustomDataSet.pas - Fields that have no relation name now have their
provider fields cleared.
13. IBDatabase.pas - IBTransaction now has 3 new methods - StartSavePoint,
RollbackSavePoint and ReleaseSavepoint to support IB 7.1's savepoint
feature.
14. IBDatabase.pas - More work on behaving nicely when the conenction
is terminated abnormally.
15. IBDatabase.pas - GetFieldNames now sorts on position. You can maintain
the old behavior by setting hte TStringList's Sorted property to true.
16. IBDatabase.pas - AllowAutoStart now allows during design time to
auto start the transaction regardless of the setting.

17. IBDatabaseInfo.pas - All the TStrings results sets are now properly
cleaned up by the component instead of requiring the caller to
clean them up. Please not that you must not free these anymore
or you might get access violations.
18. IBCustomDataSet.pas - Incomplete Check for CanModify in IBCustomDataSet
(QC 2972)
19. Major performance fix on several design time components that retrieved
object lsits from the database (like TIBStoredProc).
20. Blob fields no longer have their pfInWhere provider flag set. (QC 3722)
21. .ib extension now recognized in the design time editors. (QC 3675)
22. IBDatabase.pas - isc_tpb_no_auto_undo supported now. (QC 2956)
23. IBError.pas - new IB 7.1 errors added.
24. IBEvents.pas - IBEvents AV in gds32.dll when adding events at runtime.
(QC 4285)
25. IBExtract.pas - Date strings are now exported correctly when exporting data.
26. IBExtract.pas - Fixed a bug with data extraction when skipping Blob
fields.
27. IBExtract.pas - Integrity contraints now quoted in Dialect 3 extracts
(QC 3037)
28. IBIntf.pas - GDS32.dll is now loaded through a class factory. You can get
at the IGDSLibrary through GetGDSLibrary function call. This stops the
posibility that during shutdown the client library is released before
all the IBX objects are destroyed. Each class that needs the client
library now will hold an interface pointer to the class keeping it
loaded beyond the finalization section if necessary.
29. IBIntf.pas - IBInstall.dll is now loaded through a class factory. You can g
et
at the IInstallLibrary through GetInstallLibrary function call. This stops
the
posibility that during shutdown the client library is released before
all the IBX objects are destroyed. Each class that needs the client
library now will hold an interface pointer to the class keeping it
loaded beyond the finalization section if necessary.
30. IBScript.pas - 7.1 Savepoint syntax supported.
31. IBScript.pas - Drop Generator supported.
32. IBScript.pas - Fixed parsing bug when importing a script and that script
ends with a comment and a blank line.
33. IBScript.pas - Fixed a prolbem around CONNECT statements when a connection
already exists.
34. IBScript.pas - changing SQL Dialect results in a database reconnection at th
e
new dialect level.

35. IBScript.pas - COMMIT/ROLLBACK [WORK] now commits both the DDL and
DML transaction when not in AutoCommitDDL mode.
36. IBServices.pas - the new (IB 7.1) restore option of ValidationCheck accepted
.
37. IBSQL.pas - The Executed SQL statement is now sent out to the SQLMonitor
before being executed. Now you can see what statement actually failed.
38. IBSQL.pas - SQLParams count no longer zeroed out when the handle is freed.
This allows you to continue to examine the parameter information (important
for IBDataset).
39. IBUpdateSQLEditor.pas - word wrap is no logner turned on due to parsing
problem with ':' character.
40. IBUpdateSQLEditor.pas - Calculated fields no longer displayed on the right
hand side since they can not participate in insert, update statements.
41. IBDataset and IBQuery now create TFTMBCDField's for Numerics with a size
< -4. In the past it would create a TFloat field. This should give more
accuracy and work better with DataSnap. Old persisted TFloat fields should
continue to work. If for some reason you have a problem with the TFLoat fie
ld
remove it and readd the field to be defined correctly.
42. IBSQL.pas - IBSQL now has a AsBCD property.
43. Error messages are now correctly sent to the SQL monitor.
44. AV bug with tracing turned on and multi threaded apps fixed.
6.07
---------------------------------1. AV gub when using non persisted fields BCD with scale > 4 (introduced in 7.0
6)
2. Fixed MIDAS issue when a BCB field's size and precision are equal.
3. Fixed IBExtract when extracting external functions with retuning parameter n
style.
6.08
---------------------------------1. AV bug with Events fixed.
2. Problem with persistent TFloatFields and Numeric(9,5+) fixed.
3. Reverted back to the older CachedUpdates code to eliminate
a reported, but never submitted reproducable case, from
the newsgroups. Due to the lack of a test case I did not have
time to try and create one so I had to go back to safe
code.

You might also like