Relations dans Access/supprimer en cascade

Fermé
jeromePLS - 17 juin 2011 à 16:01
 jeromePLS - 22 juin 2011 à 11:38
Bonjour à tous,


Cela fait quelques heures que je voyage sur les forums et essaye de trouver une solution seul dans Access mais là je pète un peu les plombs ;
Du coup, je cherche une bonne âme qui maitrise Access et qui peut me filer coup de main. A priori, c'est assez basique. Voilà mon problème

1. J'ai une table de contacts (TableCONTACTS) comprenant plusieurs champs comme Nom, prénom, adresse, email, etc...
2. la clé primaire de cette table est celle créée automatique par Access (Numéro d'enregistrement dans la table)
3. La colonne email a ces caractéristiques :
Null interdit : non
Chaine vide autorisée : oui
Indexé : oui - sans doublons
Compression unicode : oui
Mode de formulaire IME : aucun

Dans cette table, j'aimerais supprimer plusieurs adresses d'un coup. Il y en a + de 300 à supprimer donc embêtant à faire "à l'unité".

Si j'ai bien compris la solution est donc de créer une autre table (TableDELETE) avec cette liste de 300 emails puis mettre les deux tables en relation.

L'objectif final est de pouvoir effacer une entrée dans la TableDELETE et que cela efface automatiquement l'entrée avec l'email correspondant dans la TableCONTACTS.

(oula, j'espère que j'explique bien)

J'ai réussi à faire cela en créant une relation de un à un mais le souci c'est que cela ne marche que dans un sens !!

Entrée effacée dans TableCONTACTS supprime l'entrée correspondante dans TableDELETE mais pas l'inverse. Or c'est l'inverse qu'il me faut.

Quand je change l'ordre/le sens de la relation, Access me dit
"MS Access ne peut pas créer cette relation et assurer l'intégrité référentielle"
Vous pouvez voir le message complète de Access à cette adresse : http://www.pourlasolidarite.eu/IMG/Probleme_access.pdf

Je ne comprends plus comment faire...

Le pire, c'est que on m'a déjà expliqué il y a quelques mois et je n'avais pas noté...

D'avance, je vous dit MERCI pour votre aide...


A voir également:

3 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
18 juin 2011 à 17:47
Salut,

tu veux supprimer des lignes de la table ou remettre des adresses mail à blanc ?
1
Bonjour Blux,

Je veux effacer la ligne entière.

merci
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
18 juin 2011 à 22:59
Comment choisis-tu les données à effacer ?
Car je ne vois pas l'intérêt de créer une table identique à celle que l'on vise.
Il vaut mieux effacer directement la table visée...
0
Une ligne correspond à l'enregistrement d'une personne...dans cette ligne, il y a notamment l'adresse email. Je veux que Access efface toutes les lignes comprenant les adresses emails à enlever de la base de données.

S'il y a un moyen d'éviter de créer une autre table, c'est évidemment mieux. Mais une personne m'a déjà fait cette opération en créant une autre table et en créant une relation entre les tables...

merci...
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2011 à 11:02
Ridicule de créer une relation entre les deux tables...
Un simple DELETE avec un WHERE et une sous-requête aurait suffit.

Je veux que Access efface toutes les lignes comprenant les adresses emails à enlever de la base de données.
La question à laquelle tu n'as pas répondu est de savoir comment tu choisis les lignes à effacer, sont-elles dans une autre table ou sont-elles choisies selon un critère particulier ?
0
J'ai une liste d'adresses emails dans un fichier Excel. C'est pour cela que cette liste est convertie en table et que la personne m'avait fait un relation entre les 2 tables...
Est-ce que je réponds à la question...?
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
20 juin 2011 à 11:21
Voui.

Tu aurais du faire :

DELETE * FROM table1 WHERE email IN (SELECT email FROM table_excel);

à adapter avec tes noms de champs et de tables...
0
La phrase "'DELETE * FROM table1 WHERE email IN (SELECT email FROM table_excel);" est pour l'instant du chinois pour moi, mais je vais sur base de cela fouiller comment je dois faire dans Access. Merci du coup de main !!

a +
0