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. #41
    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
    On se fait chier à expliquer pendant 3 pages le probleme au lieu de donner une solution pour qu'il cherche un peu par lui meme et tu lui donnes tout cuit




    Oui, c'est vrai, mais faut avouer que j'avais progresser !

    Edit:

    Bref je repose ma question car je suis pas sur que vous l'ayez vu.
    Je n'arrive pas a enregistrer les données des tableaux sous un fichier .txt.
    Comment faire car il me dit que les tableaux associatif ne peuvent pas être converti vers le type entier, ou chaine ou peut importe(j'ai un peu tt essayer)
    Comment faire ???

  2. #42
    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 je comprend pas pourquoi il veut pas:

    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
     
    nIdFicbis = fOuvre(sFichierAImporter, foLectureEcriture)
    // sFichierAImporter est le fichier avec mes données
     
    tabPopulation est un tableau associatifs d'entiers
    tabChiffreAffaire est un tableau associatifs de monétaires
    sLigne est chaîne
    BOUCLE
    	sLigne = fLitLigne(nIdFicbis)
    	SI sLigne <> EOT ALORS
    		sID est chaîne = ExtraitChaîne(sLigne, 1)
    		tabPopulation[sID] =  tabPopulation[sID] + Val(ExtraitChaîne(sLigne, 7))
    		tabChiffreAffaire[sID] = tabChiffreAffaire[sID] + Val(ExtraitChaîne(sLigne, 6))
    	FIN
    A FAIRE TANTQUE sLigne <> EOT
     
    nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    TANTQUE sLigne <> EOT
    	fPositionne(nIdFichbis, 0, fpFin)
    	fEcritLigne(nIdFichbis, tabPopulation + TAB + tabChiffreAffaire) 
    	fFerme(nIdFichbis)
    FIN

    Je fait ça, tout s'execute sans erreur, mais il m'enregistre rien dans mon fichier, pourquoi ???

  3. #43
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fEcritLigne(nIdFichbis, tabPopulation + TAB + tabChiffreAffaire)
    En même temps, t'attend un miracle on dirait avec cette ligne
    faudrait ptête lui dire que ligne du tableau il doit utiliser...

  4. #44
    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
    Euh ouai je vois pas trop !!!
    Enfin si, je sais qu'il y a une erreur, mais parce que j'ai vu qu'il y avait une erreur aussi avant.
    J'avais mis:

    TANTQUE sLigne <> EOT

    alors qu'il fallait mettre:

    TANTQUE sID <> EOT

    Et oui ca ne pouvais pas marcher.
    Bon sinon pour ce que tu viens de dire tober je regarde et je corrige(si possible).


    Edit:

    Alors la je rigole.
    Au bout d'un moment je suis obliger.

    Bon je viens de tester un truc:
    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
     
    nIdFicbis = fOuvre(sFichierAImporter, foLectureEcriture)
    // sFichierAImporter est le fichier avec mes données
     
    tabPopulation est un tableau associatifs d'entiers
    tabChiffreAffaire est un tableau associatifs de monétaires
    sLigne est chaîne
    BOUCLE
    	sLigne = fLitLigne(nIdFicbis)
    	SI sLigne <> EOT ALORS
    		sID est chaîne = ExtraitChaîne(sLigne, 1)
    		tabPopulation[sID] =  tabPopulation[sID] + Val(ExtraitChaîne(sLigne, 7))
    		tabChiffreAffaire[sID] = tabChiffreAffaire[sID] + Val(ExtraitChaîne(sLigne, 6))
    	FIN
    A FAIRE TANTQUE sLigne <> EOT
     
     
    TANTQUE sID <> EOT
    	nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    	fPositionne(nIdFichbis, 0, fpFin)
    	fEcritLigne(nIdFichbis, tabPopulation[1] + TAB + tabChiffreAffaire[1]) 
    	fFerme(nIdFichbis)
    FIN
    J'ai mis:

    fEcritLigne(nIdFichbis, tabPopulation[1] + TAB + tabChiffreAffaire[1])

    pour tester. Et la patatraque !!!
    Je me retrouve avec une fenêtre qui ne veut pas ce fermer et qui fait patiner ma bécanne. Le truc, le programme tourne en boucle sans s'arrêter.
    Je quitte, je regarde mon fichier texte, et la (je suis content) je me retrouve avec 20000lignes avec dans une première colonne que des 0 et dans la seconde idem(au moins cette fois j'ai quelque chose).
    Que ce passe t'il mon programme devrait s'arrèter !

  5. #45
    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
    Non ton programme ne devrait pas s'arreter. Le fonctionnement est parfaitement normal.

    D'abord, tu accèdes à tabPopulation[1] qui je suis sur n'existe pas car j'imagine qu'aucune région ne s'appelle "1"
    Ensuite, tu répète indéfiniment l'insertion de ces valeurs, car ta condition de sortie de boucle ne peut pas se vérifier (tu ne te serts jamais de sID).
    En gros, tu ne sais pas parcourir un tableau associatif.
    La solution est donnée comme d'hab dans l'aider :
    Aide -> Index -> Tableau associatif, Parcourir un tableau associatif

  6. #46
    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
    Désolé mais je croyais que ça viendrait plus facilement avec un petit exemple. Mais je crois que le principe de boucle sur un tableau est encore flou. En passant il n'y à aucune raison de boucler avec une condition sur une chaîne surtout qu'il y a une syntaxe toute faite pour les tableaux associatifs.
    «Un problème bien défini est un problème à moitié résolu.»

  7. #47
    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
    Autant pour moi, je croyais que t'avais direct donné la réponse
    T'inquiètes pas, il lui reste qu'une boucle à faire sur un tableau associatif, et c'est fini.

  8. #48
    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
    Aie, aie, aie

    Merci Tober de me remettre a ma place,(en résumer de me dire d'utiliser l'aide)c'est vrai que je ne l'utilise pas assez.
    Il me manque la touche final:

    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
    nIdFicbis = fOuvre(sFichierAImporter, foLectureEcriture)
    
    
    tabPopulation est un tableau associatifs d'entiers
    tabChiffreAffaire est un tableau associatifs de monétaires
    sLigne est chaîne
    BOUCLE
    	sLigne = fLitLigne(nIdFicbis)
    	SI sLigne <> EOT ALORS
    		sID est chaîne = ExtraitChaîne(sLigne, 1)
    		tabPopulation[sID] =  tabPopulation[sID] + Val(ExtraitChaîne(sLigne, 7))
    		tabChiffreAffaire[sID] = tabChiffreAffaire[sID] + Val(ExtraitChaîne(sLigne, 6))
    	FIN
    A FAIRE TANTQUE sLigne <> EOT
    
    POUR TOUT   DE tabChiffreAffaire
    	nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    	fPositionne(nIdFichbis, 0, fpFin)
    	fEcritLigne(nIdFichbis, sID + TAB + tabPopulation[sID] + TAB + tabChiffreAffaire[sID]) 
    	fFerme(nIdFichbis)
    FIN
    MAIS QUE METTRE APRES POUR TOUT ???

    J'ai essayer pas mal de truc mais rien ne marche il me faut la variable de tabChiffreAffaire, mais quel est elle ?
    Elle doit être de type monétaire, mais je n'en est pas...
    Enfin je dois pas la voir...

  9. #49
    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
    Des fois, j'ai l'impression que tu me fais marcher

    quand tu fais une boucle classique, tu met par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i est un entier
    POUR TOUT i DE 0 A 10000
       // ton code
    FIN
    ben pour un tableau associatif c'est pareil, il lui faut une variable temporaire pour mettre la valeur de la position courante du tableau...
    Cependant, le tableau associatif a comme clef un objet et pas un indice, donc c pour ca que la syntaxe du "pour tout" change un ptit peu.
    donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    region est une chaine
    chiffreaffaire est un monétaire
    POUR TOUT ELEMENT region, chiffreaffaire DE tableau
       // ton code
    FIN
    j'ai rien testé donc la syntaxe est surement fausse, mais ca explique ce qu'il faut faire...

  10. #50
    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
    C'est vrai, c'est vrai,
    Bon les gars, j'ai une mauvaise nouvel, j'ai terminer.
    Nan je déconne fallait bien un truc qui allait pas.
    Je l'ai pas dit mais je le savais d'avance que:
    tabPopulation ne me servait a rien et surtout que c'était pas bon.
    Car si je suis la logique, tabPopulation me prend la pop de la région pour chaque département et l'additionne. Donc ceci n'est pas bon.
    Donc il faut que j'inscrive dans mon fichier la pop que je vais récupérer directement dans mon fichier de base.
    Voili, voilou, j'ai pas encore terminer mais presque.
    En attendant je vous remercie tous de m'avoir aider.
    Je vous souhaite un bon week-end(même si la météo a l'air un peu pourri, un peu partout en france), et je vous dit encore merci !!!!

  11. #51
    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
    Une dernière chose que je n'aimes pas dans ton code. Pourquoi tu ouvres et ferme le fichier à chaque itération dans la boucle? Pourquoi ne pas l'ouvrir avant et le fermer après, ce serait beaucoup plus rapide et ça éviterait que tu es à te positionner dans ton fichier (regarde d'ailleur dans l'aide pour une constante du nom de foAjout).
    Et en passant à Montréal(ça c'est de l'autre coté de l'Atlantique) c'est soleil 10°C toute la fin de semaine!
    «Un problème bien défini est un problème à moitié résolu.»

  12. #52
    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, bé y a pas a dire je vois pas.
    En faite pour ma population je n'arrive pas a la récupérer pour chaque région.

    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
     
    nIdFicbis = fOuvre(sFichierAImporter, foLectureEcriture)
     
    tabChiffreAffaire est un tableau associatifs de monétaires
    chiffre est un monétaire
    sLigne est une chaîne
    BOUCLE
    	sLigne = fLitLigne(nIdFicbis)
    	SI sLigne <> EOT ALORS
    		sID est chaîne = ExtraitChaîne(sLigne, 1)
    		sNColx est une chaîne = ExtraitChaîne(sLigne, 7)		
    		tabChiffreAffaire[sID] = tabChiffreAffaire[sID] + tabChiffreAffaire[sNColx] + Val(ExtraitChaîne(sLigne, 6))
    	FIN
    A FAIRE TANTQUE sLigne <> EOT
     
     
     
    POUR TOUT chiffre, sID  de tabChiffreAffaire
    	sLigne = fLitLigne(nIdFicbis)
    	nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    	fPositionne(nIdFichbis, 0, fpFin)
    	fEcritLigne(nIdFichbis, sID + TAB + sNColx  + TAB + tabChiffreAffaire[sID]) 
    	fFerme(nIdFichbis)
    FIN
    Je me retrouve avec la pop de ma dernière région pour toute.
    Where is my problem ???

  13. #53
    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
    Ici
    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
    nIdFicbis = fOuvre(sFichierAImporter, foLectureEcriture)
    
    tabChiffreAffaire est un tableau associatifs de monétaires
    chiffre est un monétaire
    sLigne est une chaîne
    BOUCLE
    	sLigne = fLitLigne(nIdFicbis)
    	SI sLigne <> EOT ALORS
    		sID est chaîne = ExtraitChaîne(sLigne, 1)
    		sNColx est une chaîne = ExtraitChaîne(sLigne, 7)		
    		tabChiffreAffaire[sID] = tabChiffreAffaire[sID] + tabChiffreAffaire[sNColx] + Val(ExtraitChaîne(sLigne, 6))
    	FIN
    A FAIRE TANTQUE sLigne <> EOT
    
    
    
    POUR TOUT chiffre, sID  de tabChiffreAffaire
    	sLigne = fLitLigne(nIdFicbis)
    	nIdFichbis = fOuvre(sFichiertableau, foLectureEcriture)
    	fPositionne(nIdFichbis, 0, fpFin)
    	fEcritLigne(nIdFichbis, sID + TAB + sNColx  + TAB + tabChiffreAffaire[sID]) 
    	fFerme(nIdFichbis)
    FIN
    Pourquoi tu va chercher 2 chiffres d'affaire? C'est sID ou sNColx qui contient la région?
    «Un problème bien défini est un problème à moitié résolu.»

  14. #54
    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
    Quand je marque:

    sID est chaîne = ExtraitChaîne(sLigne, 1)

    la je récupère ma région.
    Mais comment faire pour récupérer ma population et la mettre pour chaque région correspondante.
    Car la je récupère la population de ma dernière région lu sur mon fichier et il me l'assigne pour toute mes régions. Mais pourquoi ?

  15. #55
    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

    T'as jamais entendu parler du mot debug ?
    Au lieu de poser des questions pour pratiquement rien, tu devrais essayer de comprendre ce que fait ton algorithme !
    Pour ça, rien de mieux que de mettre l'execution en mode pas à pas. Ca te permetta de voir ce qui se passe pour chaque ligne du code !

  16. #56
    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
    Juste une petite question, les tableaux associatifs peuvent avoir plus de deux colonnes ?

  17. #57
    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
    Il n'y a pas de colonne dans un tableau associatif, juste des clé et des valeurs, donc non. C'est important de comprendre qu'un tableau à 2 dimensions et un tableau associatif c'est différent. Mais tu peux utiliser une structure comme valeur si tu veux.
    «Un problème bien défini est un problème à moitié résolu.»

  18. #58
    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
    ou plusieurs tableaux...
    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

  19. #59
    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 c'est bon, j'ai un peu modifier mon code de départ sur la population de la région(j'ai passer la pop par département), et j'obtiens ce que je veux, mais... il y a toujours un mais, est ce normal que je n'arrive pas a récupérer mes chiffres après la virgule pour mon chiffre d'affaire ?
    C'est un peu embêtant.

    Edit :
    Je viens de regarder l'aide sur "Val", et elle dit:
    Val("143") // Renvoie 143
    Val("1.67") // Renvoie 1,67
    Val("ABC") // Renvoie 0
    Val("3plus2") // Renvoie 3
    Val("7,5") // Renvoie 7
    Val("1D2") // Renvoie 100
    Val("2.5e-2") // Renvoie 0.025

    Donc j'imagine que moi ayant une virgule comme séparateur, cela doit être normal que je ne récupère pas mes centimes
    Non ?

  20. #60
    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
    Effectivement, il faudrait que tu utilises Remplace avant le Val.
    «Un problème bien défini est un problème à moitié résolu.»

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 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