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

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

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
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).
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 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 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 IfEnd 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 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 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 IfEnd 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.
ACC2002 ACC2003 Jet ODBC SQL Server VB VBA

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 892490 - Última Revisão: 03/26/2007 23:16:09 - Revisão: 1.6

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

  • kbmt kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtpt
Comentários