Maken van een verbinding met SQL Server voor gekoppelde tabellen in Access

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 892490 - Bekijk de producten waarop dit artikel van toepassing is.
Geavanceerd: Expert codering vereist vaardigheden interoperabiliteit en meerdere gebruikers.

Dit artikel geldt alleen voor een Microsoft Access-database (ACCDB en MDB).
Alles uitklappen | Alles samenvouwen

Op deze pagina

INLEIDING

In dit artikel wordt beschreven hoe u een verbinding maken Microsoft SQL Server voor gekoppelde tabellen in Microsoft Access niet gebruikt een gegevensbronnaam (DSN). Dit wordt ook wel eenDSN-lozeverbinding. Dit artikel bevat voorbeelden van toepassing op Microsoft Office Access 2007, Microsoft Office Access 2003 en Microsoft Access 2002.

Meer informatie

U kunt een DSN in gekoppelde SQL Server-tabellen maken Microsoft Access. Maar wanneer u de database naar een andere computer verplaatst, moet u de DSN op de computer opnieuw. Deze procedure kan worden problematisch wanneer u hebben op meer dan één computer uitvoeren. Wanneer deze procedure is niet correct is uitgevoerd, gekoppelde tabellen niet mogelijk de DSN te vinden. Daarom gekoppelde tabellen mogelijk geen verbinding maken met SQL Server.

Als u wilt een koppeling maken naar een SQL Server-tabel maar doen niet wilt harde code een DSN in deGegevensbronnenhet dialoogvenster een van de volgende methoden gebruiken om een verbinding met SQL Server.

Methode 1: Gebruik de methode CreateTableDef

DeCreateTableDefmethode kunt u een gekoppelde tabel maken. Deze methode wilt gebruiken, maken een nieuwe module en voeg de volgendeAttachDSNLessTablefunctie van de nieuwe module.
'//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
Bellen deAttachDSNLessTablefunctie, code die vergelijkbaar is met een van de volgende code toevoegen voorbeelden in deAutoExecmacro of in het opstartformulierForm_Opengebeurtenis:
  • Wanneer u deAutoExecmacro, belt deAttachDSNLessTablefunctie en het doorgeven van parameters die vergelijkbaar met zijn de volgende van de actie ProcedureUitvoeren.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Wanneer u het opstartformulier, voeg code die vergelijkbaar is met de volgende deForm_Opende gebeurtenis.
    Private Sub Form_Open(Cancel As Integer)
        If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
    OpmerkingU kunt uw programmacode moet aanpassen wanneer u meer dan één toevoegen gekoppelde tabel met de Access-database.

Methode 2: De DAO gebruiken.Registerdatabase, methode

DeDAO.RegisterDatabasemethode kunt u een DSN-verbinding in deAutoExecmacro of in het opstartformulier. Hoewel deze methode niet Verwijder de eis voor een DSN-verbinding, helpt u het probleem DSN-verbinding maken met code. Deze methode een nieuwe maken module en voeg de volgendeCreateDSNConnectionfunctie van de nieuwe module.
'//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
OpmerkingAls deRegisterDatabasemethode opnieuw wordt aangeroepen, de DSN is bijgewerkt.

Bellen deCreateDSNConnectionfunctie, code die vergelijkbaar is met een van de volgende code toevoegen voorbeelden in deAutoExecmacro of in het opstartformulierForm_Opengebeurtenis:
  • Wanneer u deAutoExecmacro, belt deCreateDSNConnectionfunctie en het doorgeven van parameters die vergelijkbaar met zijn de volgende van de actie ProcedureUitvoeren.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Wanneer u het opstartformulier, voeg code die vergelijkbaar is met de volgende deForm_Opende gebeurtenis.
    Private Sub Form_Open(Cancel As Integer)
        If CreateDSNConnection("(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
OpmerkingDeze methode wordt ervan uitgegaan dat u hebt gemaakt de SQL Server gekoppelde tabellen in de Access-database met 'myDSN' als de DSN naam.

Eigenschappen

Artikel ID: 892490 - Laatste beoordeling: donderdag 17 maart 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Trefwoorden: 
kbprogramming kbconfig kbdatabase kbhowto kbinfo kbmt KB892490 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:892490

Geef ons feedback

 

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