J'ai suivi le tutoriel à cette adresse et je me suis arrété à la fin du chapitre VIII. Ouverture de la base Frontale avec test des liaisons.
J'obtien une erreur 0 quand je lance ma base frontale.
D'où cela provient-il ?
Merci![]()
J'ai suivi le tutoriel à cette adresse et je me suis arrété à la fin du chapitre VIII. Ouverture de la base Frontale avec test des liaisons.
J'obtien une erreur 0 quand je lance ma base frontale.
D'où cela provient-il ?
Merci![]()
Bonjour
Pourrait-on avoir le message de l'erreur, car on ne les connait pas tous par coeur
Starec
Voilà l'erreur :
Cela n'apporte pas bien de précision ... enfin je ne pense pas
Je pense que voir mon code vous sera plus utile, je vous fait donc parvenir ma base de données.
Bonjour,
Tu as des erreurs en pagaille
1) La table tblAdmin doit se trouver dans la dorsale et liée, et non dans la frontale
2) Dans chaque module, après Option Compare Database, tu mets Option Explicit, comme ceci.
3) Si tu compiles après ça, tu auras des erreurs. En premier, tu dois cocher la référence à DAO (voir le tutoriel), puis tu auras un ou deux noms de variables à corriger.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Option Compare Database Option Explicit
4) Il y'a une erreur de nom, sauf erreur ici
Tu as rst!tableattachee, ce qui ne correspond pas au champ de ta table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 'Boucle parcourant la base de données IEDV For Each tbdTables In dbBase.TableDefs 'Test pour savoir si c'est une table liée If tbdTables.Attributes And dbAttachedTable Then rst.AddNew 'Ajoute un enregistrement rst!TablesAttachees = tbdTables.Name 'Ajoute la table dans le champ rst.Update 'Mise à jour End If Next tbdTables
5) Enfin
La première ligne, c'est rst.EOF et non rst.BOF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 While Not rst.EOF 'Nous définissons l'objet TableDefs en fonction de la table stockée dans tblTablesAttachees With dbBase.TableDefs(rst!TablesAttachees.Value) 'Défini la propriété connect da le table avec la nouvelle base .Connect = ";DATABASE=" & strChmFichier 'On remet à jour la liaison de la table .RefreshLink End With ' on efface l'enregistrement de la table rst.Delete 'On passe à l'enregistrement suivant rst.MoveNext Wend
Ca devrait déjà mieux aller.
Redis-nous.
Domi2
Je met donc la table tblAdmin dans la dorsale et je l'a lie dans la frontale. Dois je faire pareil pour la table tblTablesAttachees ?
2) J'ai mis Option Explicit comme vous me l'avez indiqué.
3) J'ai coché DAO dans outils/references
il s'agit bien de rst!tableattachees
5) j'ai corrigé mon erreur en remplacant BOF par EOF.
Merci beaucoup pour votre aide, j'attend une réponse pour la table tblTablesAttachees et je vous tiens au courant par la suite de ce qu'il se passe
Re,
Non, il faut la laisser dans la dorsale.Je met donc la table tblAdmin dans la dorsale et je l'a lie dans la frontale. Dois je faire pareil pour la table tblTablesAttachees ?
Tu as compilé ton code ? Plus d'erreurs ?
Pour le rst!table... Il y'en a un de faux. Il faut bien contrôler, car tu n'auras aucune erreur à la compilation.
Domi2
Ok, donc j'ai mis la table tbladmin et tblTablesAttachees dans la table principale et nul part ailleur.
Dans le tuto, des fois il utilise tblTablesAttachees comme ici :
et des fois il utilise TablesAttachees :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Vide la Tables contenant la liste des tables attachées DoCmd.RunSQL "DELETE * FROM tblTablesAttachees"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 'Boucle Parcourant toutes les tables de la Bdd en cours For Each tbdTables In dbBase.TableDefs 'Teste l'attribut de la table pour savoir si c'est une table liée If tbdTables.Attributes And dbAttachedTable Then rst.AddNew 'Ajoute un enregistrements rst!TablesAttachees = tbdTables.Name 'Ajoute la table dans le Champs rst.Update 'Mise à jour End If Next tbdTables
est-ce normal ?
J'ai essayé de lancer mon application, j'obtient cette erreur :
![]()
Re,
Sorry, je me suis trompé, j'ai été trop vite.
La table tbltablesAttachées doit être dans la base frontale.
Pour ta deuxième question, une fois il est fait référence à la table, une fois au champ. Oui, c'est normal.
Pour le message d'erreur, je pense que tu as oublié de lier la table tblAdmin après l'avoir mise dans la dorsale.
Domi2
Je te remercie de nouveau pour ton aide
Alors j'ai mis la table tbltableattachees dans la frontale sans la liée et j'ai mis la table tblAdmin dans la dorsale et je l'ai lié dans la frontale.
maintenant lors du lancement de la base frontale, j'obtient de nouveau ce message :
![]()
Re,
As-tu compilé ton code ?
Dans l'éditeur VBA, menu Débogage ==> Compiler
Tu n'as plus aucune erreur de code ?
Peux-tu coller l'entier du code de la fonction liertable ?
Domi2
Re,
Tu peux poster un nouveau zip de ta base ?
domi2
Voilà le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 Option Compare Database Option Explicit Function LierTable(strChmFichier As String) As Boolean 'Déclaration des variables Dim dbBase As DAO.Database Dim tdbTables As DAO.TableDef Dim rst As DAO.Recordset 'Instancie la base courrante Set dbBase = CurrentDb 'Charge la table dans le recordset rst Set rst = dbBase.OpenRecordset("tblTablesAttachees", dbOpenDynaset) 'Inhibe les messages d'alertes DoCmd.SetWarnings False 'Vider la table contenant les tables qui sont attachées DoCmd.RunSQL "DELETE * FROM tblTablesAttachees" 'Boucle parcourant la base de données IEDV For Each tdbTables In dbBase.TableDefs 'Test pour savoir si c'est une table liée If tdbTables.Attributes And dbAttachedTable Then rst.AddNew 'Ajoute un enregistrement rst!TablesAttachees = tdbTables.Name 'Ajoute la table dans le champ rst.Update 'Mise à jour End If Next tdbTables 'On met à jour le recordset après l'ajout des tables rst.Requery 'On test la position du pointeur If Not rst.BOF Then rst.MoveFirst 'pointeur sur le premier enregistrement End If 'Mise à jour des liaisons des tables de la table tblTablesAttachees 'On parcourt tant que l'on arrive pas sur le dernier enregistrement While Not rst.EOF 'Nous définissons l'objet TableDefs en fonction de la table stockée dans tblTablesAttachees With dbBase.TableDefs(rst!TablesAttachees.Value) 'Défini la propriété connect da le table avec la nouvelle base .Connect = ";DATABASE=" & strChmFichier 'On remet à jour la liaison de la table .RefreshLink End With ' on efface l'enregistrement de la table rst.Delete 'On passe à l'enregistrement suivant rst.MoveNext Wend 'on libère les variable dbBase.Close Set dbBase = Nothing Set rst = Nothing 'On active les messages d'alertes DoCmd.SetWarnings True ' on affiche un message MsgBox (" La mise à jour s'est correctement déroulée") 'met la fonction liertable à vrai LierTable = True End Function
Voilà ma base aussi :
Re,
Tu n'as pas mis de lien.
Et la fonction est ok, ça vient d'ailleurs.
Domi2
Oui, cela n'avait pas marché. J'ai supprimer la première base que j'avais mis.
C'est bon maintenant.
Je l'ai regardé plusieurs fois ma fonction . . . il me semble avoir tout corrigé oui
Re,
Dans ta table tblTablesAttachees, renomme ton champ :
TableAttachees ==> TablesAttachees
Domi2
Ah oui j'avais pas fait attention
Le message d'erreur reste le même.
Lorsque vous modifier, cela change quelque chose ?
Re,
C'est tout ce que j'ai modifié et chez moi, ça fonctionne.
Domi2
Si vous l'exécuté une seconde fois, cela marche toujours ?
Moi cela a marché une seule fois.
Sinon j'ai bien seulement modifier le "s" qui manquait mais ca ne change rien.
Bizarre
Toujours cette erreur n°0
Merci de votre aide en tout cas
Partager