Como criar uma conexão sem DSN para o SQL Server para tabelas vinculadas no Access

Traduções deste artigo Traduções deste artigo
ID do artigo: 892490 - Exibir os produtos aos quais esse artigo se aplica.
Avançadas: Requer especialista de codificação, interoperabilidade e habilidades de multiusuário.

Este artigo se aplica somente a um banco de dados do Microsoft Access (.accdb e .mdb).
Expandir tudo | Recolher tudo

Neste artigo

INTRODUÇÃO

Este artigo descreve como criar uma conexão com o Microsoft SQL Server para tabelas vinculadas no Microsoft Access que não use um nome de fonte de dados (DSN). Isso também é conhecido como um DSN sem conexão. Exemplos do que este artigo contém se aplicam ao Microsoft Office Access 2007, para o Microsoft Office Access 2003 e para o Microsoft Access 2002.

Mais Informações

Você pode usar um DSN para criar tabelas vinculadas do SQL Server no Microsoft Access. Mas quando você move o banco de dados para outro computador, você deve recriar o DSN no computador. Esse procedimento pode ser problemático quando você precisa executá-la em mais de um computador. Quando esse procedimento não é realizado corretamente, as tabelas vinculadas não poderá localizar o DSN. Portanto, as tabelas vinculadas não consiga se conectar ao SQL Server.

Quando você deseja criar um link para uma tabela do SQL Server mas não deseja embutir um DSN na caixa de diálogo Fontes de dados , use um dos seguintes métodos para criar uma conexão sem DSN para o SQL Server.

Método 1: Usar o método CreateTableDef

O método CreateTableDef permite que você criar uma tabela vinculada. Para usar esse método, crie um novo módulo e, em seguida, adicione a seguinte função AttachDSNLessTable ao módulo novo.
'//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 chamar a função AttachDSNLessTable , adicione código que é semelhante a um dos seguintes exemplos de código na macro AutoExec ou no evento inicialização formulário Form_Open :
  • Quando você usar a macro AutoExec , chamar a função AttachDSNLessTable e, em seguida, passar parâmetros semelhantes às seguintes da ação ExecutarCódigo.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Quando você usa o formulário de inicialização, adicione código que é semelhante à seguinte ao 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
    Observação você deve ajustar sua lógica de programação quando você adiciona mais de uma tabela vinculada ao banco de dados do Access.

Método 2: Use o método DAO.RegisterDatabase

O método DAO.RegisterDatabase permite que você criar uma conexão DSN na macro AutoExec ou no formulário de inicialização. Embora esse método não remove a necessidade de uma conexão DSN, ele ajudar resolver o problema ao criar a conexão DSN no código. Para usar esse método, crie um novo módulo e, em seguida, adicione a seguinte função CreateDSNConnection ao módulo novo.
'//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
Observação se o método RegisterDatabase é chamado novamente, o DSN é atualizado.

Para chamar a função CreateDSNConnection , adicione código que é semelhante a um dos seguintes exemplos de código na macro AutoExec ou no evento inicialização formulário Form_Open :
  • Quando você usar a macro AutoExec , chamar a função CreateDSNConnection e, em seguida, passar parâmetros semelhantes às seguintes da ação ExecutarCódigo.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Quando você usa o formulário de inicialização, adicione código que é semelhante à seguinte ao 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
Observação Este método assume que você já criou as tabelas vinculadas do SQL Server no banco de dados do Access, usando "myDSN" como o DSN nome.

Propriedades

ID do artigo: 892490 - Última revisão: segunda-feira, 26 de março de 2007 - Revisão: 1.6
A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Palavras-chave: 
kbmt kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 892490

Submeter comentários

 

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