Oracle 7.3.4 to 8i oo4o 2,2 - overflow runtime errors - OO4O and Wizards(Archived)

We are in a process of transitioning our applications across to Oracle 8i (8.1.6) and part of this involves an older app using VB4.0 16 bit running through OO4O 2.2 and connecting to Oracle 7.3.4.
Whilst the application connects and runs fine for the majority of the time we do get spurrious runtime errors usually as Overflows. These are caused by simple databse actions usually when one follows the other e.g. insert/update or delete.
This can be addressed to a certain extent by executing a .refresh on the recordset but this is not a watertight solution.
I think the only sensible course of action would be to upgrade our OO4O to a version that works with Oracle 8.1.6 but I have a number of questions:
What would be the version to use to maintain compatibility between VB4.0.
We are using 16 bit VB4.0. Is there a 16 bit version of OO4O that caters for our situation? If not what would be the implication of running 32bit OO4O with a 16bit client.
We have a site wide Oracle license. Would we be covered for downloading a more recent version of OO4O?


ODP.NET 10 or 9

I don't understand the difference. My company has Oracle 9 servers, but the clients vary from 8 on up. So my question is: which of these ODP.Nets should I use?
To some degree your choice may be dictated by the installed client version. The version 9 ODP.NET requires a 9i client. The version 10 ODP.NET requires a 10g client. So, if you have a 9i Release 2 client on a machine you would use the 9i provider. If you have a 10g client, use the 10g provider. I tend to use the latest version I can to take advantage of features and performance improvements that have been added to each release. One thing to note is that the provider requires at least a 9i Release 2 or higher client, so if you have 8i clients, you will not be able to use ODP.NET with that version of the client software. You can, however, connect to an 8i database from the 9i client/ODP.NET if you wish.
Hope that helps a bit,
- Mark 
What are the major features gained by using the 10g version of ODP.NET compared to 9i? We're starting to upgrade our clients, and I'm wondering if it's worth it to go to 10g. I've looked for some sort of feature comparison, but haven't been able to find one.
I have a similar situation and have been scouring the net for a solution. We develop a software application and have several clients ranging from 8i to 10g. I don't have a problem forcing people to upgrade to at least 9i, but we need to be able to support BOTH clients.
Our application is compiled with ODP version 9. We found if we install it on a 9i client, it works (as long as ODP was installed on client). On 10g client it will not work saying oraops9.dll not found.
However, if you rename the oraops10.dll to oraops9.dll, it seems to work.
Is there ANY way to make the client compile as version independant so we can run on either 9i or 10g? 
Consult the release notes installed with the ODP.NET client for information on new features in each major ODP.NET release OR you can consult the ODP.NET FAQ: 
You can set up the policy DLLs that ODP.NET includes to redirect to the specific application to the right ODP.NET version you want to use. The file would be either one of the following depending on which version is being redirected.
You can then direct your Oracle9i application to use the Oracle10g client. 
How to set up Policy.9.2.Oracle.DataAccess.dll and Policy.10.1.Oracle.DataAccess.dll ?
They are only in client.
If my computer Ver is,
but program Ver is
Run Program's exe In my computer,Error.
How to do?
Thank you very much. 
Policy files are used to promote from a lower version to a higher version. They do not promote downward as it looks like you are wanting. In order for an application that was created using the version of the provider to run on your machine, you would need to upgrade to at least that version of the provider.
- Mark 
Thank you very much.
But we make a project for custmers
They are using a lower Ver,We can't make them to use a Higher Ver.
I want a solution to this problem.
The program is a high Ver, Run it the computer is a low Ver.
How to make it? 
You'll want to use application configuration files (for a specific app) or machine configuration files (for all applications on the machine) to setup the ODP.NET assembly version redirection.

Oracle Lite 10g / Windows CE

Hi, Good Morning!
My name is David Corrales from Spain,
I would like to know if it´s possible to use a Pocket PC (WinCE vers. 5.0) with Oracle Lite or not. I have to do a project about to conect some mobile devices to big Oracle Database. These mobile devices use WinCE 5.0 and I don´t know if I will have some problem, because the Oracle Lite´s datasheet speaks about WinCE vers.4.2 but not about vers.5.0.
Thanks you very much. 
It is not in the data sheet or supported platforms as far as i can see, but in testing out a Dell X51 which uses windows mobile 5, i have managed to set up the oracle lite client using the cab file download for a 10g Rel 2 server with the latest patches. There were sonme errors displayed on the cab file extract (but this may have been due to me messing about with the device), but it did seems to set up ok
Msync worked fine against the 10g R2 server and created the database as i would expect. It refused however to sync with our 10g R1 server so did not seem to be backwardly compatable. (older devices set up with the xscale cab file for 10g R1 do work against both servers - forward compatability, but not backward seems odd).
Be aware that the 10g R2 client install gives a couple of differences
1) msql is not a part of the cab file (is a part of the MDK kit, and the old exe also seemed to work
2) the connection string to the lite database used to use system/a as the user/password, in the new client it is system/<password of the user? for application databases (system/a seems to still work for the concli database)
You do not say what you are going to develop your software in, but for our PDA's we have a Java application running under creme. creme 3.x does not seem to work with CE 5 (exits immediately on start up), so you will need to choose your JVM on compatability with CE% as well. it is also forcing us up to a later version of print software etc. 
Hi! Thanks for your reply. I´m lost.
Ok, I will do the question of other way:
I have to do an application for a small device (PDA) for to read data from
a Oracle 9i Database. Ok, then I can use the Visual Studio 2003 or 2005
for to produce the software. I would like to use Oracle Lite 10g for the
small device, but, I don´t know very well if I will have problems between the
Oracle 9i Database and the Oracle Lite 10g. Other problem is that, if my
PDA works with Win CE 5.0, I can only use VS 2005...not?
If someone can give me some advices about how to do it?... 
You can use VS 2005 (.NET CF 2.0) to write your application, though, I don't think it is supported yet by Oracle. To access your database you will need to write an assembly in VS 2003 (uses the .NET 1.0 CF - which is supported by Oracle).
I am in production with a similar environment and everything is working smoothly. I'm still waiting on Oracle to release the .NET 2.0 support - supposedly it is coming in the release.
Regarding Win CE 5.0, I'm not sure about - I don't have a 5.0 device. It should support running .NET CF 1.0 applications/assemblies so I think you should be fine.

how to run different Oracle client versions on the same PC

I have developped an application (.Net 2.0, ODP v. 10). I must run it on PC where Oracle client version 8 is installed. The PC cannot be upgraded because of a client software running under this version.
I tried to install ODP v. 10 on this PC in different home, but the software using version 8 stops running.
Can Oracle Instant Client help ? But which version, 11 ? My application is based on ODP 10. Can ODP 10 access database via Instant Client 11 ?
Thanks for your help
Hi, I'd be really intrigued if you find this out, as I too have a customer who has Oracle Client (8.05) + Oracle 10G installed, both for 2 different indepentant applications...but ever since Oracle 10G was installed, the Application which uses Oracle8 produces errors...such as "Cannot focus a disabled or invisible window". The pplication which uses Oracle10 works perfectly.
Unfortunately I know very little about Oracle Client - so I apologise if this question/issue has been mentioned many times before.
The problem on Windows is: The 10g installation changed the default ORACLE_HOME,now it points to 10g and makes the 8.0.5 application invalid,because it runs now in a much higher environment. What I did in a similar situation, I created a batch file, which sets temporarily the old environment (in my case PATH,ORACLE_SID,ORACLE_HOME) and then invokes the application.
I don't know whether such a solution will work for you (8.0.5 is very old,desupported since a long time), my old version was

OCI on Solaris for Oracle 9i

I want to use OCI on Solaris for Oracle 9i.
I see that the shared library name is not like Oracle for Windows or Linux.
When I adjust the link to use the right library, the link succeeds, but the executable is unable to use the OCI Fastpath functions.
What is the secret to get these functions to work under Oracle 9i on Solaris? 
I should mention that the calling application is C++ and NOT java, so it is not a JDBC issue. 
Do you have fast path working under 9i for non-Solaris (you mention Windows and Linux)? I was thinking that fast path was really introduced in 10g and not really "all there" in 9i, but I could be remembering completely wrong on that.
Apologies if I'm way off base here,
- Mark 
We have no problems on other systems (e.g. Windows, Redhat Linux). The difficulty we have arises when the customer is using a 9i server. The version 10 instant client will not perform the fastpath functions against a version 9 server (apparently there was some kind of intenals changes). So under these circumstances we really have to use the 9i client. We have been using the Fastpath functions under 9i successfully for years, but we are having trouble on Solaris alone.

Supporting Multiple OO4O Versions

Is it possible for an application to support two different versions of the OO4O C++ Class Library without having to compile two different versions of said application? We'd like our application to be able to support an 8i AND a 9i version of OO4O. Based on research thus far, this doesn't sound like a viable option, but I'd like another developer to confirm this. Thanks. 
This issue was the main reason we moved away from using oo4o.
We could not always control which version of oo4o was installed on our users computers and therefore (as you did) had to build a version of our apps against each known version of the oo4o libraries.
We have since moved over to using OCI as it offers backwards compatibility.
Hi Adrian,
Adrian : "...and therefore (as you did) had to build a version of our apps against each known version of the oo4o libraries."
If I have only one development machine having oracle 9.2. Can I achieve what you have said in the above statement? If yes which all files of OO4O libraries should I copy on to my development machine for building my EXE?
How many versions of OO4O are out there for you guys were building verrsions of your apps.
If I have oracle 9.2 client, will this work on any en user m/c with 9.x client? or it works on 9.2 client only?
My application is VB6 based, can I use OCI libraries? or it can be used only from VC++?
It depends wether or not you can guarantee that all users that use the software will have the Oracle 9.2 client installed which uses oo4o version
Rather that copy the oo4o files over, the best method is to use the Oracle Universal Installer and install the oo4o component. You will find it under "Windows Interfaces".
There are lots of different version of oo4o, we used to have to support 18+ versions. Each one needed a specific application. It was a nightmare!
In my experience, each release of the Oracle Client ships with a different version of oo4o. Even minor releases seem to get a new version of oo4o.
OCI is "C" based so it is a lot more straight forward to use from C++. However, you could use OCI from VB if you:-
1) Buy in third-party components
2) Develop your own wrapper (COM would probably be the way to go) around the OCI that could be used by your apps. Alternatively, expose the functionality you need using a standard WIN32 DLL with exported APIs. Either method would require c++ development.
Hope this helps.
Thanks Adrian,
Your mail was very helpful. So if I need to support user-defined datatypes on oracle from VB6, the best is 3rd party components. If you are aware please let me know some of the 3rd party products that are available for VB6?
Hi Adrian,
I am facing a problem, and after reading your comment about multiple versions of OO4O, I thought, I could get some suggestion from you on the issue
I am working on a project which is a large application in VB 6 & Oracle 8i. Application is using Oracle object library (8.0.5 OO4O). Customer wants to change the oracle client & OO4O from 8.0.5 to 9i or 10g. On doing the application performance drops to about 1/5 of original.
I want to know why the application is behaving this way and what kind of changes are required to be done to application code to regain the original performance.
Thanks & regards
I have run into a problem with using a Visual Basic 6 application written for Oracle 8i (8.1.7) client and OO4O. It was built and runs on Windows 2000 and XP Pro.
The application does not work with the Oracle 9i Release 2 client running on Windows XP Pro. Even though we do have MDAC 2.8 and the VB6 runtime installed. Not sure if it had service packs for VB6 or not.
As a matter of fact, the Oracle 9i client install does not even install OO4O. We had to download and install ODAC for 9i.
The strange thing is we do not get an error on the 9i client even though the password does not get changed.
Anybody have any updates on OO4O having upwards and backwards compatibility? Are there certain service packs or hot fixes that need to be installed? Is there some conflict happening?
Or could I use the typelib from 8i OO4O (oip8.tlb) in the 9i client for it to work?Maybe late binding should have been used instead of early binding?
Would like to upgrade the 8i servers and clients to 9iR2, but this problem is preventing that form happening. Had to uninstalll the 9i client and then install the 8i client for the application to work. 
I resolved it. Here is what I discovered.
In Visual Basic 6, I was using early binding. The solution is to use late binding.
Early Binding:
' This only worked for me running on the 8i client if I built it using the 8i client.
' you have a Project - Reference for
' Oracle InProc Server Type Library - oip8.dll or whatever version you are using
Dim mOraSession As OraSession
Set mOraSession = New OracleInProcServer.OraSessionClass
On Error GoTo HandleError:
Set mOraDatabase = mOraSession.OpenDatabase( _
txtDatabase.Text, _
txtUserId.Text & "/" & txtOldPassword.Text, 0&)
Late Binding:
' This runs on both 8i and 9i clients.
' Do NOT have a Project - Reference to
' Oracle InProc Server Type Library - oip8.dll or whatever version you are using
Dim mOraSession
Set mOraSession = CreateObject("OracleInProcServer.XOraSession")
On Error GoTo HandleError:
Set mOraDatabase = mOraSession.OpenDatabase( _
txtDatabase.Text, _
txtUserId.Text & "/" & txtOldPassword.Text, 0&) 
How to I change the default ORACLE_HOME for an application that was written for 8i. We are testing an application upgrade - and I've deployed 10g client; but each time we lauch the application, it's looking for Oracle 8i *.dlls.