IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

effacer un enregistrement


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut effacer un enregistrement
    bonsoir,

    j'ai un problème avec l'effacement d'une valeur dans une table :

    voilà j'ai 2 tbl : tbl_appellation et tbl_vin liée par un champ txt Appellation (j'ai créé la tbl_Appellation pour éviter les répétition)avec une relation 1(tbl_appellation) à plusieurs (tbl_vin)

    J'ai créé un formulaire à partir des champs de ces 2 tables qui me permet de modifier/supprimer les enregistrements de la tbl appellation.
    Ex : 1 enreg dans tbl_appellation appelé Buzet
    2 enreg dans tbl_vin lié à cette appellation : vin rouge et vin blanc

    Je souhaiterais que lorsqu'il ny'a plus d'enregistrement lié à l'appellation Buzet que cette dernière s'efface de la tbl_appellation.

    Comment faire, j'ai essayé "effacer en cascade" mais cela marche pas.

    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonsoir,
    il te faut faire une requête pour la suppression.

    1. tu fais une requête basée sur les appellations qui n'ont rien comme vin
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_Appelation.ID_Appelation
    FROM T_Appelation LEFT JOIN T_Vin ON T_Appelation.ID_Appelation = T_Vin.ID_Appelation
    WHERE (((T_Vin.Vin) Is Null));
    2. tu insères cette requête dans une requête effacement
    ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DELETE T_Appelation.ID_Appelation
    FROM T_Appelation
    WHERE (((T_Appelation.ID_Appelation) In (SELECT T_Appelation.ID_Appelation
    FROM T_Appelation LEFT JOIN T_Vin ON T_Appelation.ID_Appelation = T_Vin.ID_Appelation
    WHERE (((T_Vin.Vin) Is Null));)));
    3 Tu affecte cette requête à un bouton effacement

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonjour et merci

    J'ai donc appliqué ce code à un bouton supprimer dans ma barre d'outils :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function SupprimerAppellation()
        DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
        DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
        Dim MonCritère As String
        MonCritère = "DELETE tbl_Appellation.Appellation FROM tbl_Appellation WHERE (((tbl_Appellation.Appellation) IN (SELECT tbl_Appellation.Appellation FROM tbl_Appellation LEFT JOIN tbl_Vin ON tbl_Appellation.Appellation =" & "tbl_Vin.Appellation WHERE (((tbl_Vin.NumVin) Is Null));)));"
        DoCmd.RunSQL MonCritère
    End Function
    et cela marche mais j'ai un autre problème : j'ai 2 fois un message d'avertissement de suppression d'enreg :

    1 pour la suppression l'enregistrement en cours de la tbl_Vin
    et 1 pour la requête suppression de la tbl_Appellation!!!!

    Autre problème, autre post...
    Bye

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Pour le message d'erreur,il te dit un truc du genre : "Vous etes sur le point d'effacer X enregistrements......"???

    Si c'est ca,il faut mettre un "docmd.setwarnings false" après la ligne "Public Function SupprimerAppellation()"

    Sinon je ne sais pas t'aider

  5. #5
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    il faut mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.setwarning true
    après la fonction pour rétablir les messages

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 124
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    C'est ce que j'ai fait (après avoir utiliser "rechercher")

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effacement d'enregistrements d'une table
    Par mcdelay dans le forum Access
    Réponses: 9
    Dernier message: 28/03/2007, 16h50
  2. Réponses: 4
    Dernier message: 26/07/2006, 22h01
  3. Réponses: 5
    Dernier message: 17/06/2006, 22h19
  4. [VBS MYSQL] effacer un enregistrement
    Par Corben dans le forum VBScript
    Réponses: 4
    Dernier message: 06/03/2006, 11h53
  5. Effacer l'enregistrement courant?
    Par juliea dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/12/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo