2012-09-26 18 views
15

Estoy trabajando en un proyecto existente de MS Access 2010 que tiene un enlace de tabla vinculada a la base de datos del servidor Sql.Tabla vinculada ms ms 2010 cambio cadena de conexión

Cuando puntero del ratón sobre la tabla vinculada puedo ver una cadena de conexión 'ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user'

Esto parece un DSN tabla vinculada.

Pregunta

  1. Cuando la cadena de conexión localizar en? ¿Cómo cambiarlo (ejemplo de nombre de la base de datos)?

  2. ¿Cómo puedo crear una tabla vinculada dsn-less similar? En cualquier momento cuando creo una tabla vinculada, Access 2010 siempre me obliga a elegir \ create a dsn (file or machine).

+1

Puede usar el administrador de tablas vinculado para cambiar las conexiones. Use datos externos, ODBC para crear una tabla vinculada. Puede editar las conexiones con VBA. Ejemplo: http://stackoverflow.com/questions/4928134/changing-linked-table-location-programatically/4928209#4928209 – Fionnuala

+0

cadena de conexión dns-less no se puede cambiar en el administrador de tablas vinculadas. También he buscado todo el proyecto (código VBA) y no puedo encontrar la cadena de conexión que mencioné la conexión dsn-less. –

Respuesta

23

para imprimir todas las cadenas de conexión:

Dim tdf As TableDef 
Dim db As Database 

    Set db = CurrentDb 

    For Each tdf In CurrentDb.TableDefs 
     If tdf.Connect <> vbNullString Then 
      Debug.Print tdf.Name; " -- "; tdf.SourceTableName; " -- "; tdf.Connect 
     End If 
    Next 

Para crear una tabla vinculada:

With CurrentDb 
    ''If the table does not have a unique index, you will need to create one 
    ''if you wish to update. 
    Set tdf = .CreateTableDef("LocalName") 
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _ 
     & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user" 
    tdf.SourceTableName = "TABLE_NAME" 
    .TableDefs.Append tdf 
    .TableDefs.Refresh 
End With 

Para cambiar un enlace:

Set db = CurrentDB 
    Set tdf = db.TableDefs("MyTable") 
    tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=10.0.0.1;" _ 
     & "UID=testdb;APP=Microsoft Office 2003;WSID=abc;TABLE=dbo.user" 
    tdf.RefreshLink 
+3

En 'tdf.Refresh' recibí el error" El objeto no admite esta propiedad o método "y tuve que usar' ResfreshLink' en su lugar. –

+2

@MichalHosala Gracias por tomarse el tiempo para señalar el error. He corregido el código. –

15

Usted puede cambiar la conexión cadena usando la siguiente guía (Original Source).

En primer lugar, obtenga la cadena de conexión existente.

  1. Abrir MS Access
  2. botón derecho del ratón sobre una mesa que se utiliza para trabajar o que no están seguros de trabajo y elegir la opción “Vista Diseño”.
  3. Seleccione Sí en la pantalla de advertencia para continuar
  4. Si, a la derecha, no hay ninguna ventana de propiedades de la tabla, en la cinta (Access 2010), haga clic en Hoja de propiedades
  5. Esto revela una propiedad Description - copiar todo que está en esa propiedad y lo pega en el Bloc de notas o en algún lugar para más adelante.

En segundo lugar, actualice la cadena de conexión.

  1. clic en los datos externa en la cinta y elija 'Administrador de tablas vinculadas'
    1. Haga clic en la opción Siempre solicitar una casilla de verificación nueva ubicación - esta es una manera complicada para preguntar al usuario si (s) que wasts para cambiar la información de conexión
    2. Haga clic en botón Seleccionar todo o elegir las tablas que desea actualizar con marcas de verificación
    3. Haga clic en OK
  2. viene un cuadro de diálogo arriba.Haga clic en Nuevo
    1. Elija SQL Server como el controlador de
    2. clic en el botón Avanzada
    3. pegar todas esas cosas en el Bloc de notas
      • SALVO quitar la tabla = cosas ... hasta el siguiente punto y coma.
      • cambiar el nombre del servidor
      • Haga clic en OK
    4. A continuación, le pide que guarde todo esto en un archivo para más tarde. Elija un lugar en Mis documentos en una carpeta de conexiones o mejor aún en una ubicación de red para que otros lo utilicen más tarde
    5. Haga clic en Aceptar un par de veces
    6. Ahora Access reemplazará todas sus tablas con el nuevo DSN (detalles de conexión) cuerda.
+2

Esto me requiere especificar el archivo dns para cada tabla individualmente. ¿Qué sucede si tengo 100 tablas vinculadas en mi accdb? – Hill

+0

@Hill Parece que todas las tablas que verifique en el Administrador de tablas vinculadas se actualizarán con el nuevo DSN. Por lo tanto, no debería tener que actualizar cada uno individualmente. –

+2

Para mí, cuando hago esto, obtengo un diálogo separado para actualizar el DSN para cada tabla individual. Terminé encontrando un script que lo hará por ti. – Hill