IBXUpd608rdme

download IBXUpd608rdme

If you can't read please download the document

Transcript of IBXUpd608rdme

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. Wheneverpossible 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 willrequire a recomile (you can find a copy of the packageitself in CodeCentral also). If you have previously installed IBClientDataSet (see below) it will also requirea recompile.Future warning - IBClientDataset is depreciated in D7and likely to go away in later versions.2. DOCUMENTATION----------------IBX Help files are still in development. For anoverview of new features and functionality, see theDelphi 6 What's New Help file and the What's newsection of this readme.Delphi 5 users can download the Delphi 6 help fileavailable 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 eitherhttp://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 theIBX 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. Followthe normal uninstall option in the Add/Remove programson 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 to. property HeaderTag - The header tag to output. property DatabaseTag - Database tag to output. property TableTag - Table tag to output. property RowTag - row tag to output. property Flags - The XML Flags to use when generating the XML. procedure OutputXML(sqlObject : TIBSQL; OutputObject: TIBOutputXML) - Call this 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 := '' + #10#13 + '' + #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 release65. 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_ARRAY9. 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 implemented6. 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 get 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 the 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 field 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.06)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.