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éplacer la virgule d'une valeur de 'n' [WD25]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Déplacer la virgule d'une valeur de 'n'
    Bonjour à toutes et à tous,

    J'espère que vous allez bien !

    Je cherche depuis quelques temps une fonction éventuelle qui pourrait m'aider.

    Je lis d'un AS400 un fichier via ODBC. (La description est connue dans l'analyse).
    Dans ce fichier, j'ai des données avec plusieurs colonnes dont une avec un code "décimal" qui donne la position de la 'virgule' dans une autre donnée de ce ficheir. (L'appli sur l'AS400 l'utilise comme cela).
    1 correspond à une division par 10 (donc décalage virgule de 1 position)
    2 correspond à une division par 100 (donc décalage virgule de 2 position)
    3 correspond à une division par 1000 (donc décalage virgule de 3 position)

    Par exemple : 0.45 avec un code 2 donne 0.0045.

    La solution serait de créer un fichier de "Conversion" et de faire une requête...
    Ma question est, existe t'il une fonction dans windev qui puisse "Décaler" la virgule (partie décimal) de la valeur du code "décimal"

    Dans l'attente, bien à vous.

    Christian

  2. #2
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Hum salut,

    Je dirais que si tu la fais, elle existera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PROCÉDURE decalage(x, pIndice)
     
    TANTQUE pIndice <> 0
    	x = x/10
    	pIndice-= 1
    FIN
     
    RENVOYER x

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Salut Padbrain,

    Merci pour ta réponse. Je ne suis pas un expert donc...
    Je vais regarder cela.

    Merci encore.

    Bien à toi

    Christian

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 195
    Points : 156
    Points
    156
    Par défaut
    Bonjour

    pas sûr d'avoir tout saisi

    ca se résume à : n / 10^ decalage

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Nico_tournai Voir le message
    ca se résume à : n / 10^ decalage
    Ou à 10^-(décalage) c'est au programme de 6° ou 5° (6° primaire ou 1° secondaire)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 397
    Points
    9 397
    Par défaut
    Par exemple :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select ma_valeur / power ( 10, decalage)  as nouvelle_valeur from monFichier.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par padbrain Voir le message
    Hum salut,

    Je dirais que si tu la fais, elle existera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PROCÉDURE decalage(x, pIndice)
     
    TANTQUE pIndice <> 0
    	x = x/10
    	pIndice-= 1
    FIN
     
    RENVOYER x


    Bonjour padbrain

    Merci cela fonctionne.
    Voilà le code final avec les adaptations nécessaires pour intégrer le résultat de ma requête dans une table.

    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
     
    REQ_FiltreRefInterne_FIC_NOMENCPZPPN.ParamPZPPN = SAI_RefInterne
    HExécuteRequête(REQ_FiltreRefInterne_FIC_NOMENCPZPPN,hRequêteDéfaut)
    POUR TOUT REQ_FiltreRefInterne_FIC_NOMENCPZPPN
    	sComposant est une chaîne = REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PZCPN
    	xQuantité est un numérique = REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PZQTY
    	xIndice est un numérique = REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PSDCC
     
    	TANTQUE xIndice <> 0
    		xQuantité = xQuantité / 10
    		xIndice-=1
    	FIN
     
    	TableAjouteLigne(TABLE_FIC_NOMENC,sComposant,xQuantité)
    FIN
    Bien à toi
    A bientôt

    Christian

  8. #8
    Membre actif

    Homme Profil pro
    Sans
    Inscrit en
    Mars 2018
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mars 2018
    Messages : 153
    Points : 295
    Points
    295
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mac.croutier Voir le message
    Bonjour padbrain

    Merci cela fonctionne.
    Voilà le code final avec les adaptations nécessaires pour intégrer le résultat de ma requête dans une table.
    ...
    Super !

    Peut-être aurais-tu pu adapter la proposition de tbc92 dans ta requête.

    Tu peux aussi mixer les autres réponses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    REQ_FiltreRefInterne_FIC_NOMENCPZPPN.ParamPZPPN = SAI_RefInterne
    HExécuteRequête(REQ_FiltreRefInterne_FIC_NOMENCPZPPN,hRequêteDéfaut)
    POUR TOUT REQ_FiltreRefInterne_FIC_NOMENCPZPPN
     
    	TableAjouteLigne(TABLE_FIC_NOMENC, REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PZCPN, decaler(REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PZQTY, REQ_FiltreRefInterne_FIC_NOMENCPZPPN.PSDCC))
     
    FIN
     
    PROCÉDURE INTERNE decaler(pQuantite est numérique, pDecalage est numérique)
         RENVOYER pQuantite / Puissance(10, pDecalage)
    FIN

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

Discussions similaires

  1. Enlever la virgule d'une valeur numerique
    Par sniper75 dans le forum Outils BI
    Réponses: 5
    Dernier message: 08/06/2012, 10h37
  2. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  3. insérez une virgule derrière une valeur saisie
    Par lolodelp dans le forum Requêtes
    Réponses: 9
    Dernier message: 28/01/2008, 14h09
  4. Formater une valeur 2 chiffre aprés la virgule en Tquery.SQL
    Par amireve dans le forum Bases de données
    Réponses: 6
    Dernier message: 19/05/2007, 11h17
  5. Réponses: 3
    Dernier message: 14/12/2005, 15h17

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