usando o banco de dados remoto do MS Access que se conecta ao servidor SQL remoto

1

Temos um aplicativo de banco de dados + aplicativo do Microsoft Access (no Servidor A) que se conecta a um servidor SQL remoto (Servidor B) usando a conexão ODBC DSN do Sistema (no Servidor A) ao servidor de banco de dados SQL.

Os usuários abrem esse banco de dados do Access remotamente, pois estão em um local compartilhado no servidor A. Eles ainda precisam criar uma conexão ODBC local em seus computadores para se conectar ao Servidor B.

Existe alguma maneira que eles possam acessar o banco de dados do Access e não tenham que criar uma conexão ODBC local?

obrigado antecipadamente

    
por Manjot 09.03.2011 / 00:15

2 respostas

1

Você pode eliminar a necessidade do DSN local em cada máquina usando um pouco de código no banco de dados do Access. É claro que você ainda precisa do driver ODBC apropriado instalado, mas espero que o que você precisa seja, provavelmente, padrão no Windows.

Um DSN local será necessário para criar inicialmente o banco de dados.

O seguinte no que eu uso para dinamicamente relinking a um banco de dados MySQL, então você precisará editá-lo adequadamente. O código é chamado a partir da macro AutoExec ou pode ser executado manualmente ou de um formulário.

Note que este não é o meu código, mas eu o uso há muito tempo e não me lembro de onde o comprei originalmente. Tudo o que fiz foi editá-lo para atender às minhas necessidades.

Option Compare Database

Public Function ReLinkTables()

Dim dbPUBS As DAO.Database
Dim tdfPUBS As DAO.TableDef
Dim strTable As String
Dim strConnect As String
Dim InFile As Integer


' Set the following variables tosuit your DB connection
Dim Server As String
Dim Database As String
Dim User As String
Dim Password As String

On Error GoTo 0
Set dbPUBS = Nothing
Set dbPUBS = CurrentDb
strConnect = "DRIVER={MySQL ODBC 3.51 Driver};" _
    & "SERVER=" & Server & ";" _
    & "DATABASE=" & Database & ";" _
    & "UID=" & User & ";" _
    & "PWD=" & Password & ";" _
    & "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384

' Refresh Access linked tables
For Each tdfPUBS In dbPUBS.tabledefs
    ' Only attempt to refresh link on tables that already
    ' have a connect string (linked tables only)
    If Len(tdfPUBS.Connect) > 0 Then
        strTable = tdfPUBS.Name

        ' Set the tables connection string
        tdfPUBS.Connect = strConnect

        ' and refresh the link
        tdfPUBS.RefreshLink
    End If
Next

' Refresh Connect String for all Pass-Through Queries
'strMsg = "Refreshing links for all Pass Through Queries."
'DoCmd.Echo True, strMsg
'For Each qdfPUBS In dbPUBS.QueryDefs
    'If Len(tdfPUBS.Connect) > 0 Then
        'qdfPUBS.Connect = strConnect
    'End If
'Next

Função final

    
por 09.03.2011 / 01:32
1

Não use um DSN ao definir o link para o SQL Server. Em vez disso, especifique a cadeia de conexão real (deve ser uma opção, mas não trabalhei com o Access por anos).

    
por 09.03.2011 / 00:17