Como criar uma ligação sem DSN para SQL Server para as tabelas ligadas do Access

Traduções de Artigos Traduções de Artigos
Artigo: 892490 - Ver produtos para os quais este artigo se aplica.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.accdb e .mdb).
Expandir tudo | Reduzir tudo

Nesta página

INTRODUÇÃO

Este artigo descreve como criar uma ligação ao Microsoft SQL Server para tabelas ligadas no Microsoft Access que não utilize um nome de origem de dados (DSN). Isto também é conhecido como um DSN ligação. Os exemplos contidos neste artigo aplicam-se para o Microsoft Office Access 2007, para o Microsoft Office Access 2003 e para o Microsoft Access 2002.

Mais Informação

Pode utilizar um DSN para criar tabelas ligadas do SQL Server no Microsoft Access. Mas quando move a base de dados para outro computador, tem de recriar o DSN nesse computador. Este procedimento pode ser problemático quando tem de executá-lo em mais do que um computador. Quando este procedimento não é executado correctamente, as tabelas ligadas não conseguir localizar o DSN. Por conseguinte, as tabelas ligadas não conseguir ligar ao SQL Server.

Quando pretende criar uma ligação a uma tabela do SQL Server, mas não pretende codificar um DSN na caixa de diálogo Origens de dados , utilize um dos seguintes métodos para criar uma ligação sem DSN para SQL Server.

Método 1: Utilizar o método CreateTableDef

O método CreateTableDef permite criar uma tabela ligada. Para utilizar este 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 semelhante a um dos seguintes exemplos de código na macro AutoExec ou o evento de Form_Open do formulário de arranque:
  • Quando utiliza a macro AutoExec , chamar a função AttachDSNLessTable e, em seguida, passar parâmetros semelhantes à seguinte da acção ExecutarCódigo.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Quando utiliza o formulário de arranque, 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
    NOTA: tem de ajustar a lógica de programação quando adiciona mais do que uma tabela ligada à base de dados do Access.

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

O método DAO.RegisterDatabase permite-lhe criar uma ligação de DSN na macro AutoExec ou no formulário de arranque. Embora este método não remove o requisito para uma ligação de DSN, ajudá-lo resolver o problema criando a ligação de DSN, Data Source Name no código. Para utilizar este 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
Nota se o método de RegisterDatabase é chamado novamente, o DSN é actualizado.

Para chamar a função CreateDSNConnection , adicione código que é semelhante a um dos seguintes exemplos de código na macro AutoExec ou o evento de Form_Open do formulário de arranque:
  • Quando utiliza a macro AutoExec , chamar a função CreateDSNConnection e, em seguida, passar parâmetros semelhantes à seguinte da acção ExecutarCódigo.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Quando utiliza o formulário de arranque, 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
Nota Este método assume que já tiver criado as tabelas de SQL Server ligado na base de dados do Access utilizando "myDSN" como o DSN de nome.

Propriedades

Artigo: 892490 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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