Argentina
Mapa del sitio  | Home | Worldwide
Microsoft
Buscar en Microsoft.com:
Ayuda y Soporte Técnico  
| Seleccione un producto | Búsqueda Avanzada | Grupos de noticias | Contáctenos

Cómo crear una conexión de tablas vinculadas de Access a SQL Server sin DSN

AVISO: Gracias por utilizar el servicio de Traducción Automática. Este artículo ha sido traducido por un sistema informático sin ayuda humana (Machine Translation). Microsoft ofrece estos artículos a los usuarios que no comprendan el inglés, exclusivamente, con el fin de que puedan entenderlos más fácilmente. Microsoft no se hace responsable de la calidad lingüística de las traducciones ni de la calidad técnica de los contenidos de los artículos así como tampoco de cualesquiera problemas, directos o indirectos, que pudieran surgir como consecuencia de su utilización por los lectores.
Id. de artículo : 892490
Última revisión : lunes, 26 de marzo de 2007
Versión : 1.4
Avanzado: Exige codificar experto, interoperabilidad y conocimientos de multiusuario.

Este Este artículo se aplica sólo a una base de datos de Microsoft Access (.accdb y .mdb).
En esta página

INTRODUCCIÓN

En este artículo se describe cómo crear una conexión de tablas vinculadas en Microsoft Access que no utiliza un nombre (DSN) de origen de datos a Microsoft SQL Server. También esto es una <I> conexión </I> sin DSN. En los ejemplos de que se contiene este Este artículo aplica a Microsoft Office Access 2007, Microsoft Office Access 2003 y Microsoft Access 2002.

Volver al principio

Más información

Puede utilizar un DSN para crear tablas vinculadas de SQL Server en Microsoft Access. Pero cuando se mueve la base de datos a otro equipo, debe volver a crear el DSN en aquel equipo. Este procedimiento puede ser problemático cuando lo tiene que realizar en más de un equipo. Cuando este procedimiento se realiza correctamente, las tablas vinculadas pueden no ser capaces de localizar el DSN. Por tanto, las tablas vinculadas pueden no ser capaces de conectarse a SQL Server.

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

Volver al principio

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 módulo nuevo y a continuación, agregue la función siguiente AttachDSNLessTable al módulo nuevo.
'//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 los de uno de los ejemplos siguientes del código en la macro AutoExec o en el evento de formulario de inicio Form Open:
Cuando utiliza la macro AutoExec, llame a la función AttachDSNLessTable y a continuación, transmita parámetros que son similares al siguiente de la acción EjecutarCódigo.
    AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
Cuando utiliza el formulario de inicio, agregue código que es 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 Debe ajustar Su lógica de programación cuando agrega más de una tabla vinculada a la base de datos Access.

Volver al principio

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

El método DAO.RegisterDatabase le permite crear una conexión DSN en la macro AutoExec o en el formulario de inicio. Aunque este método no quita el requisito para una conexión DSN, le ayuda a resolver el problema creando la conexión DSN en código. Para utilizar este método, cree un módulo nuevo y a continuación, agregue la función siguiente CreateDSNConnection al módulo nuevo.
'//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 vuelve a llamar al método RegisterDatabase, se actualiza el DSN.

Para llamar a la función CreateDSNConnection, agregue código que es similar a los de uno de los ejemplos siguientes del código en la macro AutoExec o en el evento de formulario de inicio Form Open:
Cuando utiliza la macro AutoExec, llame a la función CreateDSNConnection y a continuación, transmita parámetros que son similares al siguiente de la acción EjecutarCódigo.
    CreateDSNConnection ("(local)", "pubs", "", "")
Cuando utiliza el formulario de inicio, agregue código que es 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 de la base de datos de Access utilizando "myDSN" como el nombre de DSN.

Volver al principio


La información de este artículo se refiere a:
Microsoft Office Access 2007
Microsoft Office Access 2003
Microsoft Access 2002 Standard Edition

Volver al principio

Palabras clave: 
kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtes kbmt

Volver al principio

 

Buscar en

 
Búsqueda Avanzada

Seleccione idioma

 

Más soporte técnico

Herramientas


©2007 Microsoft Corporation. Todos los derechos reservados. Aviso legal |Marcas registradas |Privacidad