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

IHM Discussion :

Décompte dans un formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut Décompte dans un formulaire
    Bonjour à tous,

    Voilà, j'ai un problème qui parait simple dont je ne trouve pas la réponse :
    J'ai un formulaire qui centralise 2 tables :
    Une table T_AGENTS et une table T_MODES_DEPLACEMENTS dans une relation ou un agent a plusieurs modes de déplacement.

    Dans la table T_MODES_DEPLACEMENTS, un calcul est fait de telle sorte qu'en fonction de son mode de déplacement par année et trimestre une rémunération soit déduite d'un forfait annuel.

    Je souhaiterais effectuer une soustraction de telle sorte qu'au bout de ma ligne se trouve le résultat en temps réel de la somme restante par année/trim

    Comme une image est toujours plus parlante que des mots...

    Nom : 2023-09-17_10h21_28.png
Affichages : 98
Taille : 116,7 Ko

    Merci d'avance

  2. #2
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    Salut
    Il vous faudrait utiliser les fonctions de domaine.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Bonjour hyperion13,

    Merci pour les précieux renseignements qui m'ont mis suis sur la bonne voie...

    J'ai donc utilisé la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CumulPaiement: SomDom("MontantPaiement";"T_Paiement";"IdFacture=" & [IdFacture] & " and IdPaiement <=" & [IdPaiement])
    et je l'ai mis aux éléments de ma table ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CumulPaiement: SomDom("MONTANT";"T_MODES_DEPLACEMENTS";"REF_AGENT=" & [REF_AGENT] & " and REF_MODE_DEPLACEMENT <=" & [REF_MODE_DEPLACEMENT])
    Malgré tout, il me reste une condition à rajouter, c'est l'année du paiement et là je ne trouve pas la solution...

    Pour info, le champ ANNEE est une conversion de mon champ ANNEE_TRIM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ANNEE: Gauche([ANNEE_TRIM];4)
    Nom : annee.png
Affichages : 57
Taille : 32,7 Ko

    Peut-être la source de mon problème...

  4. #4
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,
    Est-ce que quelqu'un aurait une idée ?

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    bonsoir,
    Malgré tout, il me reste une condition à rajouter, c'est l'année du paiement et là je ne trouve pas la solution...

    Pour info, le champ ANNEE est une conversion de mon champ ANNEE_TRIM
    peux-tu expliquer la condition à ajouter: avec quel autre champ dois-tu comparer le champ ANNEE ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Bonjour tee_grandbois,

    Ce n'est pas une comparaison mais une condition.

    Il faut que le calcul soit le suivant :

    le forfait (500 € en 2023 ou 600 € en 2024) - tous les paiements effectués dans l'année en cours
    Dans mon exemple en 2023, j'ai un forfait de 500 € - 180 € - 50,60 € = 269.40 € (en vert)
    en 2024, j'ai un forfait de 600 € - 23 € - 30 € - 82,80 € = 464,20 € (en rouge)

    Nom : 2023-09-17_10h21_28.png
Affichages : 38
Taille : 116,7 Ko

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    Ce n'est pas une comparaison mais une condition.
    et c'est à nous de deviner laquelle avec çà :
    Il faut que le calcul soit le suivant :

    le forfait (500 € en 2023 ou 600 € en 2024) - tous les paiements effectués dans l'année en cours
    Dans mon exemple en 2023, j'ai un forfait de 500 € - 180 € - 50,60 € = 269.40 € (en vert)
    en 2024, j'ai un forfait de 600 € - 23 € - 30 € - 82,80 € = 464,20 € (en rouge)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Citation Envoyé par garavous Voir le message
    Voilà, j'ai un problème qui parait simple dont je ne trouve pas la réponse :
    Bah non ce n'est pas simple car access n'est pas un tableau excel, en particulier les lignes "n'ont pas d'ordre" et ne se connaissent pas entre elles
    Par ailleurs ça complique un peu d'avoir écrit "2023 TRIM 1" dans un seul champ et ce n'est jamais bon de répéter des infos (forfait écrit sur chaque ligne)

    Enfin dans l'exemple présenté, comme il y a 2 lignes sur le même trimestre access ne peux pas savoir laquelle se déduit une fois et laquelle 2 ! Lorsque ce problème sera résolu, le plus simple est de créer une fonction dans un module et d'appeler cette fonction dans le recordsource de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.recordsource="select *, get_solde(ref_agent, annee_trim) as solde from T_MODES_DEPLACEMENTS"
    En gros la fonction get_solde doit ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function get_solde(byval qui as long, byval quand as string) as double
    dim rst as recordset
    Set rst = CurrentDb.OpenRecordset("SELECT max(forfait)-sum(montant) as x FROM T_MODES_DEPLACEMENTS WHERE ref_agent=" & qui & " and left(annee_trim,4)='" & left(quand,4) & "' and annee_trim<='" & quand "'", dbOpenSnapshot)
    if rst.eof then get_solde=0 else get_solde=rst!x
    rst.close
    end function
    A cause du problème soulevé ci-dessus, les 2 dernières lignes de l'exemple auront le même solde. Pour éviter cela il faudrait tester avec la date exacte de la dépense ou avoir une clé qui permette de distinguer les dépenses du même trimestre

    Bon courage !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    re,
    Citation Envoyé par nico84
    A cause du problème soulevé ci-dessus, les 2 dernières lignes de l'exemple auront le même solde. Pour éviter cela il faudrait tester avec la date exacte de la dépense ou avoir une clé qui permet de distinguer les dépenses du même trimestre
    ce qui aurait permis à garavous de ne pas arriver au même résultat sur les lignes, c'est la comparaison du mode de déplacement avec <= :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     and REF_MODE_DEPLACEMENT <=" & [REF_MODE_DEPLACEMENT]
    finalement, j'en était, arrivé à la même réflexion que toi, c'est un peu léger comme identifiant unique surtout si le tri des enregistrements du formulaire ne correspond pas à celui utilisé par la fonction de domaine...

    Et il fallait bien, comme je le supposais, une comparaison entre l'année de ligne et celle du cumul pour arriver au bon résultat dans la condition WHERE et j'ajouterai que ce n'est pas l'année en-cours qui est un terme réservé, en général, à l'année de la date du jour mais de l'année du paiement
    Utiliser les bons termes aide à mieux comprendre le besoin ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [CR] Orientations differentes dans même état
    Par ina dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 23/10/2008, 10h57
  2. Réponses: 7
    Dernier message: 12/01/2005, 11h30
  3. Création de codes barres dans un état access
    Par caporal dans le forum IHM
    Réponses: 5
    Dernier message: 15/11/2004, 14h13
  4. Réponses: 2
    Dernier message: 13/10/2004, 15h32
  5. [CR 8.5] Numérotation des pages et rappel dans sous état
    Par Nout dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 02/09/2004, 13h43

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