Access VBA tester si on a une table liée

Résolu/Fermé
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 - 29 août 2008 à 16:30
yakov Messages postés 113 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 13 juin 2009 - 2 sept. 2008 à 12:07
Bonjour,
j'ai réalisée une base access en multi utilisateurs.
Le problème est que j'ai rencontré des difficultées a cause des tables liées. En effet la méthode seek primarykey ne marche pas pour les tables liées et la méthode find ne marche pas pour les tables non liées.

Donc je souhaiterai savoir s'il est possible en VBA de tester si une table est liée ou non pour intégrer cette notion dans une base que je puisse dupliquer a l'infini au lieu d'avoir besoin de changer le code au moins deux fois a chaque modification.

Merci.
A voir également:

3 réponses

yakov Messages postés 113 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 13 juin 2009 75
2 sept. 2008 à 08:31
je te livre ici le petit code que j'utilise pour raffraichir les tables liées de ma BDD en fonction du magasin concerné.
ca devrait t'aider

en dao c'est la synthaxe suivante pour savoir si une table est liée.

dim db as dao.database
dim tb as dao.tabledef
set db=opendatabase(.......)
for each tb in db.tabledefs
if tb.attributes and dbattachedtable then
........

End If
Next
BDDClose '
db.Close
Set db = Nothing
Set tb = Nothing

j'espère que ca va t'aider
0
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 7
2 sept. 2008 à 09:48
Merci a toi, j'ai trouvé une autre solution, mais j'essaiera la tienne.
En fait le passe par une requete qui va calculer le nombre de msysobjects. Comme dans les tables liées elles n'y figurent pas (virtuelles) si je cherche une table en particulier et qu'elle n'y est pas je la trouve et j'adapte le code en conséquences.
Ci joint le code.

Merci a toi.

dans ma requete intitulée NatureTableRequete


SELECT Msysobjects.Name, Msysobjects.Name
FROM Msysobjects
WHERE (((Msysobjects.Name)="TB_Projet") AND ((Msysobjects.Type)=1))
ORDER BY Msysobjects.Name;

dans mon code :
Dim NatureT As Integer
Dim NatureTable As Integer
NatureT = DCount("*", " NatureTableRequete")
If NatureT = 1 Then NatureTable = 1
If NatureT <> 1 Then NatureTable = 2



Set db = CurrentDb()
Set Base_modifProjet = db.OpenRecordset("TB_DEI")
If NatureTable = 2 Then Base_modifProjet.FindFirst ("NumDEI=" & ListeNumDEI & "")
If NatureTable = 1 Then Base_modifProjet.Index = "primarykey"
If NatureTable = 1 Then Base_modifProjet.Seek "=", ListeNumDEI
0
yakov Messages postés 113 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 13 juin 2009 75
2 sept. 2008 à 12:07
bien... mais plus compliqué quand même....
0