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

IHM Discussion :

Suppression d'enregistrement dans access


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut Suppression d'enregistrement dans access
    Bonjour à tous,

    j'ai un problème. J'ai créé une base de données dans access 2007 contenant une table T_propriétaire et une table T_parcelle. J'ai un formulaire dans lequel j'ai créé un bouton supprimer, qui permet de supprimer un propriétaire.

    Problème :
    - quand j'applique les propriétés "Mettre à jour en cascade les champs correspondants" et "Effacer en cascade les enregistrements correspondants" dans la relation Proprietaire_Parcelle, il me supprime le propriétaire dans la table T_proprietaire et toutes les parcelles du propriétaire dans la table T_parcelle. Alors que je souhaite supprimer le propriétaire et conserver la liste de mes parcelles dans ma table T_parcelle.
    - quand je n'applique pas les propriétés précédentes, rien n'est supprimé.

    je signale que j'ai une relation un-à-plusieurs (un propriétaire pour plusieurs parcelles).

    Merci déjà pour votre aide !

  2. #2
    Membre confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut
    Je crois que cela est normal puisque selon ta relation, les parcelles dépendent des propriétaires. Avec une autre DB, on te dira par exemple "Impossible de supprimer" parcequ'il y a des dépendances entre ces enregistrements . Je te conseil donc d'annuler ces relations dans la table parcelle en effaçant l'identifiant du propriétaire dans les enregistrements des parcelles correspondantes, puis reviens ensuite supprimer le propriétaire. Essais ça devrait marcher.

  3. #3
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    quand je n'applique pas les propriétés précédentes, rien n'est supprimé.
    Il refuse probablement de supprimer le propriétaire justement parce que des parcelles pointent sur lui (clé étrangère).
    Il faut donc dans un premier temps supprimer les liens existant vers ce propriétaire pour ensuite pouvoir supprimer ce propriétaire. Sinon l'intégrité référentielle n'est pas assurée.

    A faire donc :
    - Requête UPDATE -> faire ne sorte qu'aucune parcelle ne pointe sur ce propriétaire
    - Requête DELETE -> supprimer le propriétaire

    En espérant t'aider.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Merci Demco pour ta reponse. Je vais essayer pour voir si ca marche.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un conseil n'utilises que celle-là : "Mettre à jour en cascade les champs correspondants", la suppression en cascade est à éviter fortement, je préfère comme Demco utiliser des requêtes pour supprimer.

    Starec

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    j'ai essayé de suivre le conseil de Demco; j'ai créé une requete UPDATE pour faire en sorte qu'aucune parcelle ne pointe vers le proprietaire à supprimer. Avec une requete Mise à jour de Access, ca marche : les parcelle ne pointe plus vers le proprietaire et je peux supprimer sans risque mon propriétaire. Mais quand je veux le mettre en VBA pour avoir les deux actions (UPDATE et DELETE) sur un seul bouton (evenement sur clic), ca ne bug pas mais ca ne marche pas non plus (pas de mise à jour, pas de suppression). je ne comprends pas !

    Je signale que j'ai dans mon formulaire une liste déroulante (choix_proprietatire) qui me permet de choisir le proprietaire à supprimer.

    Dans la relation parcelle_proprietaire, j'ai appliqé l'intégrité référentielle et la mise à jour en cascade. Voici le code que j'ai utilisé pour mon bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub supprimer_Click()
    Dim MaBD As Database
    Dim Msg As String
    Dim MonSQL As String
    Dim Reponse As Integer
     
    Set MaBD = CurrentDb
     
    Msg = MsgBox("Etes-vous sûr de vouloir supprimer l'enregistrement en cours ?", vbYesNo + vbCritical, "Supprimer enregistrement")
     
    'faire un choix
    If Msg = vbYes Then
    Reponse = MsgBox("La suppression d'un enregistrement ne peut pas être annulée." & vbCr & vbCr & "Cliquez sur OK pour confirmer.", 49 + 256, "Confirmer la suppression")
     
    'si le bouton OK est sélectionné, supprimer cet enregistrement
    If Reponse = 1 Then
     
    'supprime l'enregistrment
     
    MaBD.Execute "UPDATE T_parcelle SET Id_prop = ''" & "WHERE Id_prop = '" & [Forms]![F_proprietaire]![choix_proprietaire] & "';"
     
    MaBD.Execute "DELETE * FROM T_proprietaires " & "WHERE [Id_prop] = '" & Me.choix_proprietaire & "';"
     
    End If
     
    MaBD.Close
    Set MaBD = Nothing
     
    'afficher enregistrement suivant
    DoCmd.GoToRecord , , acNext
    'mise à jour liste déroulante
    Me.choix_proprietaire.Requery
    Me.Requery
    Me.choix_proprietaire = " "
     
    End If
     
    End Sub

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Bonjour à tous,
    j'ai continué à chercher, le problème que j'ai plus haut demeure. J'arrive toujours pas à avoir une solution.

    Aidez-moi please !!!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu lu et testé toutes les solutions qui ont été proposées ?

    Starec

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Bonjour Starec merci pour ton intervention.

    J'ai testé les solutions. Quand je fais chaque opération (UPDATE, DELETE)séparément ca marche. Mon soucis est que j'arrive pas à combiner les deux actions sur un seul boutons; c'est-à-dire quand l'utilisateur clique une fois sur ce bouton le lien entre le proprietaire choisit dans ma liste déroulante et ses parcelles est supprimé, et du coup le propriétaire est aussi supprimé.

    J'espère être assez clair

    Merci encore !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Un conseil n'utilises que celle-là : "Mettre à jour en cascade les champs correspondants", la suppression en cascade est à éviter fortement, je préfère comme Demco utiliser des requêtes pour supprimer.

    Starec

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Merci ca marche :

    j'ai créé une macro incorporée à mon bouton. Elle ouvre deux requetes: une requete de mise à jour et une requete de suppression. Ensuite, je lui demande d'actualiser mon controle et ca marche. Mon seul petit soucis est que le nom du propriétaire supprimé reste afficher; je veux juste trouver un moyen pour afficher automatiquement le proprietaire suivant de ma liste.

    Mille merci, je suis content de réussir !

  12. #12
    Invité
    Invité(e)
    Par défaut
    alors un petit clique sur le bouton

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

Discussions similaires

  1. Suppression d'enregistrement dans une table
    Par gunico dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 22/11/2007, 16h40
  2. Ouvrir une image a partir du lien enregistré dans access
    Par fsautejeau dans le forum Access
    Réponses: 12
    Dernier message: 25/07/2006, 08h38
  3. Réponses: 7
    Dernier message: 23/07/2006, 17h11
  4. Réponses: 4
    Dernier message: 28/04/2006, 23h21
  5. [VB]Utilisé une requête enregistrée dans ACCESS
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/01/2006, 17h54

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