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

VBA Access Discussion :

Dlookup si l'enregistrement existe dans une table, si oui supprimer et insérer le nouvel enregistrement [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 97
    Points
    97
    Par défaut Dlookup si l'enregistrement existe dans une table, si oui supprimer et insérer le nouvel enregistrement
    Bonjour,
    J'ai une table [LivraisonsTemp] dans laquelle il y a un champ, [Réf commande] et je voudrais vérifier si la valeur existe dans ce champ et si oui, supprimer cet enregistrement pour me permettre de créer le nouvel enregistrement, ce champ est unique (ne peut y avoir 2 fois la même valeur)

    Cette table est peuplée par un formulaire qui tire ses informations d'un autre formulaire [Détails commande2] en ce qui a trait au champ [Réf commande] pour être plus clair, lorsque je suis en train de créer une commande pour livraison, je suis sur le formulaire [Détails commande2], lorsque je clique un bouton commande sur ce dernier, le formulaire "Livraisons sommaire" s'ouvre avec le champ [CommandeEnCours] du formulaire [Détails commande2] dans son champ [Réf commande]
    Maintenant, je choisis l'adresse de livraison et lorsque je presse le bouton accepter (sur le formulaire "Livraisons sommaire"), les informations choisies vont créer un enregistrement dans la table [LivraisonsTemp]

    Si une erreur se produit et que je veux changer l'adresse de livraison pour cette commande, je voudrais que lorsque je presse le bouton accepter, mon code vérifie si cet enregistrement existe, s'il existe, le supprimer et placer la nouvelle adresse choisie dans la table.

    J'ai essayé toutes sortes de combinaisons avec Dlookup et SQL, mais je n'arrive pas à effectuer ces étapes.

    Voici le code sur mon formulaire "Livraisons sommaire":
    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
    Private Sub Form_Current()
    Me.Réf_commande = Forms![Détails commande2].[CommandeEnCours]
    End Sub
     
    Private Sub LivraisonAccepter_Click()
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
     
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("LivraisonsTemp", dbOpenDynaset)
     
            DoCmd.Echo False
            Forms![Détails commande2].[AdresseLivrée] = Me.Adresse
            Forms![Détails commande2].[AptLivrée] = Me.NoApt
            Forms![Détails commande2].[VilleLivrée] = Me.Ville
            Forms![Détails commande2].Requery
            DoCmd.Echo True
     
    With rst
            .AddNew
            !Téléphone = Me.Téléphone
            !Adresse = Me.Adresse
            !NoApt = Me.NoApt
            !Ville = Me.Ville
            !Prénom = Me.Prénom
            !Nom = Me.Nom
            !CodeEntrée = Me.CodeEntrée
            !Notes = Me.Notes
            !Compagnie = Me.Compagnie
            ![Réf commande] = Forms![Détails commande2].[CommandeEnCours]
            .Update
    End With
     
     
    DoCmd.Close acForm, "Livraisons sommaire"
    End Sub
    Ce code fait exactement ce pourquoi il a été écrit, cependant, comme je l'expliquais précédemment, si une erreur se produit, je voudrais pouvoir changer les informations dans cette table pour la commande en cours.

    Merci d'avance
    Claude du Québec

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

    Pourquoi supprimer et ajouter

    Si l'adresse de livraison change, c'est uniquement une mise à jour, non ?

    Une simple requête de mise à jour (Update) avec le critère du numéro de commande dans la clause Where.

    Philippe

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 97
    Points
    97
    Par défaut Résolu avec une requête suppression
    Bonjour Philippe,
    Grâce à ton conseil, je me suis dirigé vers les requêtes-actions, j'ai utilisé une requête suppression comme ceci:

    Nom de la requête suppression: LivraisonsTempDeleteIfOrderExist

    Champ: Réf commande
    Table: LivraisonsTemp
    Supprimer: Où
    Critères: [Forms]![Livraisons sommaire].[Réf commande]

    Dans mon code du bouton accepter du formulaire "Livraisons sommaire" j'ai ajouté cette requête suppression au début du code:

    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
    Private Sub LivraisonAccepter_Click()
    Dim dbs As DAO.Database
    Dim rst As DAO.Recordset
    
    Set dbs = CurrentDb
    DoCmd.OpenQuery "LivraisonsTempDeleteIfOrderExist"
    
    Set rst = dbs.OpenRecordset("LivraisonsTemp", dbOpenDynaset)
    
            DoCmd.Echo False
            Forms![Détails commande2].[AdresseLivrée] = Me.Adresse
            Forms![Détails commande2].[AptLivrée] = Me.NoApt
            Forms![Détails commande2].[VilleLivrée] = Me.Ville
            Forms![Détails commande2].Requery
            DoCmd.Echo True
      
    
    With rst
            .AddNew
            !Téléphone = Me.Téléphone
            !Adresse = Me.Adresse
            !NoApt = Me.NoApt
            !Ville = Me.Ville
            !Prénom = Me.Prénom
            !Nom = Me.Nom
            !CodeEntrée = Me.CodeEntrée
            !Notes = Me.Notes
            !Compagnie = Me.Compagnie
            ![Réf commande] = Forms![Détails commande2].[CommandeEnCours]
            .Update
    End With
    
           
    DoCmd.Close acForm, "Livraisons sommaire"
    End Sub
    Lorsqu'il y a une erreur et que l'usager veut changer l'adresse, l'enregistrement contenant l'adresse précédente est supprimé et le nouveau choix est créé sans problème.
    Encore une fois, Merci!

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

Discussions similaires

  1. Vérifier si un enregistrement existe dans une table
    Par developpeur_débutant dans le forum PL/SQL
    Réponses: 4
    Dernier message: 08/06/2010, 12h05
  2. verifier si un enregistrement existe dans une table
    Par niceen dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/04/2008, 21h37
  3. Réponses: 2
    Dernier message: 06/05/2006, 22h50
  4. supprimer un enregistrement vide dans une table oracle
    Par shurized dans le forum Bases de données
    Réponses: 11
    Dernier message: 07/09/2004, 16h55
  5. URGENT - Nombre d'enregistrements différents dans une table
    Par Jeankiki dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/08/2004, 15h51

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