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 :

rechercher des infos dans un fichier et les afficher dans une table [WD20]


Sujet :

WinDev

  1. #21
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    (je m'incruste )
    Je vais donner le conseil que je donne à chaque fois: ton programme ne fait pas ce que tu attends de lui.
    Poses donc un point d'arrêt avant la boucle, puis avance dans le code pas à pas, et regarde ce qu'il se passe, et pourquoi il en est ainsi.
    Normalement le problème devrait te sauter aux yeux.

    LE point d'arrêt et le mode pas à pas sont les premiers réflexes à avoir dans ce genre de situation.

    Tatayo.

  2. #22
    Nouveau Candidat au Club
    Homme Profil pro
    TIEMELEKRO
    Inscrit en
    Janvier 2015
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : TIEMELEKRO
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 207
    Points : 0
    Points
    0
    Par défaut
    J'ai remarqué qu'a chaque fois que j'ajoute un élève, le traitement se fait selon le nombre d'élève multiplié par ce nombre.

  3. #23
    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 396
    Points
    9 396
    Par défaut
    Oui.
    Et si tu regardes les heures/minutes/secondes/et centièmes de seconde, tu peux voir qu'il y a une certaine logique. Quand il affiche la ligne avec 0789554L, il affiche les autres lignes immédiatement après (en général environ 1 centième de seconde entre chaque ligne)... Et quand il a affiché les 6 lignes dans cette fenêtre jaune , il se passe un temps un peu plus long pour afficher à nouveau ce 0789554L (12 centièmes de seconde entre 21412043 et 21412055 ... puis environ 1 centième de ligne à chaque ligne)

    Bon, cet indice là, a piori, il est inutile. Mais quand tu as observé les résultats, j'espère que tu avais remarqué ça.

    Alors, tu demandes donc au programme de faire 6x6 (ou 7x7) fois un certain traitement. N'est ce pas ... si le programme affiche ces lignes 6x6 fois, c'est parce que tu as demandé à Windev de faire ça. Windev ne fait que ce que tu lui demandes.

    Est-ce que tu vois à quel moment tu demandes de faire ce traitement autant de fois.
    Et est-ce que tu vois ce qu'il faut changer ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #24
    Nouveau Candidat au Club
    Homme Profil pro
    TIEMELEKRO
    Inscrit en
    Janvier 2015
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : TIEMELEKRO
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 207
    Points : 0
    Points
    0
    Par défaut
    honnêtement, je ne vois pas.
    Peux tu m'expliquer pas à pas ce que j'ai demandé à mon code de faire?
    Il me semble que moi même ne comprends pas grand chose au code que j'ai écris.
    C'est pourquoi ça ne marche pas.

  5. #25
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Quelle belle patience!
    Faut pas boucler en affichage.

  6. #26
    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 396
    Points
    9 396
    Par défaut
    Dans ton 1er message, tu dis :

    J'ai utilisé ce code dans l'affichage d'une ligne de TABLE_Elève.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POUR TOUTE LIGNE DE TABLE_Elève
    A chaque fois que le programme affiche une ligne de TABLE_ELEVE , tu lui demandes de faire une boucle.
    Et comme le programme affiche 6 lignes, tu lui demandes 6 fois de faire une boucle. Et dans chaque boucle, il traite toutes les lignes, donc 6x6=36 ... les 36 lignes que tu obtiens.

    Dans le code d'affichage d'une ligne de Table_Eleve, il ne faut pas faire une boucle, il faut traiter UNIQUEMENT la ligne que tu affiches.
    C'est systématique. C'est valable pour toutes les fois où tu mets du code dans 'Affichage d'une ligne de table', il faut traiter une seule ligne. Regarde les autres fenêtres que tu as. Regarde la partie 'Affichage d'une ligne de table'.. si tu as des boucles : POUR TOUTE LIGNE DE TABLE .... ce n'est pas normal.

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Code d'affichage d'une ligne de Table_eleve 
    t est un entier
    t =table_eleve  // t est le numero de la ligne qu'on affiche, c'est cette ligne là qu'on va traiter.
    trace ( "  affichage de la ligne n°" + t)
    HLitRecherche(Inscription,Matricule,TABLE_Elève[t].COL_Matricule)
            trace (" matricule éleve de la ligne n°" + t + "  = " +  TABLE_Elève[t].COL_Matricule )
    	SI HTrouve(Inscription) ALORS
    		TABLE_Elève[t].COL_Situation_Inscription="Inscrit(e)" 
    	SINON 
    		TABLE_Elève[t].COL_Situation_Inscription="Non-Inscrit(e)" 
    	FIN 
    FIN
    J'utilise un entier t pour préciser la ligne sur laquelle je veux écrire. Ce n'est pas indispensable, mais comme tu te trompes systématiquement en utilisant la syntaxe simplifiée, je propose la syntaxe complète.
    Ca coute 10 secondes, parce que c'est plus long à taper. Mais si ça peut t'éviter de poster 50 questions sur un forum...
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #27
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    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 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Une petite remarque,
    plutôt que il est préférable de taper .
    En effet, si TABLE_Elève n'est pas réglé par défaut mais renvoie une autre valeur, PK_elève par exemple, TABLE_Elève[t] ne pointera pas sur la ligne en cours, au mieux elle ne pointera sur rien (l'erreur d'indice est levée) au pire elle pointera sur une autre ligne(pas d'erreur reconnue par WD)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  8. #28
    Nouveau Candidat au Club
    Homme Profil pro
    TIEMELEKRO
    Inscrit en
    Janvier 2015
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : TIEMELEKRO
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 207
    Points : 0
    Points
    0
    Par défaut
    C'est maintenant que je comprends. C'est à dire qu'a chaque fois qu'il affichait une ligne, il faisait le traitement au tant de fois qu'il y avait de ligne.
    Merci de m'avoir fait comprendre cela. Mais j'ai un souci, c'est que je n'ai toujours pas le résultat attendu.
    J'ai ajouté deux élèves dans ma tables élèves ce qui me donne maintenant un total de 8 élèves et sur les huit élèves, cinq sont inscrits et donc présents dans la table inscription. logiquement dans la colonne situation de la table élève, les 5 élèves devaient avoir la mention "Inscrit(e)sur leur ligne, mais je constate que seulement deux élèves ont cette mention.

  9. #29
    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 396
    Points
    9 396
    Par défaut
    On avance un tout petit peu.

    En fait, j'ai un doute depuis un certain temps sur un truc.
    Normalement, avec le code du début, à chaque affichage de ligne, il fait une certaine boucle.
    Mais quand il affiche la 1ère ligne la boucle devrait traiter une seule ligne, puis 2 la 2ème fois... On ne devrait pas avoir 6x6= 36 lignes, mais 1+2+3+4+5+6=21 lignes dans la fenetre jaune.

    J'ai raté quelque chose ? Ou alors, pour une table fichier, c'est le comportement normal ? Pas clair.

    Ici, ton programme réussit à traiter correctement 2 élèves seulement.
    Une piste : le matricule est un nombre suivi d'une lettre. C'est donc une chaine. Mais la longueur de cette chaine est parfois 7, 8 , 9 ou 10 caractères.
    Quand on a une chaine de caractère qui sert de clé, il peut y avoir des problèmes avec les espaces.
    Dans les descriptions de fichier, tu peux cocher la case 'Espace non signigicatif'.

    Là, t'expliquer comment faire pour chercher, ça va être trop compliqué. Déjà parce qu'il faut tâtonner...

    Si au moins tu as compris que tu faisais 2 boucles, c'est déjà ça. Un débutant qui suit le manuel de formation sait ça au bout de 3 ou 4 jours.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #30
    Nouveau Candidat au Club
    Homme Profil pro
    TIEMELEKRO
    Inscrit en
    Janvier 2015
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : TIEMELEKRO
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 207
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup pour le coup de main car ça marche. Merci à toi et à tous les autres pour votre aide.

  11. #31
    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 396
    Points
    9 396
    Par défaut
    Le strict minimum, pour respecter l'esprit du forum, ce serait que tu expliques ce que tu as changé pour que soudain, ça fonctionne.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  12. #32
    Nouveau Candidat au Club
    Homme Profil pro
    TIEMELEKRO
    Inscrit en
    Janvier 2015
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : TIEMELEKRO
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 207
    Points : 0
    Points
    0
    Par défaut
    Toutes mes excuses. En effet j'ai pas changé grand chose.
    voici le code que j'ai placé dans l'affichage d'une ligne de la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    t est un entier=TABLE_Elève..Occurrence
    t=TABLE_Elève
    HLitRecherche(Inscription,Matricule,TABLE_Elève[t].COL_Matricule)
    SI HTrouve(Inscription) ALORS
    	TABLE_Elève[t].COL_Situation_Inscription="Inscrit(e)"
    SINON
    	TABLE_Elève[t].COL_Situation_Inscription="Non-inscrit(e)"
    FIN

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant] Rechercher des infos dans une listeview
    Par elo66 dans le forum C#
    Réponses: 4
    Dernier message: 07/08/2019, 01h06
  2. [Débutant] Récupérer des infos dans une table et les liés a une autre table
    Par mcyann dans le forum Entity Framework
    Réponses: 2
    Dernier message: 27/07/2018, 10h35
  3. Rechercher des intervalles dans une table
    Par Allegro dans le forum Requêtes
    Réponses: 11
    Dernier message: 11/12/2012, 21h42
  4. Recherche des parrent dans une table
    Par zooffy dans le forum Développement
    Réponses: 2
    Dernier message: 21/01/2010, 15h28
  5. [MySQL] Chercher des info dans une DB, et les afficher en lien
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2005, 19h29

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