I have created a Client in MS Access to send in parallel queries for execution in an Oracle Server 10g. The access method used is ODBCDirect. This requires the Access VB project to have a reference to the Microsoft DAO 3.6 Object Library. Bare in mind that YOU MUST create an ODBC data source in Windows from Control Panel -> Administrative Tools -> Data Sources (ODBC). You must also install the Oracle Client CD V.9 and above. This will istall the proper ODBC driver made by Oracle. After installation use a text editor to edit the file named (tnsnames.ora). You must add the following entry in the file making the appropriate changes in quotes (remove the quotes as well):

"OracleDatabseName" =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = "OracelServerIP")(PORT = "OracleServerListenerPort"))

)

(CONNECT_DATA = (SID = "OracleDatabaseName")(SERVER = DEDICATED))

)

The trick is shown in the following code fragments:

GLOBAL VARIABLES REQUIRED (Declared in Module)
--------------------------------------------------------------------------
Public AvailableConnections(14, 1) As String
Public odbcWorkspace As Workspace
Public OracleConnection(15) As Connection
Public dbs As Database
Public rstODBC(14) As Recordset

PREPARING AND ESTABLISHNG THE CONNECTION
--------------------------------------------------------------------------
For I = 1 To 14
If AvailableConnections(I, 0) = "" Then
Set OracleConnection(I) = odbcWorkspace.OpenConnection("MyODBCSourceName", dbDriverNoPrompt, False, "ODBC;DSN=MyODBCSourceName;UID=MyOracleLogin;PWD=M yOraclePassword;")
OracleConnection(I).QueryTimeout = 0
Set rstODBC(I) = OracleConnection(I).OpenRecordset(MySQLVariableWit hTheSQLText, dbOpenDynaset, dbRunAsync, dbReadOnly)
rstODBC(I).Connection.QueryTimeout = 0
AvailableConnections(I, 0) = "QUERY_ACTIVE"
End if
Next I

CHECKING QUERY STATUS AND RETREIVING DATA (Note: Data retreived from the Oracle server are stored localy in an Access table that matches the Oracle structure of the queried Table)
--------------------------------------------------------------------------
Set dbs = CurrentDb()
For I = 1 To 14
If AvailableConnections(I, 0) = "QUERY_ACTIVE" Then
If Not rstODBC(I).StillExecuting Then
While (Not (rstODBC(I).EOF))
sqlText = "INSERT INTO MY_LOCAL_TABLE ( Field1, Field2,...... ) VALUES ('" & rstODBC(I)![Field1]) & "', '" & rstODBC(I)![Field2] & "', '"................"')"
dbs.Execute (strSQL)
rstODBC(I).MoveNext
Wend
OracleConnection(I).Close
DoEvents
Set rstODBC(I) = Nothing
DoEvents
AvailableConnections(I, 0) = ""
End if
End if
Next I

Hint: In order to check the Queries status at regular intervals, you can create a function with the above code which will be called from a Timer event of the active form.