Tabela do Access ligada ao SQL Server sem utilização DSN

A melhor maneira de optimizar a utilização de um FRONTEND em MS Access é através da ligação ao SQL Server. Assim, esta ligação poderá ser efectuada de forma automática utilizando o seguinte código.

' 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 "Foi encontrado um erro na ligação das tabelas ao servidor SQL: " & Err.description
End Function

 

Este código poderá também ser utilizado para actualizar alguma tabela previamente ligada do SQL Server, visto que, inicialmente é efectuada uma verificação se a tabela já existe no MS Access.