Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2011, 00h08   #1
Membre du Club
 
Homme Claude Larocque
Développeur informatique
Inscription : mai 2009
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Claude Larocque
Localisation : Canada

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

Informations forums :
Inscription : mai 2009
Messages : 61
Points : 46
Points : 46
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 :
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
toumack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 05h07   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2011, 07h16   #3
Membre du Club
 
Homme Claude Larocque
Développeur informatique
Inscription : mai 2009
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Claude Larocque
Localisation : Canada

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

Informations forums :
Inscription : mai 2009
Messages : 61
Points : 46
Points : 46
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 :
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!
toumack est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h00.


 
 
 
 
Partenaires

Hébergement Web