A voir également:
- Access et ODBC
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Hns-wan-access-port-fwd ✓ - Forum Réseau
- Controller access network - Télécharger - Contrôle parental
- Acer quick access ✓ - Forum Windows
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 !
Recherche aussi dans l'aide du coté de la méthode connect des objets TableDef.
[CurrentDB.TableDefs(<indexe>).connect = ...]
[CurrentDB.TableDefs(<indexe>).connect = ...]
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.
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.
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
(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