{Access} Suppression en cascade

Résolu/Fermé
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 5 mars 2010 à 09:33
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 - 29 mars 2010 à 15:49
Bonjour,
j'ai une base de données avec plusieurs tables, elles sont toutes reliées à la même table chacune par une relation 1 à plusieurs.

J'ai créé un formulaire avec des boutons pour sauvegarder, supprimer, passer à l'enregistrement suivant,.... .

Le problème est avec le bouton pour supprimer, si je supprime l'enregistrement, il ne supprime que ce qu'il y a dans la première table, et pas dans celle liée à elle, bien sur ca ne doit pas supprimé en continu, il faut que les informations dans les autres tables n'aient plus aucune information venant de la première table, si il y a encore une personne qui a les informations venant des autres tables, on ne doit pas supprimer ces informations la.

Mettre la suppression en cascade ne fonctionne pas.

Merci d'avance.
A voir également:

17 réponses

Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
Modifié par Iruka72 le 29/03/2010 à 15:52
Excuser moi de remonter ce post et de faire un double post mais je poste pour dire que j'ai trouvé une solution qui me convient parfaitement. J'avais remarqué qu'en supprimant manuellement dans mes tables l'enregistrements du côté de ma table principale, ca supprimait également dans l'autre table, j'ai donc créé une requête de suppression avec comme critère que ce soit la clé primaire de ma table principale de l'enregistrement en cours qui soit effacé, ce qui efface juste l'enregistrement en cours comme ca le devrait.

Il faut également allez dans la propriété de la requête et mettre oui dans la propriété enr.unique afin de ne pas avoir de message d'erreur.

Encore merci blux pour ta patience et tes explications, petit à petit j'avance et résous les problèmes que je rencontre.
1
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 10:02
Salut,

et si tu fais ta suppression 'à la main', directement dans la table, tu as le même souci ?

Parce qu'en principe, si tu as coché l'intégrité référentielle et que tu as coché les 'cascades', il ne devrait y avoir aucun problème.
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 12:05
Salut,

j'ai exactement le même problème, par contre je viens de remarquer que si je supprime manuellement l'enregistrement dans la table liée, il supprime également dans la table mère mais pas dans les autres tables (logique vu qu'elles sont pas liées)

le problème serait au niveau des relations?
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 12:19
ah oui, ça semble se préciser vu qu'une suppression côté n ne devrait pas aboutir à la suppression côté 1...
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 12:28
Quand cela fonctionne c'est du côté 1 à N, je me suis mal exprimé au début la table primaire est reliée en plusieurs 1, le 1 pour les tables sur le côté. Une personne peut avoir une information dans la table correspondante, mais une information peut etre contenue par plusieurs personnes, donc si je regarde.

Tables primaire Table secondaire
1 =============>1
plusieurs<=========1
______________________
plusieurs==========1


Ou j'ai mal réfléchis?
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 12:41
Fais une copie écran de tes relations, et colle-là sur www.cjoint.com, puis donne le lien, je pense que tu te trompes de côté...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 12:46
voila le lien demandé https://www.cjoint.com/?dfmSP2ChQr ,la table nom et statut client contient les info comme nom, adresse, statut, numéro téléphone.
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 13:29
Si tu veux suprimer l'entrée de la table 'nom et statut client' lorsque tu supprimes une ligne dans la table 'information client', par exemple, tu ne peux pas puisque la table 'nom et statut client' reste en relation avec d'autres tables...

Etait-ce l'objet de ta question ?
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 13:40
ce que je voudrais faire c'est lorsque je clic sur le bouton supprimer dans mon formulaire, donc il supprime l'enregistrement dans Nom et Statut client, ou si je le supprime manuellement (même si c'est moins important, vu que les tables ne seront pas visible au utilisateur finaux), les enregistrements correspondant dans les autres tables soit également supprimé si ils ne contiennent aucun autres clients.

Je suppose que mes relations étaient correctes, ou pas?
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 14:02
Non, elles sont à l'envers...

Dans chaque table qui est actuellement du côté 1, tu dois avoir la clé de la table 'Nom et Statut client' comme champ relié en 1-n (le 1 étant coté 'nom et statut client')...
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 15:26
merci, j'avais d'abord fait comme ca et ca m'affichait une page blanche, je pensais m'être trompé, mais on dirait qu'il ne supporte pas les jointure multiples sur un seul champ, le passage par sous formulaire corrigerait le problème? ou faut il envisager une autre possibilité?
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 15:29
mais on dirait qu'il ne supporte pas les jointure multiples sur un seul champ
Qu'entends-tu par là ?
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 15:42
Je relie mes tables de cette facon : la clé primaire de la table principale, avec des champ numérique se trouvant dans les tables externes, quand je mets en place la relation, ca va, mais quand je met dans la source du formulaire la requête, et que je repasse en mode formulaire, je vois le titre et tout blanc, j'ai vu sur un autre site que l'erreur est signe de problème de jointure, étant donné que quand tout est mis sur la clé primaire de la table principale j'ai un formulaire blanc, mais quand je ne met qu'une seule table liée, il m'affiche bien le formulaire.

De cette analyse j'en ai déduis que je ne peux pas mettre plusieurs tables liées dans un seul formulaire, vu l'erreur laisse penser a un problème de jointure, ca doit être que je ne peux pas utiliser plusieurs tables liées dans un seul formulaire.

J'ai regardé un peu et je suis tombé sur ca: https://www.developpez.net/forums/d526778/logiciels/microsoft-office/access/ihm/jointures-meme-attribut-formulaire-blanc/

Je me demandais si ca fonctionnerait si j'utilisais un sous formulaire comme indiqué dans le lien ci dessus, ou si il y avait une solution pour garder mon formulaire complet.

J'espère que j'ai été assez clair cette fois, merci pour l'aide que tu m'apportes.
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 15:54
mais quand je met dans la source du formulaire la requête
Quel formulaire ? Quelle requête ?
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 16:00
Le formulaire qui me sert a rajouter mes informations dans les différentes tables.
Dans ce formulaire, quand je vais dans la propriété du formulaire , l'onglet donnée, et le paramètre source, je rajoute la requête pour qu'il sache ou se trouve les champs.

Lorsque j'ai remplacé mes relations avec seulement deux tables, j'obtiens quelque chose comme cela:
SELECT [Nom et Statut client].N°Client, Stagiaire.N°infoStagiaire, Stagiaire.Client, * FROM [Nom et Statut client] INNER JOIN Stagiaire ON [Nom et Statut client].N°Client = Stagiaire.Client;
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
5 mars 2010 à 16:05
Access ne sait pas ajouter 'à la volée' des enregsitrements dans plusieurs tables en même temps, car il doit y avoir des règles de prédédence.

Il faut effectivement jouer avec un sous-formulaire par table côté n dans ton form principal ou alors tout gérer en VBA...
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
5 mars 2010 à 16:09
D'accord merci beaucoup, ca va me prendre du temps de modifier tout cela, j'aurais du mieux réfléchir au départ, me reste plus qu'a apprendre de mes erreurs.
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
8 mars 2010 à 17:04
Désolé pour le double post, mais après avoir modifié mes relations et mes tables, maintenant, il me supprime bien ce qu'il y a dans la table secondaire, celle qui est liée a ma table nom par une relation 1 plusieurs, 1 du coté de la table nom, mais il ne supprime plus ce qu'il y a dans la table nom, j'ai beau cherché je ne comprend pas, l'ajout et suppression en cascade est activé et j'utilise un bouton dans le formulaire pour supprimer l'enregistrement dont voici le code:

Private Sub Supprimer_Click()
On Error GoTo Err_Supprimer_Click


DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord

Exit_Supprimer_Click:
Exit Sub

Err_Supprimer_Click:
MsgBox Err.Description
Resume Exit_Supprimer_Click

End Sub


C'est le code de base qui se créent automatiquement quand on crée le bouton.

Merci d'avance
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
9 mars 2010 à 09:00
Tu peux coller tes relations ?
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
9 mars 2010 à 15:22
bonjour,
j'ai fait comme tu me l'avais dit, mis un du coté de la table nom et plusieurs du côté de l'autre table :

https://www.cjoint.com/?djpsmvaiYL
0
blux Messages postés 25974 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 17 avril 2024 3 285
9 mars 2010 à 15:36
Si tu veux supprimer quelque chose dans la table 'nom et statut client' en espérant supprimer aussi l'entrée correspondante dans la table 'stagiaire', ce n'est pas possible tant qu'il y aura des lignes dans les autres tables en relation avec 'stagiaire'...
0
Iruka72 Messages postés 255 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 5 juin 2014 22
9 mars 2010 à 16:45
c'était bien ca, j'ai supprimé les autres relations (c'était juste des menu déroulant) et il supprime bien dans l'autre table, il me reste donc que 2 possibilités je pense, soit mettre les champ lié dans la table du côté 1, soit remplacer les menu déroulant avec table pour source par une simple liste.
0