Access et ODBC

Fermé
Linuxfor men - 5 juil. 2004 à 16:59
 qsdf - 13 juil. 2004 à 13:33
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

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
Recherche aussi dans l'aide du coté de la méthode connect des objets TableDef.
[CurrentDB.TableDefs(<indexe>).connect = ...]
1
Linuxfor men
13 juil. 2004 à 12:10
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
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