OVH Cloud OVH Cloud

Formulaire avec plusieurs tables

7 réponses
Avatar
Luis
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous formulaires.
Avec une commande je peux supprimer un enregistrement de=20
fa=E7on d=E9finitive.
Le probl=E8me c'est que la suppression ne se fait que sur=20
la table principale et pas sur les tables des deux sous-
formulaires, Voil=E0 le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,=20
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,=20
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible =3D False
Me.Modifier.Visible =3D True


Dim bds As Database, dft As TableDef
Set bds =3D CurrentDb
Set dft =3D bds.CreateTableDef
dft.Name =3D "CANDIDATS"
dft.Name =3D "FORMATION"
dft.Name =3D "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing =3D 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont li=E9e par IDCANDIDAT
Merci pour votre aide.
Luis

7 réponses

Avatar
phil
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous formulaires.
Avec une commande je peux supprimer un enregistrement de
façon définitive.
Le problème c'est que la suppression ne se fait que sur
la table principale et pas sur les tables des deux sous-
formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.



Avatar
Luis
Bonjour,
Merci.
J'ai ajouté le nom du formulaire avec Requery comme tu me
le dis mais rien de plus ne se passe.
As-tu une idée??
Luis
-----Message d'origine-----
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un enregistrement
de


façon définitive.
Le problème c'est que la suppression ne se fait que sur
la table principale et pas sur les tables des deux sous-
formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.





Avatar
Luis
Bonjour,
Et comment dois-je faire ça???
Désolé pour mon ignorance.
Merci.
Luis
-----Message d'origine-----
Bonjour,

Avec les relations tu demandes l'intagrité référentielle
avec Suppression en cascade.

Camille

-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un enregistrement
de


façon définitive.
Le problème c'est que la suppression ne se fait que sur
la table principale et pas sur les tables des deux sous-
formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.





Avatar
phil
Essaye : si tu supprimes directement dans la table, est-ce
que les suppressions se font aussi dans les autres tables
concernées ? Si ça marche là, ça marchera aussi dans ton
formulaire.

Pour le requery, en fait, il ne faut pas mettre
[NomFormulaire].requery
mais
[NomSousFormulaire].requery
le sous-formulaire actualisera alors les résultats de la
requête sur laquelle il est basé.



-----Message d'origine-----
Bonjour,
Merci.
J'ai ajouté le nom du formulaire avec Requery comme tu me
le dis mais rien de plus ne se passe.
As-tu une idée??
Luis
-----Message d'origine-----
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un enregistrement
de


façon définitive.
Le problème c'est que la suppression ne se fait que sur
la table principale et pas sur les tables des deux sous-
formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.


.






Avatar
Luis
Bonjour,
Merci.
Non si je supprime directement l'enregistrement sur la
table principale, la suppréssion ne se fait pas dans les
autres tables.
A bientôt.
Luis
-----Message d'origine-----
Essaye : si tu supprimes directement dans la table, est-
ce

que les suppressions se font aussi dans les autres
tables

concernées ? Si ça marche là, ça marchera aussi dans ton
formulaire.

Pour le requery, en fait, il ne faut pas mettre
[NomFormulaire].requery
mais
[NomSousFormulaire].requery
le sous-formulaire actualisera alors les résultats de la
requête sur laquelle il est basé.



-----Message d'origine-----
Bonjour,
Merci.
J'ai ajouté le nom du formulaire avec Requery comme tu
me


le dis mais rien de plus ne se passe.
As-tu une idée??
Luis
-----Message d'origine-----
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un enregistrement
de


façon définitive.
Le problème c'est que la suppression ne se fait que
sur




la table principale et pas sur les tables des deux
sous-




formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.


.


.







Avatar
phil
Alors il faut aller dans le menu Relations (icône dans la
barre en haut). Et là, si tu as fait des relations entre
les tables, tu dois double-cliquer sur ces relations et
cocher les trois cases à cocher :
Appliquer l'intégrité référentielle
Mettre à jour en cascade les champs correspondants
Effacer en cascade les enregistrements correspondants

Dans ton formulaire, à la suppression, tu lanceras quand
même les commandes
[NomSousFormulaire].requery

et ça devrait fonctioner



-----Message d'origine-----
Bonjour,
Merci.
Non si je supprime directement l'enregistrement sur la
table principale, la suppréssion ne se fait pas dans les
autres tables.
A bientôt.
Luis
-----Message d'origine-----
Essaye : si tu supprimes directement dans la table, est-
ce

que les suppressions se font aussi dans les autres
tables

concernées ? Si ça marche là, ça marchera aussi dans ton
formulaire.

Pour le requery, en fait, il ne faut pas mettre
[NomFormulaire].requery
mais
[NomSousFormulaire].requery
le sous-formulaire actualisera alors les résultats de la
requête sur laquelle il est basé.



-----Message d'origine-----
Bonjour,
Merci.
J'ai ajouté le nom du formulaire avec Requery comme tu
me


le dis mais rien de plus ne se passe.
As-tu une idée??
Luis
-----Message d'origine-----
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un enregistrement
de


façon définitive.
Le problème c'est que la suppression ne se fait que
sur




la table principale et pas sur les tables des deux
sous-




formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux sous-
formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.


.


.


.








Avatar
Luis
Bonjour,
Je pense que c'est la méthode la plus simple mais je ne
peux pas l'utiliser car j'ai le refus car les tables des
sous formulaires ne respectent pas l'intégrité
référentielle.
Je pense que ça vient du fait que depuis pas mal de temps
j'ai supprimé des entrées.
Mais pour retrouver tout ça bonjour.
Donc s'il existe une façon de contourner cette difficulté
ça m'arrangerai bien.
Merci et à bientôt.
Luis
-----Message d'origine-----
Alors il faut aller dans le menu Relations (icône dans
la

barre en haut). Et là, si tu as fait des relations entre
les tables, tu dois double-cliquer sur ces relations et
cocher les trois cases à cocher :
Appliquer l'intégrité référentielle
Mettre à jour en cascade les champs correspondants
Effacer en cascade les enregistrements correspondants

Dans ton formulaire, à la suppression, tu lanceras quand
même les commandes
[NomSousFormulaire].requery

et ça devrait fonctioner



-----Message d'origine-----
Bonjour,
Merci.
Non si je supprime directement l'enregistrement sur la
table principale, la suppréssion ne se fait pas dans
les


autres tables.
A bientôt.
Luis
-----Message d'origine-----
Essaye : si tu supprimes directement dans la table,
est-



ce
que les suppressions se font aussi dans les autres
tables

concernées ? Si ça marche là, ça marchera aussi dans
ton



formulaire.

Pour le requery, en fait, il ne faut pas mettre
[NomFormulaire].requery
mais
[NomSousFormulaire].requery
le sous-formulaire actualisera alors les résultats de
la



requête sur laquelle il est basé.



-----Message d'origine-----
Bonjour,
Merci.
J'ai ajouté le nom du formulaire avec Requery comme
tu




me
le dis mais rien de plus ne se passe.
As-tu une idée??
Luis
-----Message d'origine-----
Il faut actualiser les sous-formulaires !!!

Il suffit de mettre
[NomFormulaire].Requery
et l'actualisation se fait.


-----Message d'origine-----
Bonjour,
J'ai un formulaire avec 2 sous-formulaires.
Donc 3 tables, 1 pricipale et 2 pour les sous
formulaires.


Avec une commande je peux supprimer un
enregistrement






de
façon définitive.
Le problème c'est que la suppression ne se fait que
sur




la table principale et pas sur les tables des deux
sous-




formulaires, Voilà le code que j'utilise:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, ,
acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, ,
acMenuVer70

SendKeys "{esc}"
Me.Ok.Visible = False
Me.Modifier.Visible = True


Dim bds As Database, dft As TableDef
Set bds = CurrentDb
Set dft = bds.CreateTableDef
dft.Name = "CANDIDATS"
dft.Name = "FORMATION"
dft.Name = "EXPERIENCE"

Forms![ENREGISTREMENTS].DefaultEditing = 4
DoCmd.ShowAllRecords

ENREGISTREMENTS est le formulaire
CANDIDATS est la table pricipale
FORMATION et EXPERIENCE sont les tables des deux
sous-






formulaires

les sous formulaires sont liée par IDCANDIDAT
Merci pour votre aide.
Luis

.

.


.


.


.


.