Comment créer une connexion sans DSN à SQL Server pour les tables liées dans Access

Traductions disponibles Traductions disponibles
Numéro d'article: 892490 - Voir les produits auxquels s'applique cet article
Options avancées : nécessite codage expert, de l'interopérabilité et de compétences multi-utilisateur.

Cet article s'applique uniquement à une base de données Microsoft Access (.accdb et .mdb).
Agrandir tout | Réduire tout

Sommaire

INTRODUCTION

Cet article explique comment créer une connexion à Microsoft SQL Server pour les tables liées dans Microsoft Access qui n'utilise pas un nom de source de données (DSN). Cette opération est également appelée un sans DSN connexion. Les exemples de cet article s'appliquent à Microsoft Office Access 2007, de Microsoft Office Access 2003 et de Microsoft Access 2002.

Plus d'informations

Vous pouvez utiliser un DSN pour créer des tables SQL Server liées dans Microsoft Access. Mais lorsque vous déplacez la base de données vers un autre ordinateur, vous devez recréer le DSN sur cet ordinateur. Cette procédure peut être problématique lorsque vous devez effectuer sur plus d'un ordinateur. Lorsque cette procédure est exécutée pas correctement, les tables liées ne peut-être en mesure de localiser le nom de source de données. Par conséquent, les tables liées peuvent peut-être pas en mesure de vous connecter à SQL Server.

Lorsque vous souhaitez créer un lien vers une table SQL Server mais ne souhaitez pas irréversible code un DSN dans la boîte de dialogue sources de données , utilisez un des méthodes suivantes pour créer une connexion sans DSN à SQL Server.

Méthode 1: utiliser la méthode CreateTableDef

La méthode CreateTableDef vous permet de créer une table attachée. Pour utiliser cette méthode, créer un nouveau module, puis ajoutez la fonction AttachDSNLessTable suivante dans le nouveau 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
Pour appeler la fonction AttachDSNLessTable , ajoutez le code semblable à un des exemples de code suivant dans la macro AutoExec ou dans le l'événement de Form_Open de formulaire de démarrage :
  • Lorsque vous utilisez la macro AutoExec , appelez la fonction AttachDSNLessTable et puis transmettre des paramètres qui sont semblables aux suivantes de l'action ExécuterCode.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Lorsque vous utilisez le formulaire de démarrage, ajouter le code qui est semblable à celui-ci à l'événement Form_Open .
    Private Sub Form_Open(Cancel As Integer)
        If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
    Fin Si End Sub Remarque vous devez ajuster votre logique de programmation lorsque vous ajoutez plusieurs tables liées à la base de données Access.

Méthode 2: utiliser la méthode DAO.RegisterDatabase

La méthode DAO.RegisterDatabase permet de créer une connexion DSN dans la macro AutoExec ou dans l'écran de démarrage. Bien que cette méthode ne supprime pas la demande pour une connexion DSN, il permet de résoudre le problème en créant la connexion DSN de code. Pour utiliser cette méthode, créer un nouveau module, puis ajoutez la fonction CreateDSNConnection suivante dans le nouveau 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
Remarque si la méthode RegisterDatabase est appelée à nouveau, le nom de source de données est mise à jour.

Pour appeler la fonction CreateDSNConnection , ajoutez le code semblable à un des exemples de code suivant dans la macro AutoExec ou dans le l'événement de Form_Open de formulaire de démarrage :
  • Lorsque vous utilisez la macro AutoExec , appelez la fonction CreateDSNConnection et puis transmettre des paramètres qui sont semblables aux suivantes de l'action ExécuterCode.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Lorsque vous utilisez le formulaire de démarrage, ajouter le code qui est semblable à celui-ci à l'événement Form_Open .
    Private Sub Form_Open(Cancel As Integer)
        If CreateDSNConnection("(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
    Fin Si End Sub
note Cette méthode suppose que vous avez déjà créé les tables SQL Server liée dans la base de données Access en utilisant « myDSN » comme le nom de source de données nom.

Propriétés

Numéro d'article: 892490 - Dernière mise à jour: lundi 26 mars 2007 - Version: 1.6
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002
Mots-clés : 
kbmt kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 892490
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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