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 :

[WD14] Récupérer les données d'une table, pour l'afficher dans une autre.


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut [WD14] Récupérer les données d'une table, pour l'afficher dans une autre.
    Bonjour,
    voila je suis un peu embéter avec une table sur laquel je n'arrive pas à insérer les données d'une seconde.
    J'ai créer une table qui contient a peu près ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Alsace, 67, 341, 478, 16646144,  792000, 6000
    Alsace, 68, 256, 152, 648745, 792000, 5000
    Poitou-Charente, 79, 586, 954, 254, 384000, 8000
    ...
    Voila, ma première colonne contient le nom de la région, la 2nde un numéro de département de la région, la 3ème contient l'ordonnées de la région en X, la 4ème contient l'ordonné en Y de la région, la 5ème contient le code couleur de la région, la 6ème la population de la région, et la dernière c'est le chiffre d'affaires par département.
    Toute c'est informations sont récupérer automatiquement à partir d'un fichier .txt.
    Maintenant je veux créer une deuxième table qui ne contiendrais que trois colonne laquelle il y aurait:
    -Le nom de la région,
    -La population de la région,
    -Le chiffres d'affaires de la REGION.

    Le problème est que ce que j'arrive à récupérer, c'est le nom, la population, mais ça bloque au niveau du chiffre d'affaires.
    En faite j'ai deux problèmes:
    1er: Quand je récupère les données, je retrouve autant de fois la région qu'il y a de département a l'intérieur.
    2ème problème: Je me retrouve avec un chiffre d'affaires identique a chaque région, et qui n'est pas du tout en concordance avec mes chiffres.
    Je vous mets en pièce jointes mon code en espèrant que vous aller pouvoir m'aider. Merci d'avance a ceux qui essayerons.

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 467
    Points : 806
    Points
    806
    Par défaut
    Pourquoi tu cherche à utiliser les fonctions f... ?
    Parce que là, vu le descriptif de la tâche à accomplir, ça ne sert à rien...

    A moins que ça corresponde au reste, enfin je trouve ça légèrement indigeste...

    Pourquoi ne pas faire plutôt :
    Quand tu parcours la table, tu cherche la ligne dans la table de destination en utilisant un tablecherche...
    Si tu ne trouve rien, tu ajoute une nouvelle ligne concernant ce département, sinon bah tu mets à jour les données de la table de destination. (comme ça, pas de problème de doublon de département)

    Et jusqu'à temps que tu aie parcouru toute la table.

  3. #3
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Voici comment je procedérais :

    1 - Chargement du fichier texte dans un tableau.
    2 - Tri du tableau ou alors avant phase 1 tytier le fichier par région.
    3 - Balayage du tableau avec rupture su région de manière totaliser.

    Et comme ça pas de test sur le département.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  4. #4
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ouai mais non enfin de ce que j'ai compris vous me dite de ne pas créer la première table, mais cette table il faut que je l'ai tout de même.
    Il faut que les deux tables soit afficher sur ma fenêtre.
    J'utilise la fonction f pour créer mon fichier texte adéquate.
    En faite au départ je récupère dans un fichier, un fichier texte que je récupère sur un serveur, puis il faut que je le modifie pour qu'il y est d'afficher tout ce que je veux dans l'ordre, c'est a ça que me sert toute mes fonctions f.
    Je vais regarder de plus près ce que tu as dit kuranes.

  5. #5
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Pourquoi dfiable créer un fichier texte ? il sert a quoi ?

    Tu peux tout faire en mémopire a chaque fois et/ou utiliser un fichier hyperfile dans lequel il sera plus facile de faire tes totaux par région


    De plus si je peux me permettre une remarque, il est plus simple d'ecrire tes boucles comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	sMaChaine = fLitLigne(nIdFic)
    	TANTQUE sMaChaine <> EOT ET sMaChaine <> ""
    		sCol1 = ExtraitChaîne(sMaChaine, 01, TAB)
    		sCol2 = ExtraitChaîne(sMaChaine, 02, TAB)
    		sCol3 = ExtraitChaîne(sMaChaine, 03, TAB)
    		sCol4 = ExtraitChaîne(sMaChaine, 04, TAB)
    		sCol5 = ExtraitChaîne(sMaChaine, 05, TAB)
    		xCol6 = ExtraitChaîne(sMaChaine, 06, TAB)
    		sCol7 = ExtraitChaîne(sMaChaine, 07, TAB)
    		TableAjouteLigne(TABLE_FRANCEANNUEL, sCol1, sCol2,sCol3,sCol4,sCol5, xCol6, sCol7)
    		// Ligne suivante
    		sMaChaine = fLitLigne(nIdFic)
    	FIN
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  6. #6
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ok mais un peu trop tard pour me dire ça mogwai162, et pour les boucles je suis d'accord avec toi, mais dans ton cas tu ne vérifie pas le cas ou le fichier ne souvrirai pas.

    Bon a part ça j'ai avancer, mais j'ai le problème du chiffre d'affaires qui merde.
    En faite j'arrive a récupérer juste ma région avec ma pop, mais le chiffre d'affaires est celui du 1er département que l'on retrouve dans mon fichier.
    Je vous mets ci-joint mon fichier modifier.

  7. #7
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Ah j'y comprend rien...

    Tu te complique la vie pour rien du tout

    tu devrais tetser sur la première coplonne qui est la région et non pas la deuxième qui est le département comme tu le fais.

    Ensuite tu devrais ajouter tes données dans un tableau associatif en passant comme indice le nopm de la région.

    Et puis j'ai toujours pas compris pourquoi tu lis 2 fichiers ? Explique moi stp.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  8. #8
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Question primordiale : pourquoi faire un 2° fichier, pourquoi ne pas faire ça dans un tableau ça me paraitrait beaucioyup plus simple déjà.

    Je te conseille même un ou plusieurs tableaux associatifs pour pouvoir mettre en indice le nom de la région.

    Ou encore si tu as vraiment besoin d'un fichier utilise un fichier hyperfile c'est bien, plus performant tu pourras faire de l'accès direct à ta région
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  9. #9
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Wahou trop chouette, mais euh... On fait comment ???

  10. #10
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Bon, je n'ai pas envi de te pondre la solution toute fait, car ca prendrait trop de temps et ca te ferait pas reflechir...
    Comme l'a dit mogwai162 :
    Citation Envoyé par mogwai162
    1 - Chargement du fichier texte dans un tableau.
    2 - Tri du tableau ou alors avant phase 1 tytier le fichier par région.
    3 - Balayage du tableau avec rupture su région de manière totaliser.
    Je vais essayer de t'expliquer un peu ça...
    D'abord tu dois lire ton fichier texte et le stocker quelque part...
    Que veux tu ? savoir pour une région, sa population et son chiffre d'affaire.
    Comment faire ? simplissime, tu dois avoir un tableau qui stockera la population de chaque région, et un tableau qui stockera le chiffre d'affair de chaque région.
    Donc en gros, tu aurais un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tant qu'il y a des lignes dans le fichier
        // ligne est un tableau de 7 chaines contenant la ligne courante du fichier...
        ligne = LireLigne(fichier)
        tabPopulation[ligne[1]] += ligne[6] // 6 eme element de ligne, c'est la population
        tabChiffreAffaire[ligne[1]] += ligne[7] // 7 eme element de ligne, c'est le chiffre d'affaire
    Et voilà, tu as calculé tes chiffres d'affaire et population par région

  11. #11
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Nous y sommes.
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  12. #12
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Oui Ok mais la ou je ne comprend pas c'est que mon fichier lui n'est pas basés par rapport au région mais par rapport au département, et c'est la que ça me pose un problème, car je me retrouve avec autant de ligne dans mon tableau que de département par région.
    Ou est mon erreur...

  13. #13
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    C'est exactement a ce que sert l'algo que je viens d'ecrire

  14. #14
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Ok ok, mais quelque précision !!!

    Tout dabord tu dis:
    D'abord tu dois lire ton fichier texte et le stocker quelque part...
    Quel fichier, mon fichier que j'ai créer ou le fichier d'origine ???
    Le stocker ou ???
    Ensuite tu dis:
    Comment faire ? simplissime, tu dois avoir un tableau qui stockera la population de chaque région, et un tableau qui stockera le chiffre d'affair de chaque région.

    Un tableau = une table ???

    // ligne est un tableau de 7 chaines contenant la ligne courante du fichier...

    Pour moi cette phrase est totalement indigeste !!!

    Désolé mais la j'ai un peu de mal, car je comprend a peu près ce que tu veux me dire mais ne comprend pas trop ton explication
    Merci de m'aider.

  15. #15
    Membre expérimenté Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu as dis :
    Voila, ma première colonne contient le nom de la région, la 2nde un numéro de département de la région, la 3ème contient l'ordonnées de la région en X, la 4ème contient l'ordonné en Y de la région, la 5ème contient le code couleur de la région, la 6ème la population de la région, et la dernière c'est le chiffre d'affaires par département.
    Je parle de ce fichier.
    Le stocker ou ???
    Tu le stocks pas, tu exécute direct mon algo (qui lit le fichier ligne a ligne...)
    Comment faire ? simplissime, tu dois avoir un tableau qui stockera la population de chaque région, et un tableau qui stockera le chiffre d'affair de chaque région.

    Un tableau = une table ???
    D'abord, on met ce que tu cherches dans des tableaux... après tu te débrouilles pour la mise en forme de tes données
    // ligne est un tableau de 7 chaines contenant la ligne courante du fichier...

    Pour moi cette phrase est totalement indigeste !!!
    en gros je t'explique ce qu'est la variable ligne pour moi...
    une ligne de ton fichier comprend 7 colonnes d'après ce que tu dis, donc la variable ligne sera un tableau de 7 colonnes qui contient une ligne du fichier...

    J'ai écrit cet algo en Pseudo-code, faut pas prendre tout à la lettre, ce n'est pas un truc compilable directement !
    Je t'explique le principe que tu dois suivre pour trouver la solution.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Bon me revoila, et c'est pas gagné.
    Bon alors j'ai réfléchi a ce que vous m'avez dit et j'ai repris mon cahier des charges, et c'est la que je me suis apercu qu'il y avait un problème dans ce que vous me disiez(pas de votre faute mais de la mienne).
    En faite je suis obliger de créer un fichier texte a chaque fois car mon chef, enfin, lui et d'autre personnes du groupe veulent exploiter les données et il me demande de leur fournir en plus de l'application un support en .txt.
    Je me disais bien que ce que j'avias fait était pour une bonne raison.
    Bref, donc je dois bien créer un second fichier, mais je suis toujours bloquer.
    J'ai travailler sur papier et j'ai compris la logique de ce qu'il fallait que je fasse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Lire Fichier
    TQ Col_Region <> ""
     alors Récup Nom_Region, Population
    FTQ
    Pour Col_Region de début a fin
      calcul CA_Region
    FPR
    Bon je sais c'est très imager mais c'est le principe maintenant faut que je trouve les formules pour le faire.
    Si quelqu'un peut m'éclairer, ce sera avec plaisir !

  17. #17
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Je crois que la meilleur solution reste de tout mettre dans des tableaux associatifs (utilise les algorithmes de Tober et de mogwai162), pour ensuite créer un nouveau fichier texte, puis remplir la table. Je crois que tu as tous pour le faire, il faut juste mettre les morceaux ensemble.
    «Un problème bien défini est un problème à moitié résolu.»

  18. #18
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Honnêtement ça m'embète de revoir mon programme sachant que je ne suis pas loin et que en plus ma méthode marche.
    J'ai essayer de voir les tableaux mais je ne comprend pas comment faire le code,
    même si vous me l'avez très bien expliquer.
    Bref j'en suis rendu la:
    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
     
    	// Ouverture du fichier
    	nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    	SI nIdFichbis=-1 ALORS
    		Erreur("L'ouverture du fichier a échoué", ErreurInfo())
    	SINON
    		// Première ligne
    		sMaChaîne = fLitLigne(nIdFichbis)
    		sCol1 = ExtraitChaîne(sMaChaîne, 01, TAB)
    		sCol2 = ExtraitChaîne(sMaChaîne, 02, TAB)
    		xCol3 = xTot
     
    		TableAjouteLigne(TABLE_FRANCEANNUEL1, sCol1, sCol2,xCol3)
     
    		TANTQUE sMaChaîne <> EOT ET sMaChaîne <> ""
    			// Ligne suivante
    			sMaChaîne = fLitLigne(nIdFichbis)
    			sCol1 = ExtraitChaîne(sMaChaîne, 01, TAB)
    			sCol2 = ExtraitChaîne(sMaChaîne, 02, TAB)
    			xCol3 = xTot
     
    			TableAjouteLigne(TABLE_FRANCEANNUEL1, sCol1, sCol2,xCol3)
    		FIN
     
    		fFerme(nIdFichbis)
    		FIN
    Mon problème est que je ne vois pas comment faire le total de mon chiffre d'affaire. Il y a bien un moyen !
    Je vois comment faire, il faut récupérer le chiffre d'affaire de chaque département, et les additionnés, mais pour l'instant je rame.
    Bref, merci quand même pour vos réponses et vos méthode qui sont certainement mieux que la mienne mais n'étant que débutant, j'ai encore un peu...nan, beaucoup de maL

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Autoformation
    Sinon as tu lu le livre d'autoformation de PcSoft ?

  20. #20
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    189
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mars 2009
    Messages : 189
    Points : 61
    Points
    61
    Par défaut
    Je l'ai regarder mais pas lu entièrement, je m'en sert en cas de problème, pour comprendre certains truc.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Réponses: 16
    Dernier message: 06/03/2015, 00h14
  2. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  3. Réponses: 1
    Dernier message: 31/03/2009, 22h59
  4. Réponses: 17
    Dernier message: 16/03/2009, 09h21
  5. Réponses: 1
    Dernier message: 28/08/2008, 22h53

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