Rechercher : dans
Par :

Suppression de données dans une table access

Dernière réponse le 4 jun 2004 à 10:23:22 celine barriant, le 3 jun 2004 à 20:16:35 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Suppression de données dans une table access » dans :
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
Tableur - La saisie de données VoirSAISIE DE DONNEES LITTERALES Vous êtes prêt à entrer des données dans votre feuille de calcul. Nous vous déconseillons toutefois de le faire avant d’avoir réfléchi soigneusement à ce que vous voulez obtenir : de façon générale, mieux vaut bâtir sur...

1

Fada09, le 4 jun 2004 à 00:54:14

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

Répondre à Fada09

2

LeLaid, le 4 jun 2004 à 08:47:40
  • +1

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
  :-)

Répondre à LeLaid

3

celine barriant, le 4 jun 2004 à 09:00:19

Merci pour vos réponses, je vais essayer ces différentes possibilités. Je vous tiens au courant. :)

Répondre à celine barriant

4

celine barriant, le 4 jun 2004 à 09:41:03

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...

Répondre à celine barriant

5

celine barriant, le 4 jun 2004 à 09:53:56

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

Répondre à celine barriant

6

LeLaid, le 4 jun 2004 à 09:57:20

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
  :-)

Répondre à LeLaid

7

celine barriant, le 4 jun 2004 à 10:09:33

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

Répondre à celine barriant

8

LeLaid, le 4 jun 2004 à 10:14:09

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
  :-)

Répondre à LeLaid

9

MarcusBasse, le 4 jun 2004 à 10:21:02

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+

Répondre à MarcusBasse

10

céline barriant, le 4 jun 2004 à 10:21:19

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

Répondre à céline barriant

11

 céline barriant, le 4 jun 2004 à 10:23:22

Oui mais marcus ca ne pose quand même aucun probleme en fait, car toutes mes clés primaires ont un numéro unique

Répondre à céline barriant