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

Requêtes et SQL. Discussion :

Exécution d'une requête de mise à jour après un vbYes [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2014
    Messages : 75
    Points : 49
    Points
    49
    Par défaut Exécution d'une requête de mise à jour après un vbYes
    Bonjour,

    Voici le problème que je rencontre:

    Je dois réaliser un algorithme qui va détecter un client perdu (5 semaines de suite avec un volume =0), récupérer la semaine de perte et aller mettre à jour le champ semaineFin dans une table GestionClients.

    Tout fonctionne mais j'aimerais apporter une fonctionnalité importante: demander, pour chaque client détecté comme perdu, si il l'est effectivement ou non. Si l'utilisateur choisi "oui", alors le champ est mis à jour.

    Voici ce que réalise la première requete (de détection de client perdu):
    Nom : requetedétection.png
Affichages : 93
Taille : 6,0 Ko

    A l'exécution, les 3 MsgBox s'affichent bien et avec les bonnes informations mais quend je clique sur "oui", aucune ligne à mettre à jour n'est trouvée dans la table GestionClients ci dessous:
    Nom : tableGestionClients.png
Affichages : 95
Taille : 4,4 Ko

    Pour Sofitel, SemaineFin devrait se mettre à jour à la valeur 7, 6 pour Pullmann et 9 pour Secret de paris.

    Voici mon 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Private Sub Commande11_Click()
     
    'recordset de la table GestionClients dont on va MAJ un champ
    Dim rst As DAO.Recordset
    'recordset de la requete de detection de clients perdus
    Dim rst_detecteclientperdu As DAO.Recordset
     
    'servent pour les MSGBOX
    Dim Msg, Style, Title, Response
     
    'requete sql de détection de clients perdus
    Dim strsql As String
     
    Dim sqlMAJ As String 'requete de MAJ
     
    'on ouvre la table qui se mettra a jour
    Set rst = CurrentDb.OpenRecordset("GestionClients", dbOpenDynaset)
     
    'la requete qui va chercher les clients détectés et la semaine de perte
    strsql = "SELECT tableCompteur.client_potentiellement_perdu, tableCompteur.Client, First(tableCompteur.semaineDebut) AS PremierDesemaineDebut " & _
    " FROM tableCompteur " & _
    " WHERE (((tableCompteur.client_potentiellement_perdu) = -1)) " & _
    " GROUP BY tableCompteur.client_potentiellement_perdu, tableCompteur.Client;"
     
    Debug.Print strsql
     
    'on construit le jeu d'enregistrements de cette requete
    Set rst_detecteclientperdu = CurrentDb.OpenRecordset(strsql)
     
     If rst_detecteclientperdu.RecordCount <> 0 Then
            'on se place sur le premier enregistrement de la requete
            rst_detecteclientperdu.MoveFirst
            'on boucle sur les enregistrements de la requete
            Do Until rst_detecteclientperdu.EOF
                'MsgBox avec le client et la semaine de perte
                Msg = "Le client  " & rst_detecteclientperdu.Fields(1) & " a t-il été perdu en semaine  " & rst_detecteclientperdu.Fields(2)
                'boutons oui et non
                Style = vbYesNo + vbQuestion + vbDefaultButton1
                Title = "client perdu? "
                'on affiche la MsgBox pour chaque client
                Response = MsgBox(Msg, Style, Title)
     
                'si la réponse est oui, on execute une requete de mise a jour
                If Response = vbYes Then
                        'voici le SQL de cette requete de MAJ
                        sqlMAJ = "UPDATE GestionClients " & _
                        " SET GestionClients.SemaineFin = " & rst_detecteclientperdu.Fields(2) & " WHERE GestionClients.Client= "" & rst_detecteclientperdu.Fields(1) & ""; "
                        'exécution de la requete de MAJ
                        DoCmd.RunSQL sqlMAJ
                End If
                'on passe a l'enregistrement suivant de la requete
            rst_detecteclientperdu.MoveNext
            Loop
        End If
     
    Set rst = Nothing
    Set rst_detecteclientperdu = Nothing
     
    MsgBox "Opération terminée !", vbInformation
     
    End Sub

    En vous remerciant d'avance de votre aide,

    Ostrich95

  2. #2
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Dans la requête de mise à jour, as-tu essayer de remplacer les " par des ' ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sqlMAJ = "UPDATE GestionClients " & _
    " SET GestionClients.SemaineFin = " & rst_detecteclientperdu.Fields(2) & " WHERE GestionClients.Client= '" & rst_detecteclientperdu.Fields(1) & "' ; "
    Je ne sais pas si ça marchera. A voir...

    Laurent

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2014
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    ça fonctionne! merci beaucoup!

    Je passe en résolu

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Si je me réfère aux épisodes précédents :
    - tu peux détecter qu’un client est « possiblement perdu » (ta requête detecteclientperdu) ;
    - tu peux indiquer dans GestionClients la semaine où tu l’as perdu (ta requête requeteMAJgestclients).

    Ce qu’il te manque maintenant, c’est une étape intermédiaire où l’utilisateur doit d’abord confirmer que le client « possiblement perdu » est « effectivement perdu ».
    Je crois que tu devrais ajouter cette notion dans la table GestionClients .

    Et le problème se résume alors
    - à mettre cette notion à jour dans GestionClients ;
    - et ajouter ce critère dans requeteMAJgestclients.


    P.-S. Bonjour Laurent42, tu as répondu pendant que je rédigeais mon billet. J'apporte la moutarde après le dessert !
    Bonne journée.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Février 2014
    Messages : 75
    Points : 49
    Points
    49
    Par défaut
    Bonjour ClaudeLELOUP,

    merci quand même de ta réponse!

    Ta remarque est intéressante mais j'obtiens bien ce que je veux avec mon code (corrigé comme suggéré par laurent42).

    J'en prends note pour la suite!

    A bientôt

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

Discussions similaires

  1. Exécuter une requête de mise à jour
    Par frabeau dans le forum VBA Access
    Réponses: 5
    Dernier message: 28/10/2011, 15h42
  2. [MySQL] Exécution d'une requête de mise à jour
    Par marty499 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/06/2008, 08h12
  3. Problème avec une requête de mise à jour
    Par Le Pharaon dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2006, 12h16
  4. Réponses: 2
    Dernier message: 10/03/2006, 13h55
  5. Réponses: 6
    Dernier message: 29/11/2005, 19h36

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