Oracle Objects for OLE (OO4O) Version 2.2.2 Production
Release Notes
December 1997
This file contains important information specific
to this release of Oracle Objects for OLE version 2.2.2. The
following topics are covered:
* System requirements
* Limitations
* Getting Started
* Redistributable Files
* New Features
* Sample Files
* Summary of problems fixed by version and known
issues
System Requirements
* Intel-based PC running Windows NT or Windows 95. (NT 4.0, or Win95 with the DCOM
patch is required to take advantage of C++ Class Libraries thread safety feature).
* Minimum 486-50Mhz processor (Pentium recommended).
* 8 Mb memory (16 Mb recommended).
* 10 Mb free disk storage for the OO4O program files.
* Enough additional disk storage to create a local cache the size of your largest dynaset.
We recommend about 10 Mb of free disk space in your swap partition.
* 32-bit application capable of OLE scripting (e.g. Visual Basic 4 or 5, Excel 5.0/7.0, etc.)
or
supported C++ compiler (Microsoft Visual C++ 2.x or 4.x,5.x).
* Access to an Oracle 7.3 or an Oracle8 database, via either a local connection or a
network using SQL*Net.
* Oracle Required Support Files 8.0 (ships with
this product and also Sql*net 8.0 client).
Limitations.
This release is a 32-bit version of Oracle Objects
for OLE and will work on Windows NT and Windows 95. Even though
the In Process Server will run on either operating system, there
are differences in the installation process that require us to
provide separate installation scripts. Be sure to use the correct
installer for your operating system.
Class libraries are provided for Microsoft Visual
C++ version 2.x and version 4.x, version 5.x.
In this release we are discontinuing support for
Borland's C++ compiler. This release does not include OO4O class
libraries for Borland C++ and bound control libraries for OOWL.
What is included in this release:
32-bit In Process OLE Automation Server for Windows NT and Windows 95.
32-bit Class Libraries for Microsoft MFC 2.x/4.x/5.x.
32-bit Oracle Data Control (.OCX) for Windows NT
and Windows 95.
Getting Started
Considerations when moving from Visual Basic/JET/ODBC
to OO4O
1. Oracle Objects for OLE includes the Oracle Data Control. This can be made available to Visual basic development environment by adding Oracle Data Control (ORADC.OCX) using Custom Control option of the Tools menu under VB4 or the Components option of the Project menu under VB5. Please review the CONTROLS.WRI file for comments on tests with various data aware controls (i.e., Sheridan, Farpoint, Apex, etc.).
2. Read the topic on Error Handling since Oracle Objects for OLE error handling is significantly different.
3. Read the topic on Coding Techniques to avoid unnecessary object references.
4. Read the topic on Tuning and Customization so you may tune the data cache to suit your needs.
5. Read the new Tour Guide in the VB sample directory.
6. Read the section PL/SQL Supports to take full
advantage of PL/SQL stored procedure interfaces.
Basic Steps to convert from Visual Basic/JET/ODBC
to OO4O
1. Replace the VB data control with the Oracle Data Control .
2. Correct the Connect/Database name properties.
3. Correct the options on OpenDatabase() and CreateDynaset().
4. Change variables from native types to type 'OBJECT'.
5. Check your use of FieldSize(), GetChunk() and
AppendChunk().
Building the C++ Sample Applications
Since Microsoft Visual C++ 2.x/4.x stores path information
in the MSVC.INI file, we cannot supply the path information for
local environment. In those cases you will probably need to modify
the project to include the required paths. You should also read
the compiler specific documentation 'Bound Controls for MFC '
for the compiler you are using.
Typical Installation Layout
As part of a Typical Installation the following directories
will be created and will contain the corresponding files (the
ORAHOME directory is typically ORANT for Windows NT, ORAWIN95
for Windows 95, or ORAWIN for Windows 3.1):
\ORAHOME\MSHELP - Oracle Objects online documentation.
\ORAHOME\OO4O22 - SQL scripts and constants file.
\ORAHOME\OO4O22\CPP - Libraries, includes, DLLs, and source for the class library.
\ORAHOME\OO4O22\CPP\MFC - Libraries, includes and source for the MFC Bound Class Library.
\ORAHOME\OO4O22\EXCEL\SAMPLES - Excel Samples.
\ORAHOME\OO4O22\VB\SAMPLES - Visual Basic 4.0 Samples.
\ORAHOME\OO4O22\VB\SAMPLES\QT - Visual Basic 4.0 Quick Tour guide.
\ORAHOME\OO4O22\IIS\SAMPLES - IIS Samples.
Redistributable Files
If you cannot guarantee that your end user will have
this version of Oracle Objects for OLE installed on their machine,
you will need to redistribute certain files along with your application.
Please see the online help (TechnicalNotes-->Redistributable
Files) for more information about which files are involved.
When not installed by the Oracle installer, the Oracle
Data Control (ORADC.OCX) will have to be registered for it to
function. The OCX may be registered by running regsvr32.exe oradc.ocx.
New Features
New features have been documented in the online help
file. Care has been taken so that existing features of the previous
version are supported.
The most important enhancements introduced in this
release are thread safety (supporting "Both" COM Threading
Models), and performance enhancements. Full documentation of these
new features is provided in the online help.
Please note that to use oo4o in a free threaded environment in Windows 95 the following string value whould be added to the InProcServer32 key.
ThreadingModel = "Both"
(This is added by default in the NT environment).
* The in-process server files as well as the data
control files (oip22.dll, oip22.tlb, oradc.ocx) are now copied
to the [ORACLE_HOME]/BIN directory. So please make sure that [ORACLE_HOME]/BIN
is on the path before attempting to run OO4O.
New Sample Files
New samples have been added to demonstrate threadsafety features and using it withing the Internet Information Server environment.
The C++ sample can be found at \ORAHOME\OO4O22\CPP\WORKBOOK\MULTHRD and the IIS samples
can be found at \ORAHOME\OO4O22\IIS\ directories.
Summary of problems and bug fixes.
The following are known issues:
Issues involving VIPER environment
An application that is built with the Oracle Objects
for OLE C++ class library or that uses the Oracle Data Control
will not run if that application uses an Oracle In Process Server
that is installed in VIPER.
GetChunkByte and AppendChunkByte methods will not
work in Visual Basic if Oracle In Process Server is installed
in VIPER.
Issues with the Oracle Data Control
For a list of known issues with the Oracle Data Control,
please read file CONTROL.WRI. This file also includes the version
of each of the most popular data aware controls that have been
tested.
Behavior of MoveTo, MoveRel, Movexxxxn
MoveTo:
The behavior of this method is correct but the documentation
does not make clear how this method behaves: Row numbers are
static between refreshes. They are very much like a row id. Row
numbers are not dynamically reassigned after deletions. Therefore
if you do a MoveFirst followed by a MoveTo 4, you will end up
at the same row, whether or not rows 2 and 3 have been deleted.
So, you should not do arithmetic based on values of row numbers
unless you can guarantee no row has been deleted (such as immediately
after a refresh). That is, you can not be sure sure how far apart
row 1 and row 4 are in terms of valid (non-deleted) rows. The
row number simply serves as a label or id and it's actual value
is meaningless in terms of relative position whenever rows have
been deleted.
MoveRel, Movexxxxn
These methods do not work correctly when rows have
been deleted. They incorrectly add the offset you provide to the
value of the rownumber and move there (or to the next available
valid row in the case the resulting row has been deleted). Unless
you can guarantee that no row has been deleted (such as immediately
after a refresh) these methods should probably not be used. Instead,
use a loop of MoveNext or MovePrev to achieve the same results.
Error: CoInitializeEx() not found in OLE32.DLL
You will receive an error similar to this one if
you use the Class Libraries with NT 3.51 or an older version of
Win95, and you call OStartup() with the MultiThreading option.
To correct this you need to obtain NT 4.0, or the DCOM patch for
windows95.
Bound control libraries (OMFC4x.LIB) support under MSVC 4.2 or later.
Current release of OMFC40.LIB is supported only
for MSVC 4.0 compiler. Since different version of MSVC 4.x compiler
requires different OMFC4x.LIB libraries, this release provides
the OMFC40.MAK under \{ORACLE_HOME}\oo4o22\cpp\mfc directory.
With this, client can built their own OMFC libraries for their
versions of compilers.
Find Methods
* The like operator will not work in multibyte languages.
* Table or synonym 'DUAL' is required in user's schema.
* Date values are retrieved and compared in VB format (actually the format specified in the Control Panel). Therefore date comparisons will fail if any other format such as the default Oracle format 'DD-MON-YYYY' is used.
* SQL function TO_CHAR(date, fmt) cannot be used because the first argument must be a date in native Oracle format and OO4O only handles 'string dates'.
* SQL function TO_DATE will convert a string to a date, but the OIP will convert it back to a string in VB format as described above and the comparison may still fail.
* FindPrevious and FindLast in a NO_CACHE dynaset
will not work; NoMatch will be set TRUE.
ORADB_NOWAIT Option of OpenDatabase
This option may be of limited use with Dynasets based on heavily used tables. This option
causes ORA-54 errors to occur with Row Locks as documented,
but it will also do the same for other resource contentions. In
certain cases too many ORA-54 errors may be raised to be manageable.
You will want to test your application with a realistic database
load to see if this affects you.
ORAPARM_INPUT, OUTPUT and BOTH IOTYPE with ADD and ADDTABLE Methods
Care should be taken to be sure that this value is
is correct. For example, with a stored procedure, ORAPARM_INPUT
should be used only with IN parameters, ORAPARM_OUT with OUT and
ORAPARM_BOTH only with IN OUT. Setting an incorrect option, such
as ORAPARAM_BOTH for a stored procedure parameter type IN can
result in errors in certain circumstances. You should create a
separate parameter if it's usage will be different. (In other
words ORAPARAM_BOTH means "for IN OUT parameters only".
It does not mean that you should use the parameter against one
stored procedure that has an IN parameter and then use it in another
that has an OUT param. In that case you should make two parameters).
The errors this can cause are rare, but if you see parameter related
errors you should check this.
The following differences in behavior (from version
1) have been noted:
The default property "value" will have to be explicitly used for the OraField object. This means that you cannot currently code something like:
OraField myfield = fields("empno")
OParameter myvalue = myfield ' Uses the default property
Instead, you will need to code the second line like this:
OParameter myvalue = myfield.value ' Explicitly
use the value property
This behavior has also been seen with the VB Edit Control, but only when the control contains an empty string. For example:
OraField myfield=fields("ename")
myfield.value = Text1 ' Uses the default property
The second line should be
myfield.value = Text1.Text ' Must use explicit
'Text' property
This appears to be a problem in VB4 (16 and 32-bit)
as the same code works in VB3 (16-bit). We cannot determine when
the default property can be safely used and when it cannot. Therefore,
we recommend you always use explicit properties for all objects
when using Oracle Objects For OLE in Visual Basic 4.0.
Version 1 allowed 'dirty' delete where you could
delete a row in the database that had been changed by another
user. This is considered a bug and has been 'fixed' in Version
2. However, this might cause your application to encounter an
error when it did not before. The error you will get is OIP 4119-Data
has been modified (the same error as if you tried to update a
row that had been changed). If you need 'dirty' deletes, you
can turn off checking for both delete and update with the ORADYN_DIRTY_WRITE
flag when you create the dynaset.
Some error codes have changed and applications that
attempt to 'trap' certain errors by number will not work any more.
This does not apply to error codes in the range 4096 to 4134
- they have not changed.
There appears to be a limit of 128 bytes when retrieving
error messages from the server. The symptom is that a call to
the Oracle7 server may fail shortly after a long message has been
retrieved. It is random and behaves differently with different
versions of SQL*Net and/or the RSF. We believe this is a problem
in these intermediate layers or with Unicode conversion. Unicode
is the 32-bit Windows representation of a string that allows for
double byte character sets such as the Japanese language Kanji.
This is not usually a problem as most server error messages are
short. However, it is possible to create user-defined server
errors of any length that may exhibit this behavior. Note that
the OIP will truncate a very long message to 1024 bytes, but this
is unrelated to the problem reported here.
OIP-4119 with Oracle 7.3.2.0.0 and LONG columns (fixed
in Oracle 7.3.2.2 or later)
There is a known problem with the Oracle RDBMS version
7.3.2.0 affecting LONG column which is fixed in version 7.3.2.2
or later. When inserting a new row into (or updating an existing
row in) a table containing a LONG column, you will get error OIP
4119-Data has been modified if you subsequently try and edit the
same row. This is because the database is returning NULL for
the LONG column just inserted when we try to lock the row by using
SELECT ... FOR UPDATE. The data really is in the database, but
cannot be accessed using SELECT ... FOR UPDATE. You should obtain
an upgrade to your database. There are three workarounds. The
first is to avoid editing the same row more than once! The second
is to create the dynaset using the 'DIRTY_WRITE' option. This
will prevent the OIP from attempting to lock the row, but has
the disadvantage of allowing your application to edit a row that
really was changed by another user. The third option is to use
the Refresh method of the dynaset after every Update. This maintains
data integrity but will have a severe impact on performance.
The fix for this problem is 7.3.2.2 and the rdbms bug# is 360985.
Bugs or problems fixed in Version 2.2.2 Production
General
*Performance enhancements
*Bookmarks do not work correctly in MultiByte (Japanese) environment
*GPF while using getchunk method in cpplib on windows 95
*Getting ora-1007 using getchunkbyte
*Dynaset can leave dangling lock on database
*Can't get the rowid from a dynaset with read-only specified
*Cannot get a correct record when execute find methods using rowid
*Oresult shows osuccess after osqlstmt executes with sql syntax error
*Lastservererrpos property not available for invalid sql statement
*PLSQL parameters defined as ORAPARAM_BOTH are rounded
Data Control
*Memory Leak Fixes
*Data Control does not work with Visual Basic 5 Image control
*Data Control does not work with newest Farpoint Grid (receives OIP-28015)
*Deleting rows leaves behind duplicate rows and causes repainting problems
*Data Control does not work in MultiByte (Japanese) environment
*Sheridan Enhanced Data Control does not work
*Navigating (using arrows) off edge of recordset causes repainting problems and OIP-4108
*Deleting last row causes grid to go blank
*Updating field with NULL does not commit
*Dynaset taken from Data Control recordset property
can have BOF set instead of EOF
Bugs or problems fixed in Version 2.2.1.0 Production
General
* Memory leak fixes
* Improved performance using OraDynaset.Fields syntax
* Inserting NULL value via a non char OraParamArray gives incorrect results.
* NULL values in parameter arrays are correctly returned as NULL .
* ORAPARAM_OUT parameters are not bound when used in a dynaset.
* NoMatch property doesn't work when used like "If OraDynaset.NoMatch = TRUE Then"
* ORADB_NOWAIT is not inherited by CreateSQL
* Error 440 when CreateDynaset with Early Binding
* Runtime error 438 when adding ORA21.TLB
* Runtime error 13 with ORA21.TLB
* ORA-1008 with CREATEPLSQLDYNSET
* CancelEdit does not change edit mode back to ODYNASET_EDIT_NOEDIT
* Transaction not commited after executing CreateSQL
* CopyToClipboard method does not work
Data Control
* OIP-4108 when recordset associated with Data Control is moved to EOF
* DataControl recordset loops back to first record
* Navigating off of last record using Data Control results in OIP-4108
* Dates not displayed correctly by Data Control.
* Data Control gives error -2147417848 Method Bookmark
of Object _IOraDynaset Failed
Bugs or problems fixed in Version 2.1.04.0 Production
General
* A number of memory leak bugs with parameters have
been fixed (bug# 431334)
Bugs or problems fixed in Version 2.1.03.0 Production
General
* Using bogus password with a second database connect (after a succesful first connection) now correctly returns an ORA-01017 error (Invalid username/password: logon denied).
* Oracle Data Control(OCX) does not respond to the "BeforeDelete" event for the MS Databound Grid.
* Run Time error 438 : Attempting to use early binding.
* Transaction is not auto-commited after executing CreateSQL method.
* Re-Displaying of Rows in Sheridan Grid control with Oracle OCX data control
* "Reposition" event is fired before the
row is positioned in the dynaset.
Bugs or problems fixed in Version 2.1.02 Production
General
* EMPEDT samples under C++ class library gives unhandled exceptions
* CreatePlsqlDynaset returns one less row
* Bind parameters do not return nulls where nulls are expected
* GPF when creating dynaset with function and parameter
* OraDynaset is non-updatable if its order by clause has multiple expressions
* RPAD() function in WHERE clause makes dynaset read-only
* Error OIP-4126 when retrieving null value from PL/SQL array
* Retrieving null value from PL/SQL array causes 'invalid use of null' error
* Invalid argument in OCI call when inserting with appendchunk method
* Error oip-4131 when selecting a long column
* Selecting filled-up varchar2 column causes PL/SQL error
* Create dynaset gives oip-4130 error (invalid data cache parameter)
* Inserting/updating or deleting a row in a dynaset causes GPF
* Orafields().OriginalName causes GPF
* Move methods generates an oip-4108 error
* Default row separator of CopyToClipboard method is newline only
* Copytoclipboard always copies 2 rows
* ExecuteSql call does not close cursor upon execution
* Getting find parser debugging messages while running application
* CopyToClipboard crashes Excel when column separator is a nonzero number
* Cannot use original field name to set value of
last column
Oracle Data Control Specific
* DatabaseName property cannot leave blank
* Data Control unable to retrieve long column
* OCX : skipping rows while navigating in text edit control
* Attaching NoCache dynaset to bound data grids hangs application
* Movenext button on ORADC does not move to newly added records in DbGrid
* Inserting a value in DbGrid when ORADC has no connection causes GPF
* Data control loses focus when iniatialized with record set of another data control
* Data control does not return ERR when INIT with dynaset created with NoMoveFirst
* Invoking oradc1.recordset.addnew after a recordset.delete with Sheridan causes GPF
* Trying to add new row after deleting all the rows with Farpoint hangs
* Data control trying to update dynaset when form is unloaded
* Using data control with grid on empty dynaset causes
GPF
Bugs or problems fixed in Version 2.0.7.2 Production
General
* AppendChunk using RAW data can corrupt the data
being stored (see New features).
Bugs or problems fixed in Version 2.0.7 Production
General
* When using NO_MOVEFIRST option; AddNewRecord, then Edit results in OIP-4098 (Invalid position).
* AddNewrecord on truncated table gives OIP-4108.
* AddNewrecord to empty table, fails on DuplicateRecord.
* AddNewrecord with number(4,10) column causes StartEdit to fail.
* NO_CACHE dynaset option breaks MoveLast when number of records is multiple of FetchLimit.
* Getting field value after adding new row to dynaset (with ORAMODE option) cause GPF.
* Reading or writing custom dynaset properties on closed dynaset causes unhandled exception.
* Change in field value triggered by the Server does not reflect immediately in dynaset.
* Updatable property for field objects does not work.
* Result set not ordered properly when SQL statement contains clause 'order by #'.
* No error message/number reported when OS file handles limit is reached.
* Not handling temp file creation problems gracefully.
* Submitting an incomplete find clause causes an unhandled exception.
* Using NoMatch property incorrectly resets the error state.
* NVL function in find clause raises error message OIP-4099: Field 'xxx' not found.
* Find methods sometimes fail to return correct row.
* Random failure in Find methods using SQL function calls.
* UPPER and LOWER functions do not work when used in Find methods.
* MinimumSize property for ParameterArray returns zero.
* GetValue on Parameter Array overwrites memory of previous array elements.
* Array inserts into NUMBER columns cause loss of precision.
* SQLStatement object RecordCount property does not work for Array inserts etc.
* Cannot pass string parameters back from stored procedure if initialized with less than 128 characters.
* Scalar Parameter object not truncating time portion of outputted date values.
* Passing variable into the second parameter of Parameters.Add causes OLE error.
* GPF in oraipsrv.dll when using VB 'for...each' for OraParameter Collection.
* Cannot connect to database if Japanese username is used.
* Cannot create a dynaset when using NLS code page.
* GetField function is not processed when Japanese field name is used.
* DuplicateRecord function returns error when Japanese column name is used.
* Update function returns error when Japanese column name is used.
* StartEdit function returns error when Japanese column name is used.
* Copyright/Trademark symbols in version info. is
not showing in Japanese OS.
Oracle Data Control Specific
* Oracle Data Control causes OIP-4119 after giving it a decimal value of '#.0'.
* Grid and ORADC: hanging problem when using values '0.###'.
* DLL not found error when using debug version of
oraclb.dll.
Oracle C++ Class Library Specific
* When adding or duplicating records using OBinder,
navigation can become confused.
Bugs or problems fixed in Version Beta 2.0.3
General
* When using the NO_MOVEFIRST option on dynaset creation, EOF and BOF are not set to True.
* ERROR$ does not contain error text for all errors listed in Error Handling (VB).
* Session.Rollback when applied to Data Control appears to commit instead.
* EOF not returned correctly from dynaset when number
of rows matches FetchLimit.
Enhancements added to Version 2.0.x
* Provide explicit Close methods for all objects for compatibility with VB.
* Provide Find methods and NoMatch property on dynaset.
* Provide tunable dynasets with extra cache/fetch parameter properties.
* Provide NO_MOVEFIRST option on dynaset.
* Provide additional Move methods e.g. MoveNextN.
* Provide ability to return PLSQL tables from stored procedures.
* Provide ability to reference field names that are expressions e.g. 'SUM(sal)', 'NVL(comm, 0)', 'sal+100'.
* Support Japanese Borland C++ version 4.52.
Bugs or problems fixed in Version 1.0.59, 1.0.6x
General
* OO4O creates a lot of network packets.
* Oracle data Control does not work when VB application is compiled (affects patch release 1.0.59 only).
* Overhead from two selects in readonly dynaset creation not justified.
* Using select on a LONG column returns OIP-4131 (with readonly dynaset).
* Recursive update on a dynaset containing a LONG gives OIP-4119 after 16 records.
* Explicit ROWID in SQL query is not found in Field
Collection by column name.
Oracle Data Control Specific
* TrueGrid: Won't populate sum(x) columns
Bugs or problems fixed in Version 1.0.57.0
General
* Oracle data control subtracts 1 second from time when committed.
* Conversion from Excel date to Oracle date loses a second.
* Signalling event messages > 127 bytes cause ORA-6512.
* Cannot pass varchar2 back from PLSQL if size > 128.
* MinimumSize property of OraParameter not readable.
* Deallocating C++ objects results in memory leak.
* Apparent memory leak when recycling dynasets.
* Memory leak with dynaset operations.
* Memory leak when using the LastServerErrText property.
Oracle Data Control Specific
* ORADC: Memory leak when scroll through images.
* Truegrid: ORADC buttons get suck in down position on ORA-1407.
* WMF files cannot be displayed using a picture/image
control and ORADC.
Oracle C++ Class Library Specific
* OMFC: Horizontal scroll bars do not work.
* In addition, several enhancements have been made
to the way we communicate with the Oracle7 Server, giving enhanced
performance and faster response for the initial query and subsequent
updates. The normal fetching of data from the server is unaffected.
Enhancements added to Version 1.0.55.0
General
* Return the number of rows processed from ExecuteSQL/Add
GetRowsProcessed to ODatabase.
Oracle Data Control Specific
* Added support for the VB Image and Picture controls.
Oracle C++ Class Library Specific
* Added IsFirst, IsLast methods to OBinder class.
The Type/Size Properties
* The Type property now returns meaningful values
for columns of type NUMBER. Internally though, the data is stored
in variant records as text to avoid errors due to precision and
scale. Also, the Size property may return values based on the
storage needed by Oracle rather than the number of bytes needed
to store the value. Developers accessing Oracle Objects for OLE
using their own OLE Automation interface should rely on the type
(and the size implied by that type) of the variant records, not
of the Type or Size properties. This behavior DOES NOT affect
users of Visual Basic, Excel, Access or the C++ class libraries
provided .with Oracle Objects for OLE.
Bugs or problems fixed in Version 1.0.55.0
General
* Large amounts of data stored in LONG RAW is not retrieved correctly.
* Connection object CommitTrans always raises an OLE Automation error.
* DbExecuteSQL is supposed to return number of records affected, but doesn't.
* Field.Type always returns TEXT for NUMBER columns.
* AppendChunk on an empty table doesn't correctly set the BOF/EOF flags.
* Setup: Banner says "Supports Borland 4.0" - should say "Supports Borland 4.0/4.5".
* Errors when using CHAR columns with the NoBlankStrip/OracleMode options of CreateDynaset.
* Edit/Update a date field, corrupts the field value in the database.
* Collection object enumerators do not function properly.
* CHAR columns cannot be edited twice.
* Next() method doesn't return the actual number of elements fetched.
* Excel: CreateDynaset("..", oradyn_nocache) causes GPF in ORAIPSRV.DLL.
* AppendChunk generates an OLE Automation Error on the second call.
* Program Aborted message from ORAIPSRV.DLL when updating columns to NULL.
* Shared Sessions/Connections do not work across applications. This feature did not properly work and has been removed from the product.
* Assigning a date field to an empty string causes an OLE Automation error on Update.
* Add/Edit/Delete not canceling an open Add/Edit.
* CreateDynaset not reporting Oracle errors when doing MoveFirst.
* GPF with a NULL password.
* Column names containing extended ASCII chars must be in upper case.
* SELECT .. FOR UPDATE NOWAIT on locked rows doesn't return an Oracle error.
* Longraw data truncated on OField.GetValue call
for > 64k record.
Oracle Data Control Specific
* Farpoint Combo Box: Cannot use the dropdown list.
* Sheridan Data Widgets: Combo Box: Current record doesn't change when typing in control.
* Not reporting the length of columns of type DATA_VT_MEMO correctly to bound controls.
* Farpoint Spread: Delete row is not working.
* Farpoint Spread: Insert not being committed.
* Sheridan Data Widgets Grid: Delete row is not working.
* Sheridan Data Widgets Grid : Can't insert.
* Sheridan Data Widgets Grid: Update adds garbage to end of data.
* Data Control property Enabled does not cause the control to repaint at run time.
* Sheridan Data Widget combo box 1.0D does not work
with the ODC.
Oracle C++ Class Library Specific
* References to unused OLE libs in the CPP samples.
* SetValue succeeds when it should fail due to no edit pending state.
* IsBOF/IsEOF not working in C++ on empty dynaset.
* OBinder IsOpen method has not been implemented.
* OBinder.UnbindObj (NULL,TRUE) causes GPF.
* BindtoBinder call reports success when field name passed is NULL pointer.
* BindtoBinder call GPF's if the OBinder address is NULL.
* GetFieldValue doesn't work on dates.
* GetErrorText returns inconsistent types.
* GetErrorText can return NULL, but should never.
* Sample code to implement OBoundval fails to set values.
* OParameter object should support creation with an OValue.
* OBinder class is not complete and requires better error handling.
* Bound widget library does not link with Borland C++ 4.5. Due to a change in the implementation of OWL, the library (oowl.lib) originally supplied will not link when using the version 4.5 compiler. A new library (oowl45.lib) has been supplied. Please read the file oowl.wri for further information on how to use the bound widget library with Borland C++ 4.5.
* OValue GPFs in Borland C++ when dealing with NULL pointers.
* OField.SetValue((const char *) 0 ) causes GPF in Borland, not MSVC.
* OBinder.IsChanged() returns true following a Refresh.
* ODynaset.DuplicateRecord() does not duplicate correctly.
* ParameterCollection.remove should trap NULL pointer, but doesn't.
* AppendFieldChunk method should return error for NULL source.
* Class methods are not type-checking for LONG types, and should.
* OValue::SetValue; on receiving NULL , should still allocate memory.
* GetValue, GetFieldValue cause GPF when (void *) 0 passed as argument .
* OParameter.Add with NULL column id causes GPF.
* OSession::GetNamedSession fails to return default session using NULL argument.