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

Seleccione idioma Seleccione idioma
Id. de artículo: 892490 - Ver los productos a los que se aplica este artículo
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).
Expandir todo | Contraer todo

En esta página

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 password
Function 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 Function

AttachDSNLessTable_Err:
    
    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End 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 If
    End 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 password
Function 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 Function
CreateDSNConnection_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 If
    End 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.

Propiedades

Id. de artículo: 892490 - Última revisión: lunes, 26 de marzo de 2007 - Versión: 1.6
La información de este artículo se refiere a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palabras clave: 
kbmt kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtes
Traducción automática
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

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com