/ / Conexión ODBC de MS-Access a Oracle para SQL - oracle, ms-access, odbc

Conexión ODBC de MS-Access a Oracle para SQL - oracle, ms-access, odbc

Estoy tratando de conectarme a una base de datos Oracle con Access 2003.

Quiero usar una conexión ODBC y quiero configurarla para que el usuario no necesite ingresar una contraseña.

Sin embargo, uno de los problemas que tengo es que mi consulta sql usa INTERFACE. Products and Access ve el período y piensa que estoy tratando de abrir un archivo. IE Interface.MDB, cuando eso es parte de mi consulta sql.

Option Compare Database

Function OracleConnect() As Boolean

Dim ws As Workspace
Dim db As Database
Dim LConnect As String
Dim myQuery As String
Dim myRS As Recordset


On Error GoTo Err_Execute

LConnect = "ODBC;DSN=Oracle;UID=user;PWD=password;"

"Point to the current workspace
Set ws = DBEngine.Workspaces(0)

"Connect to Oracle
Set db = ws.OpenDatabase("", False, True, LConnect)

myQuery = "Select * from INTERFACE.Products"

Set rst = db.OpenRecordset(myQuery)


rst.Close
db.Close


Exit Function

Err_Execute:
MsgBox MsgBox("Error Number:  " & Err.Number & " Message: " & Err.Description)

End Function

Respuestas

3 para la respuesta № 1

¿Podrías probar algo como:

Set rst = db.OpenRecordset(mQuery, dbOpenSnapshot, dbSQLPassThrough)

Esto solo enviaría la consulta textualmente a la base de datos Oracle.

En el Acceder a la documentación para OpenRecordset encontrarás esta nota:

Si abre un Recordset en un espacio de trabajo de Microsoft Access y no especifica un tipo, OpenRecordset crea un Recordset de tipo tabla.

Esta puede ser la fuente del error que está recibiendo.

Como regla, sugeriría ser siempre explícito en sus parámetros para OpenRecordset: el comportamiento predeterminado no siempre es coherente y puede generar errores extraños.

No estoy seguro acerca de su diseño, pero una forma de facilitarle un poco las cosas puede ser simplemente crear tablas vinculadas en Access.
En ese caso, podría escribir consultas contra su INTERFACE.Products Tabla de Oracle como si fuera un local Products mesa.
También le evitaría tener que administrar las conexiones usted mismo.


0 para la respuesta № 2

El conjunto de registros que está creando debe usar una consultaescrito con Access SQL. La tabla debe ser una tabla de Access (una tabla definida en el mdb). Puede ser una tabla local o una tabla vinculada. Una tabla de Access no puede tener un "." (punto) en su nombre. Si tuviera que vincular la tabla Oracle INTERFACE.Products en Access, sería INTERFACE_Products (Access reemplazará los caracteres ilegales en el nombre de la tabla de la base de datos remota con "_") a menos que lo haya renombrado en Access. Por lo tanto, su consulta debe ser "Seleccionar * de INTERFACE_Products"

Es posible crear un conjunto de registros usando Oracle SQL, pero eso debe crearse con una consulta Pass-Through.