Suppression de données dans une table access

Fermé
celine barriant - 3 juin 2004 à 20:16
 nabil - 29 nov. 2011 à 11:46
Bonjour,

J'ai créé une base de données sur access comportant plusieurs tables. Mon problème est que je n'ai pas prévu de moyen de suppression des données dans les champs des différentes tables. Pour y remédier je voudrais créer un bouton de suppression.
Il faudrait que ce bouton puisse aussi supprimer les données qui sont en rapport dans les autres tables.
Merci de me dire comment faire car la je suis bloquée.

Céline Barriant
A voir également:

11 réponses

Utilisateur anonyme
4 juin 2004 à 08:47
Salut,

Pour résoudre ton problème tu as deux possibilités:

1) Via le diagramme de relation, tu précises, pour chaque relation, que l'intégrité référentielle doit être préservée. Cela signifie que si tu suprime un enregistrement dans une table "mère", tous les éléments correspondant dans les tables "filles" seront aussi suprimé. Pour ce faire, tu double click sur le lien (il faut bien viser).

2) Tu codes en VBA ce que doit faire ton bouton.
Exemple:

Private Sub Ton_Bouton_Click()
  Dim i As Long
  Dim mDb As Database
  Dim mRs, mRsFiltred As Recordset

  Set mDb = CurrentDb
  Set mRs = mDb.Openrecordset("Nom_Table", dbOpenDynaset, dbSeeChanges, dbPessimistic)
  
  mRs.Filter = "Critère pour les enregistrements à suprimer"
  Set mRsFiltred  = mRs.Openrecordset

  mRsFiltred.MoveLast

  For i = 1 To mRsFiltred.RecordCount
    mRsFiltred.AbsolutePosition = i
    mRsFiltred.Edit
    mRsFiltred.Delete
    mRsFiltred.Update
  Next i

End Sub


Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
2
Fada09 Messages postés 1701 Date d'inscription lundi 15 septembre 2003 Statut Contributeur Dernière intervention 4 septembre 2010 539
4 juin 2004 à 00:54
quand tu crée ton bouton tu dois avoir l'assistant qui te propose différents types d'actions. Choisi supprimer l'enregistrement.
Ensuite dans outil relation tu doit pouvoir dire que lorsqu'on supprime ds la table principale tu supprime en cascade les champs de l'autre table.

Désolé si c'est incorrect ou imprecis je te dis ca de tête, j'ai pas access installé sur ce poste

Voila j'espere que je me suis pas planté et ue je t'aurais aidé.
A bientôt

;-)
~ ~ Fada ~ ~ : Member of Star!alco
0
je m'appelle nabil, c vrai ta raison , je sais pas comment ça ma échappé ,
merci infiniment
0
celine barriant
4 juin 2004 à 09:00
Merci pour vos réponses, je vais essayer ces différentes possibilités. Je vous tiens au courant. :)
0
celine barriant
4 juin 2004 à 09:41
voila pour la première solution, j'avais déjà appliqué l'intégrité référentielle à mes relations et lorsque je créé un bouton de suppression à l'aide de l'assistant il me met ce message d'erreur :
Impossible de supprimer ou de modifier l'enregistrement car la table "ETABLISSEMENT" comprend des enregistrements connexes

pour la deuxième solutions, il me dit " erreur de compilation : membre de méthode ou de données introuvable " Je ne sais même pas ce que cela peut bien vouloir dire...
0

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

Posez votre question
celine barriant
4 juin 2004 à 09:53
Je pense que je vais utiliser la solution un peu bourine que je voulais eviter. Pour la suppression ce n'est pas mettre à jour en cascade qui est important mais effacer en cascade.
Je sais que cette fonctionnalité est délicate à utiliser car elle entraine des conséquences des fois imprévu et je ne me rapelle plus lesquelles.

Et une autre question aussi quelle est la différence entre la suppression d'une données dans un champs et l'annulation d'une données dans un champs?

Merci
0
Utilisateur anonyme
4 juin 2004 à 09:57
Le premier problème est lié à l'intégrité référentielle....
Le bouton de supression refuse de fonctionner car, semble-t-il, il ne peut pas suprimer les enregistrements dans les tables liées.

Donc, il faut que tu codes en VBA toutes les éliminations.
Il faut procéder par étape:
1) tu détermines la liste des tables qui doivent subir un nétoyage quand tu delete un champ de la table ETABLISSEMENT
2) tu crées un bouton dans ton form (celui que tu as créé est très bien, mais il va falloir modifier le code VBA qui est lié).

Pour pouvoir t'aider (VBA), j'ai besoin de + d'info.

- La table ETABLISSEMENT est liée à quelles autres tables?
- Par quels champs?


Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
0
celine barriant
4 juin 2004 à 10:09
en effet mon bouton de suppression ne voulait pas marcher car il y avait l'intégrité référentielle mais en activant le bouton "supprimer en cascade" ca marche.

Pour répondre a ta question, la table principale de ma base de données est "salarié" . Il y a 4 tables liées a cette première "etablissement", "remunération", "départ", et "emploi".
La table "salarié" a comme clé primaire "num_salarie" et donc ce champs est une clé étrangère dans mes autres tables. Chacune de mes tables ont un numéro auto comme clé primaire.

Le problème avec la suppression en cascade est que j'ai peur que si je supprime un salarié dupont dans la table 'salarié" qui était opérateur industrie, que le bouton supprime dans la table emploi tout les opérateur industrie.

Pourrait tu m'éclairer, merci ca m'aide beaucoup
0
Utilisateur anonyme
4 juin 2004 à 10:14
Le bouton ne supprimera dans la table emploi que les enregistrements pour les quels la clé primaire de ta table "salarié" est identique. Rien d'autre.

Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
0
Bonjour,

Effectivement si tu as une relation entre deux tables et que tu coches 'suppression en cascade', cela signifie que pour chaque enregistrement supprimé, il supprimera les enregistrements liés dans l'autre table. Pour changer le probleme, tu peux garder la liaison, mais décocher 'Appliquer l'intégrité référencielle'.

A+
0
céline barriant
4 juin 2004 à 10:21
Très bien c'est parfait alors, ca me rassure.
Car j'ai activé l'option effacer en cascade, quand j'ai cliqué sur les relations puis j'ai créé mon bouton de suppression et CA MARCHE

MERCI MERCI MERCI
0
céline barriant
4 juin 2004 à 10:23
Oui mais marcus ca ne pose quand même aucun probleme en fait, car toutes mes clés primaires ont un numéro unique
0