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

Access Discussion :

PB évenement afterupdate


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut PB évenement afterupdate
    Bonjour,

    Petit problème avec des afterupdate de deux de mes champs.

    J'ai le code suivant et j'explique le souci ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub PrixFinal_AfterUpdate()
     'calcul des différentes valeurs
    CalculDevis
    End Sub
     
    Private Sub NuméroDevisaffaire_AfterUpdate()
    'Active le bouton si on a un numéro de devis
    Me!Bouton_ajout_prestation.Enabled = Not IsNull(NuméroDevisaffaire)
     
    'calcul des différentes valeurs
    CalculDevis
     
    End Sub
    Le problème, c'est que la procédure CalculDevis s'effectue correctement quand je modifie le champ NuméroDevisaffaire, mais pas quand je modifie juste le champ PrixFinal. Ca a l'air de fonctionner quand je modifie d'abord NuméroDevisaffaire, puis PrixFinal, mais ça ne m'arrange pas du tout.

    Le code de CalculDevis:

    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
    Private Sub CalculDevis()
     
    If Not IsNull(Me.NuméroDevisaffaire.Value) Then
     
        Dim mysql As String
        mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, 
    Prestation.CoeffRetenu FROM [Devis d'affaire] INNER JOIN Prestation ON 
    [Devis d'affaire].NuméroDevisaffaire = Prestation.DevisPère WHERE 
    Prestation.DevisPère = '" & Me.NuméroDevisaffaire.Value & "'"
        Dim cnn1 As ADODB.Connection
        Set cnn1 = CurrentProject.Connection
        Dim myRecord As New ADODB.recordset
        myRecord.ActiveConnection = cnn1
     
        myRecord.Open mysql
     
        Dim CDirects As Double
        CDirects = 0
        Dim PVcalcul As Double
        PVcalcul = 0
     
        If Not myRecord.EOF Then
        myRecord.MoveFirst
        While Not myRecord.EOF
            CDirects = CDirects + myRecord.Fields(0) * myRecord.Fields(1)
            PVcalcul = PVcalcul + myRecord.Fields(0) * myRecord.Fields(1) * myRecord.Fields(2)
            myRecord.MoveNext
        Wend
        End If
     
        Me.CalculCD.Value = CDirects
        Me.CalculPV.Value = PVcalcul
        Me.CalculMB.Value = Me.PrixFinal.Value - CDirects
        If CDirects <> 0 Then
        Me.calculCoeff.Value = Me.PrixFinal.Value / CDirects
        Else
        Me.calculCoeff.Value = 0
        End If
     
     
    End If
     
    End Sub
    C'est du calcul à partir d'une requete et remplissage de champs.


    Y'a t-il des priorités dans l'éxécution des évenements? Vous voyez pourquoi ça ne marche pas?

    Pour moi, c'est incompréhensible...

    Merci d'avance de votre aide.

    flu

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je pense avoir mieux cerné le problème.

    Il se situe apparement au niveau de la requête. Il ne trouve pas les prestations qui viennent juste d'être ajoutées pour le numérodevisaffaire courant.

    A ce niveau là, donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, 
    Prestation.CoeffRetenu FROM [Devis d'affaire] INNER JOIN Prestation ON 
    [Devis d'affaire].NuméroDevisaffaire = Prestation.DevisPère WHERE 
    Prestation.DevisPère = '" & Me.NuméroDevisaffaire.Value & "'"
    Est-ce que j'utilise la bonne propriété? Il existe une alternative à la propriété Value? De type "valeur courante", par exemple?

    Merci de votre aide

    flukie

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Le problème vient de la requete.

    Il ne faut pas mettre d'INNER JOIN (Access en met souvent de manière automatique apparemment).

    Requète corrigée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, 
    Prestation.CoeffRetenu FROM Prestation WHERE 
    Prestation.DevisPère = '" & Me.NuméroDevisaffaire.Value & "'"

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2005, 22h19
  2. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  3. Réponses: 6
    Dernier message: 02/05/2005, 14h00
  4. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  5. Réponses: 4
    Dernier message: 21/05/2004, 11h24

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