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 :

Remplissage fichier avec valeurs de plusieurs requête


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 80
    Points : 48
    Points
    48
    Par défaut Remplissage fichier avec valeurs de plusieurs requête
    Bonjour à tous,

    J'ai besoin d'intégrer le résultat de plusieurs requêtes dans un fichier.

    Voici sa composition :
    Num Semaine | Param 1 | Param 2 | Param 3 ....

    J'ai par ailleurs plusieurs requêtes qui chacune ont cette composition :
    Requête 1 :
    Num Semaine | Param 1

    Requête 2 :
    Num Semaine | Param 2

    etc ....

    Je voudrais donc remplir le fichier avec les résultats des requête.

    Le hic :
    Toutes les requêtes n'ont pas les mêmes valeurs en Num Semaine (ça va de 1 à 52 mais certaines n'auront que quelques valeurs voir aucune).

    Ce que je pensais faire est de renseigner la colonne "Num Semaine" avec les données de la requête 1 (qui est la plus complète de toute) et de parcourir les autres requêtes ensuite sans modifier "Num Semaine" du fichier.

    Voila mon code pour le moment :

    //D'abord on vide le fichier
    HLitPremier(TonnagesOMGénéral)
    TANTQUE PAS HEnDehors(TonnagesOMGénéral)
    HSupprime(TonnagesOMGénéral)
    HLitSuivant(TonnagesOMGénéral)
    FIN
    TableAffiche(TABLE_TonnagesOMGénéral,taInit)

    //Maintenant on ajoute juste les numéros de semaine de la requête Total
    HLitPremier (REQ_TonnagesBOMTAS_TOTALSemaine) // Charge en mémoire les données du premier enregistrement du fichier

    TANTQUE PAS HEnDehors

    // On va ajouter tous les numéros de semaine trouvés dans Total
    TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_TOTALSemaine.Num_Semaine

    //On charge en mémoire l'enregistrement suivant
    HLitSuivant (REQ_TonnagesBOMTAS_TOTALSemaine)
    FIN

    //On ajoute après les différents enregistrements
    HLitPremier (TonnagesOMGénéral)
    TANTQUE PAS HEnDehors

    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_OMSemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_OM=REQ_TonnagesBOMTAS_OMSemaine.Tonnage_OM
    FIN
    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_DRSemaine.Num_Sem ALORS
    TonnagesOMGénéral.Tonnage_DR=REQ_TonnagesBOMTAS_DRSemaine.Tonnage_DR
    FIN
    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_VerreSemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_Verre=REQ_TonnagesBOMTAS_VerreSemaine.Tonnage_Verre
    FIN
    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_DVSemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_DV=REQ_TonnagesBOMTAS_DVSemaine.Tonnage_DV
    FIN
    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_OESemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_GO=REQ_TonnagesBOMTAS_OESemaine.Tonnage_GO
    FIN
    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_TOTALSemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_Total=REQ_TonnagesBOMTAS_TOTALSemaine.Tonnage_Total
    FIN

    TonnageOM est un entier = TonnagesOMGénéral.Tonnage_OM
    TonnageDR est un entier = TonnagesOMGénéral.Tonnage_DR
    TonnageDV est un entier = TonnagesOMGénéral.Tonnage_DV
    TonnageGO est un entier = TonnagesOMGénéral.Tonnage_GO
    TonnageV est un entier = TonnagesOMGénéral.Tonnage_Verre
    TonnageT est un entier = TonnagesOMGénéral.Tonnage_Total
    TonnageAutres est un entier = TonnageT- TonnageOM-TonnageDR-TonnageDV-TonnageGO-TonnageV

    TonnagesOMGénéral.Tonnage_Autres=TonnageAutres

    //On charge en mémoire l'enregistrement suivant
    HLitSuivant (REQ_TonnagesBOMTAS_TOTALSemaine)
    FIN
    TableAffiche(TABLE_TonnagesOMGénéral,taInit)
    et donc rien ne s'affiche alors que quand je teste il y a la semaine 1 de remplis dans mes requêtes.

    Le problème vient de
    HLitPremier (TonnagesOMGénéral)
    TANTQUE PAS HEnDehors
    On sors tout de suite de la boucle donc le fichier "TonnagesOMGénéral" n'a pas été renseigné...

    J'hésite entre 2 choses :
    1)Corriger ce code
    2)Avoir la colonne "Num_Semaine" déjà renseignée dans le fichier et le parcourir pour chercher des numéros de semaine remplis dans les requêtes. Par contre du coup quand je vide ce fichier en début de code il faut que je vide toutes les colonnes sauf le numéro de semaine. Comment faire ?

    Bref dans les 2 cas j'aurai besoin de votre aide précieuse.
    Si vous pouvez me donner également votre avis sur ce qui vous semble le plus logique je suis preneuse.

    Merci d'avance.

    Justine.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    556
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 556
    Points : 1 198
    Points
    1 198
    Par défaut
    Bonjour,

    je n'ai pas pris le temps d'analyser le but final de l'algo, par contre je remarque juste certaines choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //D'abord on vide le fichier
    HLitPremier(TonnagesOMGénéral)
    TANTQUE PAS HEnDehors(TonnagesOMGénéral)
         HSupprime(TonnagesOMGénéral)
         HLitSuivant(TonnagesOMGénéral)
    FIN
    TableAffiche(TABLE_TonnagesOMGénéral,taInit)
    Cette partie de code peut-être remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Hcreation(TonnagesOMGénéral)  La création d'un fichier efface obligatoirement l'ancien pour en recréer un vide
    TableAffiche(TABLE_TonnagesOMGénéral,taInit)
    Ensuite il semblerait que vous ayez oublier la commande d'ajout en base :
    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
    //Maintenant on ajoute juste les numéros de semaine de la requête Total
    HLitPremier (REQ_TonnagesBOMTAS_TOTALSemaine) // Charge en mémoire les données du premier enregistrement du fichier
    
    TANTQUE PAS HEnDehors
    
    // On va ajouter tous les numéros de semaine trouvés dans Total
        TonnagesOMGénéral.Num_Semaine = REQ_TonnagesBOMTAS_TOTALSemaine.Num_Semaine
    
         SI PAS HAJOUTE(TonnagesOMGénéral) ALORS
              //Gestion de l'erreur avec arrêt du traitement et message d'information
              Erreur(HErreurInfo())
              Reprisesaisie()
         FIN
    //On charge en mémoire l'enregistrement suivant
    HLitSuivant (REQ_TonnagesBOMTAS_TOTALSemaine)
    FIN
    C'est pour cela que votre fichier était toujours vide à la sortie de ce code. Pour le reste, je n'ai pas pris le temps de regarder... donc déjà si vous pouvez avancer avec ceci...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup !

    J'ai fait les 2 changements que vous m'avez proposé, ça marche super bien.

    Par contre les valeurs retournées dans "TonnagesOMGénéral" avec les conditions suivantes (les conditions fonctionnent) renvoients es valeurs "0" :

    SI TonnagesOMGénéral.Num_Semaine=REQ_TonnagesBOMTAS_TOTALSemaine.Num_Semaine ALORS
    TonnagesOMGénéral.Tonnage_Total=REQ_TonnagesBOMTAS_TOTALSemaine.Tonnage_Total
    FIN
    J'ai essayé
    TonnagesOMGénéral.Tonnage_Total=Val(REQ_TonnagesBOMTAS_TOTALSemaine.Tonnage_Total)
    mais sans succès.

    Il faut que j'insère les données avec un code différent pour qu'elle soient considérées comme des valeurs numériques ?

    Merci d'avance.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Cette partie de code peut-être remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Hcreation(TonnagesOMGénéral)  La création d'un fichier efface obligatoirement l'ancien pour en recréer un vide
    TableAffiche(TABLE_TonnagesOMGénéral,taInit)
    Juste une question bête, si j'utilise cette commande pour effacer mon fichier, vais-je conserver les caractéristiques de chacun des champs du fichier (numérique, date, entier, réel...) ?

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    556
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 556
    Points : 1 198
    Points
    1 198
    Par défaut
    Hcreation() permet de créer un fichier HyperFile en se basant sur l'analyse du projet.

    Donc la réponse est oui, il crée un fichier "vide d'enregistrement" mais structuré comme défini dans l'analyse.

    Concernant votre problème de zéro, est-ce que vous faites un HAjoute() systématiquement après avoir affecté les valeurs au fichier TonnagesOMGénéral ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Alors je n'ai plus de 0 et ai bien les valeurs (je ne sais pas pourquoi).

    Par contre la boucle
    HLitPremier(REQ_TonnagesBOMTAS_TOTALSemaine)
    TANTQUE PAS HEnDehors
    HLitSuivant (REQ_TonnagesBOMTAS_TOTALSemaine)
    est sans fin

    Pourtant avant le démarrage de la boucle, le fichier comporte bien un nombre limité de données et donc la boucle devrait s'arrêter au dernier enregistrement ...

  7. #7
    Membre éprouvé Avatar de miripesage
    Homme Profil pro
    gerant
    Inscrit en
    Novembre 2009
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : gerant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 725
    Points : 1 156
    Points
    1 156
    Par défaut
    Citation Envoyé par JustineJ Voir le message
    Alors je n'ai plus de 0 et ai bien les valeurs (je ne sais pas pourquoi).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HLitPremier(REQ_TonnagesBOMTAS_TOTALSemaine)
    TANTQUE PAS HEnDehors(REQ_TonnagesBOMTAS_TOTALSemaine)
    HLitSuivant (REQ_TonnagesBOMTAS_TOTALSemaine)
    Par contre la boucle est sans fin

    Pourtant avant le démarrage de la boucle, le fichier comporte bien un nombre limité de données et donc la boucle devrait s'arrêter au dernier enregistrement ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Super !!!

    Merci à tous les 2.
    Mon code fonctionne à merveille.

Discussions similaires

  1. Courbe avec remplissage - probléme avec valeurs négatives
    Par jourzebest dans le forum QlikView
    Réponses: 1
    Dernier message: 21/04/2015, 10h20
  2. Réponses: 14
    Dernier message: 19/09/2013, 14h49
  3. Rechercher fichiers avec un ou plusieurs groupes de mots
    Par Boubas1 dans le forum Windows XP
    Réponses: 6
    Dernier message: 23/09/2008, 23h04
  4. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  5. Réponses: 4
    Dernier message: 20/06/2005, 14h57

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