**Cross-post from CodeGuru**

I have written an application which by nature is often launched then shut down; each time creating then losing a connection to an Oracle database.


To avoid that, I am trying to create an ActiveX exe that would connect to the Oracle database once and for all. My application could then use the already created and maintained connection from the ActiveX exe.

To test things out and make sure my idea can work, I created two projects:

The ActiveX exe with just one Class - clsOracle containing the code below (with MS Ado 2.8 declared)

Code:
 
Option Explicit

Private m_OracleConnection As ADODB.Connection

Private Sub Class_Initialize()

Set m_OracleConnection = New ADODB.Connection
   m_OracleConnection.Open ORACLE_CONN_STRING
End Sub

Public Property Get OracleConnection() As ADODB.Connection
   Set OracleConnection = m_OracleConnection
End Property

Private Sub Class_Terminate()
   Set m_OracleConnection = Nothing
End Sub
In a second project, I declare a reference to the first exe and try to connect - that part works fine. When I try to use the connection however, (RS.Open) I get an error (error 3001 - Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.)

Code:
Option Explicit

Dim test As ADODB.Connection
Dim x As clsOracle
Dim RS As ADODB.Recordset


Private Sub Command1_Click()

   RS.Open "select max(length) from respool_fibers where respooling_end_date > sysdate - 120", test, adOpenForwardOnly, adLockOptimistic, adCmdText
End Sub

Private Sub Form_Load()
  Set x = New clsOracle
  Set test = x.OracleConnection
  Set RS = New ADODB.Recordset
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  Set test = Nothing
End Sub
If I declared an ADO connection object instead of clsOracle and used it instead in the RS.Open statement, things would work just fine.

Am I approaching this all wrong? am I supposed to do something special when I compile the ActiveX exe?

Thanks for the help!!!