Access et ODBC

Bonjour,

Voilà mon souci.
Dans une base Access, j’ai des tables ODBC qui sont protégées par Login/mdp cad que lorsqu'on veut les consulter, une boite de dialogue s'affiche demandant le Login et le mdp.
Après saisie correcte des informations, la table s'affiche.
Dans une macro, je lance automatiquement l'exécution d'une requete qui se sert d'une de ces tables. En conséquence, la boite de dialogue s'affiche et attend qu'on l'a renseigne.
Je voudrais pouvoir renseigner ces infos automatiquement sans avoir à les saisir.
Est ce possible dans Access? Ou faut il que je vois le pb dans le paramétrage ODBC?
Merci d'avance.

4 réponses

  1. Quand tu attaches tes tables, tu as une case à cocher "retenir le login et mot de passe". Il faut la cocher sous peine de rencontrer ton problème. Une fois l'attache créée, je ne connais pas de solution pour s'affranchir du mot de passe si cette case n'a pas été cochée. Donc refais tes attaches !
    1
    1. Recherche aussi dans l'aide du coté de la méthode connect des objets TableDef.
      [CurrentDB.TableDefs(<indexe>).connect = ...]
      1
      1. Merci pour ces conseils;

        Je pense qu'avec la première réponse, on peut s'en tirer.
        Mais il faut récrer toutes les attaches aux tables...galère.
        1
        1. Inspirez vous de celà :
          (je n'ai pas testé ni compilé, mais c'est l'idée à suivre pour ne pas devoir tout faire à la main)

          Option Compare Database
          Option Explicit
          Option Base 0

          Sub rattache()
          Dim nbTables As Long ' nombre de tables dans la liste
          Dim i As Long ' compteur de boucle
          Dim nouvelleTable As TableDef ' nouvelle table à lier
          Dim nomTable As String ' nom de la table
          Dim user As String ' nom utilisateur
          Dim mdp As String ' mot de passe
          Dim base As String ' nom de la base externe (tablespace ?)

          mdp = "xxx"
          user = "zzzz"
          base = "bbbb"

          ' compte le nombre de table
          nbTables = CurrentDb.TableDefs.Count

          ' parcours la collection des tables liées dans cette BDD pour récupérer leur nom et refaire les attaches
          For i = nbTables - 1 To 0 Step -1 ' respecter le décompte SVP sinon il y aura des Pb d'indexation lors du retrait des liens
          If Left(CurrentDb.TableDefs(i).Connect, 4) = "ODBC" Then ' si c'est une table liée
          nomTable = CurrentDb.TableDefs(i).Name ' récupère le nom de la table
          CurrentDb.TableDefs.Delete nomTable ' efface le lien
          ' création d'un nouveau lien
          Set nouvelleTable = CurrentDb.CreateTableDef(nomTable, dbAttachSavePWD, nomTable, "ODBC;DATABASE=" & nomTable & ";UID=" & user & ";PWD=" & mdp & ";DSN=" & base & ";;")
          CurrentDb.TableDefs.Append nouvelleTable ' rattache la table à la collection
          CurrentDb.TableDefs(nomTable).RefreshLink ' raffraichi la collection
          End If
          Next i
          End Sub
          1