Cómo crear una conexión sin DSN a SQL Server para las tablas vinculadas en Access

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 892490
Avanzado: Requiere codificación experto, interoperabilidad, conocimientos y multiusuario.

Este artículo se aplica sólo a una base de datos de Microsoft Access (.accdb y .mdb).
INTRODUCCIÓN
En este artículo se describe cómo crear una conexión a Microsoft SQL Server para tablas vinculadas en Microsoft Access que no utilice un nombre de origen de datos (DSN). Esto es también conocida como un DSN conexión. Los ejemplos de este artículo contiene se aplican a Microsoft Office Access 2007, Microsoft Office Access 2003 y a Microsoft Access 2002.
Más información
Puede utilizar un DSN para crear tablas vinculadas de SQL Server en Microsoft Access. Pero, al mover la base de datos a otro equipo, debe volver a crear el DSN en ese equipo. Este procedimiento puede ser problemática cuando debe realizar en más de un equipo. Cuando este procedimiento no se realiza correctamente, las tablas vinculadas no puede localizar el DSN. Por lo tanto, las tablas vinculadas no podrá conectarse a SQL Server.

Cuando desea crear un vínculo a una tabla de SQL Server pero no desea codificar un DSN en el cuadro de diálogo Orígenes de datos , utilice uno de los métodos siguientes para crear una conexión sin DSN a SQL Server.

Método 1: Utilice el método CreateTableDef

El método CreateTableDef le permite crear una tabla vinculada. Para utilizar este método, cree un nuevo módulo y, a continuación, agregue la siguiente función AttachDSNLessTable al nuevo módulo.
'//Name     :   AttachDSNLessTable'//Purpose  :   Create a linked table to SQL Server without using a DSN'//Parameters'//     stLocalTableName: Name of the table that you are creating in the current database'//     stRemoteTableName: Name of the table that you are linking to on the SQL Server database'//     stServer: Name of the SQL Server that you are linking to'//     stDatabase: Name of the SQL Server database that you are linking to'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection'//     stPassword: SQL Server user passwordFunction AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)    On Error GoTo AttachDSNLessTable_Err    Dim td As TableDef    Dim stConnect As String        For Each td In CurrentDb.TableDefs        If td.Name = stLocalTableName Then            CurrentDb.TableDefs.Delete stLocalTableName        End If    Next          If Len(stUsername) = 0 Then        '//Use trusted authentication if stUsername is not supplied.        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"    Else        '//WARNING: This will save the username and the password with the linked table information.        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword    End If    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)    CurrentDb.TableDefs.Append td    AttachDSNLessTable = True    Exit FunctionAttachDSNLessTable_Err:        AttachDSNLessTable = False    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.DescriptionEnd Function
para llamar a la función AttachDSNLessTable , agregue código que es similar a uno de los siguientes ejemplos de código en la macro AutoExec o en el evento Form_Open de formulario de inicio:
  • Cuando se utiliza la macro AutoExec , llamar a la función AttachDSNLessTable y, a continuación, pase parámetros que son similares al siguiente de la acción EjecutarCódigo.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
  • Cuando se utiliza el formulario de inicio, agregue código similar al siguiente al evento Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then        '// All is okay.    Else        '// Not okay.    End IfEnd Sub
    Nota se debe ajustar su lógica de programación cuando se agrega más de una tabla vinculada a la base de datos de Access.

Método 2: Utilice el método DAO.RegisterDatabase

El método DAO.RegisterDatabase permite crear una conexión de DSN en la macro AutoExec o en el formulario de inicio. Aunque este método no quita el requisito de una conexión DSN, ayudarle a resolver el problema, creando la conexión DSN en el código. Para utilizar este método, cree un nuevo módulo y, a continuación, agregue la siguiente función CreateDSNConnection al nuevo módulo.
'//Name     :   CreateDSNConnection'//Purpose  :   Create a DSN to link tables to SQL Server'//Parameters'//     stServer: Name of SQL Server that you are linking to'//     stDatabase: Name of the SQL Server database that you are linking to'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection'//     stPassword: SQL Server user passwordFunction CreateDSNConnection(stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String) As Boolean    On Error GoTo CreateDSNConnection_Err    Dim stConnect As String        If Len(stUsername) = 0 Then        '//Use trusted authentication if stUsername is not supplied.        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr & "Trusted_Connection=Yes"    Else        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr     End If        DBEngine.RegisterDatabase "myDSN", "SQL Server", True, stConnect            '// Add error checking.    CreateDSNConnection = True    Exit FunctionCreateDSNConnection_Err:        CreateDSNConnection = False    MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description    End Function
Nota si se llama al método RegisterDatabase nuevo, el DSN se actualiza.

Para llamar a la función CreateDSNConnection , agregue código que es similar a uno de los siguientes ejemplos de código en la macro AutoExec o en el evento Form_Open de formulario de inicio:
  • Cuando se utiliza la macro AutoExec , llamar a la función CreateDSNConnection y, a continuación, pase parámetros que son similares al siguiente de la acción EjecutarCódigo.
        CreateDSNConnection ("(local)", "pubs", "", "")
  • Cuando se utiliza el formulario de inicio, agregue código similar al siguiente al evento Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If CreateDSNConnection("(local)", "pubs", "", "") Then        '// All is okay.    Else        '// Not okay.    End IfEnd Sub
Nota Este método supone que ya ha creado las tablas de SQL Server vinculado en la base de datos de Access utilizando "myDSN" como el DSN de nombre.
ACC2002 ACC2003 Jet ODBC SQL Server VB VBA

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 892490 - Última revisión: 03/26/2007 23:16:09 - Revisión: 1.6

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbmt kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtes
Comentarios