Jak vytvořit bez DSN připojení k serveru SQL Server pro propojené tabulky v aplikaci Access

Upřesnit: Vyžaduje odborných kódování interoperability a víceuživatelské dovedností.


Tento článek se týká pouze databáze aplikace Microsoft Access (ACCDB a MDB).

ÚVOD

Tento článek popisuje, jak vytvořit připojení k serveru Microsoft SQL Server pro propojené tabulky v aplikaci Microsoft Access, který nepoužívá název zdroje dat (DSN). Je také znám jako bez DSN připojení. Tento článek obsahuje příklady použití aplikace Microsoft Office Access 2007, Microsoft Office Access 2003 a aplikace Microsoft Access 2002.

Další informace

Chcete-li vytvořit propojené tabulky serveru SQL Server v aplikaci Microsoft Access můžete použít DSN. Ale pokud databázi přesunete do jiného počítače, je nutné znovu vytvořit DSN v počítači. Tento postup může být problematické, pokud je třeba provést na více než jednom počítači. Při provádění tohoto postupu není správně propojené tabulky není možné vyhledat název DSN. Proto propojené tabulky pravděpodobně moci připojit k serveru SQL Server.

Pokud chcete vytvořit propojení k tabulce serveru SQL Server, ale nechcete pevně zakódovat DSN v dialogovém okně Zdroje dat , použijte jednu z následujících metod k vytvoření připojení k serveru SQL Server bez DSN.

Metoda 1: Použití metody CreateTableDef

CreateTableDef metoda umožňuje vytvořit propojenou tabulku. Pokud chcete tuto metodu používat, vytvořte nový modul a přidejte následující AttachDSNLessTable funkce do nového modulu.
'//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

Pro volání AttachDSNLessTable funkce, přidáte kód, který je podobný následující kód příklady v AutoExec makro nebo spouštěcí formulář Form_Open událost:
  • Při použití makra AutoExec volání AttachDSNLessTable funkce a poté předat parametry, které jsou podobné následující z akce SpustitKód.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
  • Při použití spouštěcího formuláře přidáte kód, který je podobný následujícímu Form_Open událost.
    Private Sub Form_Open(Cancel As Integer)    If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
    '// All is okay.
    Else
    '// Not okay.
    End If
    End Sub
    Poznámka: Při přidávání více propojené tabulky v databázi aplikace Access, musíte nastavit programovací logiky.

Metoda 2: Použití rozhraní DAO. RegisterDatabase metoda

DAO. RegisterDatabase metoda umožňuje vytvořit připojení DSN v AutoExec makro nebo spouštěcí formulář. Přestože tato metoda neodebere požadavek na připojení DSN, pomoci vám vyřešit problém s vytvořením připojení DSN v kódu. Pokud chcete tuto metodu používat, vytvořte nový modul a přidejte následující CreateDSNConnection funkce do nového modulu.
'//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

Poznámka: Pokud RegisterDatabase metoda je volána znovu, je aktualizován DSN.

Pro volání CreateDSNConnection funkce, přidáte kód, který je podobný následující kód příklady v AutoExec makro nebo spouštěcí formulář Form_Open událost:
  • Při použití makra AutoExec volání CreateDSNConnection funkce a poté předat parametry, které jsou podobné následující z akce SpustitKód.
        CreateDSNConnection ("(local)", "pubs", "", "")
  • Při použití spouštěcího formuláře přidáte kód, který je podobný následujícímu Form_Open událost.
    Private Sub Form_Open(Cancel As Integer)    If CreateDSNConnection("(local)", "pubs", "", "") Then
    '// All is okay.
    Else
    '// Not okay.
    End If
    End Sub
Poznámka: Tato metoda předpokládá, že jste již vytvořili SQL Server propojené tabulky v databázi aplikace Access pomocí "myDSN" jako název DSN.
Vlastnosti

ID článku: 892490 - Poslední kontrola: 16. 1. 2017 - Revize: 2

Váš názor