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.