Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

effacer un enregistrement dans formulaire avec sous formulaire

5 réponses
Avatar
Hb
Bonjour,
Je cherche le moyen d'effacer avec un bouton depuis un formulaire de saisie
"commande", contenant un sous formulaire "details" :
un enregistrement d'une table appelée commande, avec tous les
enregistrements de la table details liés.
la relation est de un à plusieurs avec intégrité référentielle.
Avec un bouton classique d'effacement, il me dit :
impossible de supprimer l'enregistrement car la talbe détails comprend des
enregistrments connexes.
Je suppose que le cas est classique ?
Merci d'avance

HB

5 réponses

Avatar
Tisane
Bonjour Hb,

Je cherche le moyen d'effacer avec un bouton depuis un formulaire de
saisie "commande", contenant un sous formulaire "details" :
un enregistrement d'une table appelée commande, avec tous les
enregistrements de la table details liés.
la relation est de un à plusieurs avec intégrité référentielle.
Avec un bouton classique d'effacement, il me dit :
impossible de supprimer l'enregistrement car la talbe détails
comprend des enregistrments connexes.
Je suppose que le cas est classique ?


Lorsque tu as créé la liaison avec intégrité référentielle entre les tables
Commande et Details, tu pouvais cocher "Effacer en cascade les
enregistrements correspondants".
Il n'est pas trop tard. Ainsi, tu n'auras pas à changer ton bouton
d'effacement.

--
Tisane

Avatar
Eric
Bonjour,

Avoir mis l'intégrité référentielle est une très bonne chose. *Ne pas
avoir coché* Effacer en cascade est encore bien meilleur mais c'est un
avis personnel.
Sur l'évènement clic de ton bouton, 2 ordres SQL qui feront, après
confirmation, le travail. De maniere succinte:

' Demande de confirmation à écrire
' puis si OK
Dim strSQL as string
Docmd.SetWarnings False
'1er ordre : supprimer dans la table liée les enregistrements associés à
l'enregistrement 'père' qui doit être supprimé.
strSQL="Delete * from TableLiée where CléEtrangere=5" 'ou 5 represente
la valeur de la clè primaire de la TablePere ou autre valeur à passer
correspondant à l'enregistrement à effacer
Dcmd.RunSQL strSQL
'2eme ordre : supprimer l'enregistrement de la table pere
strSQL ="Delete * from TablePere where ClePrimaire= 5"
Dcmd.RunSQL strSQL
Docmd.SetWarnings True



Bonjour,
Je cherche le moyen d'effacer avec un bouton depuis un formulaire de saisie
"commande", contenant un sous formulaire "details" :
un enregistrement d'une table appelée commande, avec tous les
enregistrements de la table details liés.
la relation est de un à plusieurs avec intégrité référentielle.
Avec un bouton classique d'effacement, il me dit :
impossible de supprimer l'enregistrement car la talbe détails comprend des
enregistrments connexes.
Je suppose que le cas est classique ?
Merci d'avance

HB




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Bonjour Eric,

Avoir mis l'intégrité référentielle est une très bonne chose. *Ne pas
avoir coché* Effacer en cascade est encore bien meilleur mais c'est un
avis personnel.
Sur l'évènement clic de ton bouton, 2 ordres SQL qui feront, après
confirmation, le travail. De maniere succinte:
' Demande de confirmation à écrire
' puis si OK
Dim strSQL as string
Docmd.SetWarnings False
'1er ordre : supprimer dans la table liée les enregistrements
associés à l'enregistrement 'père' qui doit être supprimé.
strSQL="Delete * from TableLiée where CléEtrangere=5" 'ou 5 represente
la valeur de la clè primaire de la TablePere ou autre valeur à passer
correspondant à l'enregistrement à effacer
Dcmd.RunSQL strSQL
'2eme ordre : supprimer l'enregistrement de la table pere
strSQL ="Delete * from TablePere where ClePrimaire= 5"
Dcmd.RunSQL strSQL
Docmd.SetWarnings True


La bêtise restera toujours aussi vite faite ;-))
Il y a également demande de confirmation quand on applique la suppression en
cascade.

--
Tisane (qui fuit la programmation quand elle n'est pas indispensable ;-)


Bonjour,
Je cherche le moyen d'effacer avec un bouton depuis un formulaire
de saisie "commande", contenant un sous formulaire "details" :
un enregistrement d'une table appelée commande, avec tous les
enregistrements de la table details liés.
la relation est de un à plusieurs avec intégrité référentielle.
Avec un bouton classique d'effacement, il me dit :
impossible de supprimer l'enregistrement car la talbe détails
comprend des enregistrments connexes.
Je suppose que le cas est classique ?
Merci d'avance

HB




Avatar
Eric
Bonjour Tisane,

Bonjour Eric,
La ***** restera toujours aussi vite faite ;-))



Je n'ai jamais compris pourquoi une telle option quand on
s'imagine les conséquences désastreuses offertes par
cette possibilité. J'ai ainsi pris l'habitude de ne jamais
cocher l'option afin de maitriser mes suppressions et parfois,
je souhaiterais d'autres garde-fous.
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Tisane
Eric wrote:
Bonjour Tisane,

La ***** restera toujours aussi vite faite ;-))


Je n'ai jamais compris pourquoi une telle option quand on
s'imagine les conséquences désastreuses offertes par
cette possibilité. J'ai ainsi pris l'habitude de ne jamais
cocher l'option afin de maitriser mes suppressions et parfois,
je souhaiterais d'autres garde-fous.


En effet, ce serait une erreur que de cocher systématiquement cette option.
Je ne l'utilise qu'au compte-goutte et dans ce cas, je la documente car
malheureusement, il n'y a pas de signe distinctif visuel entre une liaison
avec seule intégrité et une liaison avec modification ou effacement en
cascade.
Mais, dans certains contextes, elle est très utile. Hors la maîtrise que tu
as en passant par du code, je ne vois qu'un intérêt à la programmer, c'est
la personnalisation du message de suppression (si tant est que les
utilisateurs lisent les messages d'avertissement).

Heu, non, je ne l'ai pas dit ***** ;-))

--
Tisane