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 :

Problème actualisation pour requête


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 298
    Par défaut Problème actualisation pour requête
    Bonjour,

    J'ai du code en vba, qui me permet de faire des calcul celon des données dans un formulaire et à travers des requête.

    Par exemple, j'ai une personne qui fait la visite, et quand je modifie la date du jour ou il fait la visite cela recalcul la valeur.

    Cependant ce n'est pas pris en compte automatiquement car la requête ne trouve aucun enregistrement la première fois. Il faut calculer une deuxieme fois.

    Pourtant je fais ce calcul après mise à jour du champ.

    Je ne vois pas d'ou vient le problème.

    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
     
    Private Sub Modifiable6_AfterUpdate()
    Dim db As Database
    Dim rq As Recordset
    Dim rq1 As Recordset
    Dim rqNombre As Recordset
    Dim rqCrp As Recordset
    Dim rqLieu As Recordset
    Dim rqInser As Recordset
    Dim resultat As Integer
    Dim Nombre_A As Integer
    Dim Nombre_Menu_B As Integer
    Dim Nombre_Menu_A As Integer
    Dim Nombre_Plat_Jour As Integer
    Dim Nombre_Menu_1 As Integer
    Dim Nombre_Menu_2 As Integer
    Dim Nombre_Ligne As Integer
    Dim Nombre_Invite_La_Hague As Integer
    Dim Nombre_Chauffeur As Integer
    Dim Nombre_personne As Integer
    Dim Chrono As Long
    Dim datev As String
    Dim Lieu As String
     
    Nombre_Ligne = 1
     
    Set db = CurrentDb()
     
    If IsNull(Forms.Formulaire_Principal.CRP.Form.Date.Value) Then
        Exit Sub
    Else
        datev = Format(Forms.Formulaire_Principal.CRP.Form.Date.Value, "mm/dd/yyyy")
        Chrono = Forms.Formulaire_Principal.CRP.Form.Chrono.Value
     
        Set rq = db.OpenRecordset("SELECT Date, Chrono,Count(ID_Employe) FROM CRP WHERE Chrono = " & Chrono & "And Date = #" & datev & "# GROUP BY Date, Chrono")
        Set rq1 = db.OpenRecordset("SELECT Date, Chrono,Count(ID_Employe) FROM Accompagnement WHERE Chrono = " & Chrono & "And Date = #" & datev & "# GROUP BY Date, Chrono")
        Set rqNombre = db.OpenRecordset("SELECT Date, Chrono,Nombre_Personne,Nombre_Chauffeur FROM Nombre WHERE Chrono = " & Chrono & "And Date = #" & datev & "#")
        Set rqLieu = db.OpenRecordset("SELECT Date, Chrono,Emplacement, Nombre_Invite_La_Hague FROM Dejeuner WHERE Chrono = " & Chrono & "And Date = #" & datev & "#")
        Set rqCrp = db.OpenRecordset("SELECT Date, Chrono FROM CRP WHERE Chrono = " & Chrono)
     
        If rq.EOF = False Then
            resultat = rq(2)     ' valeur si resultat
        Else
            resultat = 0     ' valeur si aucun résultat
        End If
    Si par exemple dans mon formulaire CRP je modifie la date de la visite d'un crp la requête rq est effectué avec la date du champ et un autre identifiant.

    Ce sont ceux du formulaire et donc qui correspondent à la bonne personne.

    Mais je dois lancer la fonction une seconde fois pour que cela sois pris en compte.


    Merci d'avance à ceux qui prendront la peine de lire mon code.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 298
    Par défaut
    je viens de voir que la table est mise à jour lorsque je perds le focus du sous formulaire. Comment faire?? De plus le calcul doit être effectué à chaque enregistrement

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 153
    Par défaut
    salut, en fait je crois que j'ai eu le meme probleme que toi.
    Cela venait du fait que le recordset ne s'actualisait pas.

    Pour ce faire il faut que tu le ferme a la fin de ta boucle pour la reouvrir en debut, et la normalement toutes les modifs seront prises en comptes.

    syntaxe pour la fermeture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    recordset.close
    set recordset=nothing

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 298
    Par défaut
    merci bien, je venais de trouver une solution, après mise à jour j'utiliser une macro actualiser et quand je perd le focus j'applique ma fonction

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 298
    Par défaut
    en faite ce n'est pas totalement résolu car l'actualisation renvoit au premier enregistrement alors que sur le formulaire je veux rester sur l'enregistrement en cours.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 153
    Par défaut
    Pour actualiser ton recordset tu utilise la syntaxe que je t'ai donnée ou ta macro?

    Sinon tu dois avoir des commandes qui vont avec le recordset genre "recordset.lastmodified" ou "recordet.lastupdate".


    tu dois aussi avoir "recordset.absoluteposition".

Discussions similaires

  1. problème pour requête SELECT sur plusieurs tables
    Par 3dagard dans le forum Requêtes
    Réponses: 15
    Dernier message: 18/08/2008, 00h34
  2. Problème pour requête SQL LIKE avec ACCESS
    Par ar.aziz dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/07/2008, 10h53
  3. [VBA]Problème pour requête VBA
    Par clairette31 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/07/2006, 10h48
  4. [MySQL] Problème récupération variable pour requête SQL !!
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2006, 16h08
  5. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21

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