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

WinDev Discussion :

déterminer le max d'un valeur


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut déterminer le max d'un valeur
    Bonjour;

    j'aimerais déterminer le valeur max d'un compteur d'une voiture pour utiliser comme valeur de départ :
    cpintial : valeur du compteur de départ
    cpfinal : valeur du compteur de retour d'une mission
    distance= cpfinal-cpinitial

    a l'ajout d'une mission je dois affiché directement le dernier compteur de la voiture dans le champ cpinitial
    pour cela je dois parcourir le fichier quota_service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE compteur_max()
    nTb est un entier = TableOccurrence(Table_service,toAffichée)
    nRes est un numérique 
    i est un entier
    POUR i=1 A nTb
       nRes = Table_service[1]
      SI nRes > Table_service.Cpfinal[i]  ALORS 
    nres=table_service.cpfinal[i]; 
    		FIN
    TableSelectPlus(Table_service,i+1)
    cette procedure affiche la valeur max (cpfinal) de la ligne sélectionner

    SVP Est ce qu'il une possibilité de correction
    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    En supposant que l'on ait dans le tableau uniquement des lignes qui concernent le véhicule en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PROCEDURE compteur_max()
    nRes est un numérique
    SI TableOccurence(Table_service) > 0 ALORS
         nRes = Table_service.Cpfinal[1]
         POUR TOUTE LIGNE DE Table_service
              SI nRes > Table_service.Cpfinal[i]  ALORS 
                   nRes = table_service..Cpfinal[i]
              FIN
         FIN
    FIN
    Cela ne te permet de retrouver que le dernier compteur enregistré. Dans ce cas, tu devras avoir auparavant gardé en mémoire le compteur de départ. Ce qui devrait te permettre de calculer la distance parcourue.

    Bon courage,

    Nicolas

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut détermination d'une valeur max
    Bonjour;
    j'ai essayer votre procédure mais elle affiche que le cpfinal de la première ligne
    même si on ajoute une deuxième enregistrement, c.à.d une 2ème mission de la même voiture
    sachant que l'opération se base sur une seule voiture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE compteur_max()
    nRes est un numérique
    SI TableOccurence(Table_service) > 0 ALORS
         nRes = Table_service.Cpfinal[1]
         POUR TOUTE LIGNE DE Table_service
              SI nRes > Table_service.Cpfinal[i]  ALORS 
                   nRes = table_service..Cpfinal[i]
              FIN
         FIN
    FIN
    1ère enregistrement: 2 Bons, valeur de Bons, date du bons; cpinitial=140000
    cpfinal=140300; distance=300 Km
    2ème enregistrement: cpinitial=dernier cpfinal=143000( en principe automatiquement); cpfinal=140450
    3ème enregistrement: cpinitial=140300 au lieu de 140450

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 201
    Points : 12 778
    Points
    12 778
    Par défaut
    Bonjour,
    Je pense qu'il y a une petite coquille dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    PROCEDURE compteur_max()
    nRes est un numérique
    SI TableOccurence(Table_service) > 0 ALORS
         nRes = Table_service.Cpfinal[1]
         POUR TOUTE LIGNE DE Table_service
              SI nRes < Table_service.Cpfinal[i]  ALORS 
                   nRes = table_service..Cpfinal[i]
              FIN
         FIN
    FIN
    Tatayo.

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Même plusieurs !!! Il n'y a pas le [i] ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE compteur_max()
    nRes est un numérique
    SI TableOccurence(Table_service) > 0 ALORS
         nRes = Table_service.Cpfinal[1]
         POUR TOUTE LIGNE DE Table_service
              SI nRes < Table_service.Cpfinal  ALORS 
                   nRes = Table_service..Cpfinal
              FIN
         FIN
    FIN
    désolé pour le temps perdu

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Je ne suis pas sur de bien comprendre le contexte de ta demande.

    Voila ce que je comprends :
    - Tu as une liste de missions
    - Chaque mission est affectée à un véhicule
    - Pour chaque mission tu enregistres les km du compteur de départ et de fin de mission
    - Tu calcules la distance en faisant la différence entre les km du compteur de départ et de fin de mission
    - Tu veux lors de la création d'une mission proposer les km du compteur de départ avec la valeur maxi des km compteur de fin de mission du véhicule
    Je dis proposer par ce que si des km hors missions sont effectués il faut pouvoir changer la valeur.
    Le but étant de s'éviter la saisie d'un champ lorsque les missions s’enchaînent.

    Si c'est bien ça, il suffit quand tu rentres en saisie d'une nouvelle mission après avoir sélectionné un véhicule, de faire un requête qui retourne la valeur maxi des km compteur de fin de mission du véhicule.
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Juste pour mettre mon grain de code ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            SI nRes < Table_service.Cpfinal  ALORS 
                   nRes = Table_service..Cpfinal
    peut être remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            nRes = Max(nRes, Table_service.Cpfinal)
    Mais sans prétention, le principal ayant déjà été écrit.

    Hemgé

  8. #8
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Bonjour,

    Je te conseille de relire attentivement la réponse de Laurent(+1) car c'est la bonne approche. Avant le CODE il faut que tu arrive à formuler ce que tu as et ce que tu attends. J'avais compris la même chose que lui de ton premier POST et si c'est ce que tu veux alors il t"a donné la réponse.

    Bon dev

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Bonjour;
    merci a tous les amis

    les 3 propositions fonctionne correctement

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Atsibat Voir le message
    Bonjour,

    Je te conseille de relire attentivement la réponse de Laurent(+1) car c'est la bonne approche. Avant le CODE il faut que tu arrive à formuler ce que tu as et ce que tu attends. J'avais compris la même chose que lui de ton premier POST et si c'est ce que tu veux alors il t"a donné la réponse.

    Bon dev
    Bonjour;
    merci de votre conseille Atsibat
    j'ai testé les 3 propositions avec plus d'enregistrement
    l'utilisation d'une requête qui détermine le max c'est le plus fiable
    ainsi je vous remercie tous de nouveau

Discussions similaires

  1. [VxiR2] Min Max Moyenne sur valeurs dans plusieurs sections
    Par lil-flow83 dans le forum Webi
    Réponses: 1
    Dernier message: 12/06/2009, 14h41
  2. faire un max sur une valeur varchar
    Par pelloq1 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/05/2009, 22h13
  3. Réponses: 9
    Dernier message: 05/01/2007, 20h04
  4. max entre deux valeur
    Par lazzeroni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2006, 11h15
  5. max de deux valeures
    Par awatif dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/06/2006, 18h09

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