2010-06-22 10 views
5

Estamos utilizando MS Access como interfaz de informes para Oracle. Se accede a los datos a través de una conexión ODBC, y hay dos tablas vinculadas en Access to Oracle que son las tablas de datos sin formato. Me gustaría poder establecer la conexión y vincular las tablas desde el archivo de Access. De esta forma, los usuarios no tienen que preocuparse por configurar un DSN para la conexión ODBC (la mayoría de ellos no son usuarios muy técnicos, y será necesario mantenerlo de la mano para algo como esto), y finalmente podemos hacer que el archivo de Access apunte a diferentes entornos de prueba y generar informes.Programemente cree conexiones ODBC y tablas de enlaces en MS Access

¿Es posible hacer que la conexión de la base de datos se cree dinámicamente cuando se abre el archivo, y puedo cambiar dinámicamente a dónde se vinculan mis tablas vinculadas?

Respuesta

11

Desea una conexión de tabla vinculada sin DSN desde Access. Es posible y lo he hecho, pero no tengo el código conmigo. Creo que fue algo así como el siguiente (esto usa un servidor SQL pero Oracle simplemente tendría una cadena de conexión ligeramente diferente). Para tener las tablas creadas al inicio necesitará verificar la existencia de cada tabledef antes de intentar crearlas nuevamente y llamar a una subrutina como la siguiente en la base de datos de Access abierta.

Function LinkTables() 
    Dim DB As Database, tDef As TableDef 
    Set DB = CurrentDb 
    Set tDef = DB.CreateTableDef("YourAccessLinkedTableNameHere") 
    tDef.Connect = "ODBC;Driver={SQL Server};Server=srvname;Database=dbname;UID=sqluserid;PWD=sqlpwd" 
    tDef.SourceTableName = "dbo.YourSourceTableNameHere" 
    DB.TableDefs.Append tDef 
End Function 
+1

Tenga en cuenta que el formato de la cadena de conexión es diferente para cada base de datos que existe. Busque aquí una referencia: http://www.carlprothman.net/Default.aspx?tabid=81 –

+1

Si no necesita estar al tanto de lo que está sucediendo en la capa de la interfaz de usuario de Access, entonces reemplace: Set DB = CurrentDb - to: Set DB = Workspaces (0) .Databases (0) o para: Set DB = dbEngine (0) (0) Porque es considerablemente más rápido; tanto como cinco mil veces más rápido. –

Cuestiones relacionadas