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 :

Remplir puis lire un tableau à deux dimensions


Sujet :

WinDev

  1. #1
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut Remplir puis lire un tableau à deux dimensions
    Bonjour,
    Je dois faire une erreur énorme, mais je n'arrive pas à la trouver
    Je cherche le nombre de livre en prêt par genre
    Pour cela je remplit un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtabTableauGenre	est un tableau	<agrandissement=N> de 2 par 2 chaîne
    gnIndice			est un entier	= 0
    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
    HLitPremier(BIB_Genre, BIB_Genre)
    TANTQUE HEnDehors(BIB_Genre) = Faux
     
    	// Traitement de l'enregistrement
    	gbOK = HExécuteRequête(REQ_Pret_Par_Genre,hRequêteDéfaut,BIB_Genre.BIB_Genre,SAI_Date_Debut,SAI_Date_Fin)
    	SI gbOK = Faux ALORS
    		Beep()
    		Sablier(Faux)
    		Erreur("La requête ""REQ_Pret_Par_Genre"" n'a pu s'exécuter",ErreurInfo(errComplet))
    		RETOUR
    	FIN
     	gnIndice++
    	gtabTableauGenre[gnIndice,1]	= BIB_Genre.BIB_Genre
    	SI HNbEnr(REQ_Pret_Par_Genre) > 0 ALORS 
    		gtabTableauGenre[gnIndice,2]	= NumériqueVersChaîne((HNbEnr(REQ_Pret_Par_Genre) * 20))
    	SINON
    		gtabTableauGenre[gnIndice,2]	= NumériqueVersChaîne(10)
    	FIN
    //info("Création tableau",gtabTableauGenre[gnIndice][1],gtabTableauGenre[gnIndice][2])
    Trace("Création tableau",gtabTableauGenre[gnIndice][1],gtabTableauGenre[gnIndice][2])
     
    	HLitSuivant(BIB_Genre, BIB_Genre)
    FIN
    Trace me donne un résultat correct pour la création du tableau
    Nom : TableauCreation.jpg
Affichages : 218
Taille : 11,4 Ko

    Ensuite je parcourt le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    POUR wI = 1 À TableauInfo(gtabTableauGenre, tiDimension)
    //	Info("Vérification tableau ",gtabTableauGenre[wI][1],gtabTableauGenre[wI][2])
    Trace("Vérification tableau "+gtabTableauGenre[wI,1]+"  "+gtabTableauGenre[wI,2]+"  "+wI)
    FIN
    Et là, je retrouve bien les genres et l'indice, mais pas le nombre !!!!!!!!!
    Nom : TableauVerification.jpg
Affichages : 220
Taille : 14,4 Ko
    Sauf pour le denier genre trouvé, Western !!!!

    Quelle erreur ais-je faite ????????????

    Cordialement
    SC

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

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 985
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    A vue de nez, j'utiliserais tiNombreLignes plutôt que tiDimension. Qui plus est, tiDimension doit être suivi d'un paramètre indiquant la dimension qu'il faut utiliser.
    D'autre part, je ne vois pas pourquoi un tableau 2 sur 2. Un tableau 1 sur 2 fait largement l'affaire (2 chaines par lignes le genre et un nombre)

    Par ailleurs, ton tableau est un cas typique de tableau associatif d'entier avec pour clé le genre.
    Une autre solution serait de passer par un tableau de structure (m_sGenre,m_nNombre) qui pourrait être facilement rempli via ta requête (légèrement modifiée en enlevant la condition WHERE Genre={pGenre}) et un FichierVersTableau sur cette requête. Cela éviterait les 2 boucles

  3. #3
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Bonjour
    Effectivement, je pourrai optimiser le code ...
    Mais j'aimerais surtout savoir pourquoi je n'arrive pas à visualiser la deuxième position de mon tableau !!!!
    L'indice parcourt est correcte
    Cordialement
    SC

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 469
    Par défaut
    Bonjour,
    Je vois une différence entre les deux code.
    Dans le premier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gtabTableauGenre[gnIndice][1],gtabTableauGenre[gnIndice][2]
    Dans le second:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gtabTableauGenre[wI,1]
    Il faut peut-être utiliser gtabTableauGenre[wI][1] pour avoir les bonnes infos.

    Tatayo.

  5. #5
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Bonjour,
    Même en adaptant le code à votre remarque, j'ai toujours le même problème ...
    Cordialement
    SC

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 592
    Par défaut
    Bonjour,

    Question tout bête : pourquoi ne passes tu pas par un tableau associatif (avec pour clé, le genre) ?

    De même, tu parcoures tes genres et pour chacun d'entre eux, tu fais une requête. Pourquoi ne pas faire une requête globale, groupée par genre ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Bonjour,
    Oui, il y a plusieurs solutions de contournement
    Mais je voudrais comprendre ..............
    Cordialement
    SC

  8. #8
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    J'ai finit par trouver une méthode ...
    Il ne faut pas faire cette affectation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tabGtabTableauGenre[wI,1] = "Info 1"
    tabGtabTableauGenre[wI,2] = "Info 2"
    Mais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableauAjouteLigne(tabGtabTableauGenre,"Info 1","Info 2")
    Là je retrouve mes valeurs lors de la boucle de vérification
    Mais est-ce un bug de la version 26 ???
    Bizarre ...
    Cordialement
    SC

  9. #9
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 592
    Par défaut
    Je ne pense pas que ce soit un bug. Tu as un tableau dynamique. Tu dois faire des allocations avant de mettre des infos dedans. ce que fait le tableauajouteligne(). Il fait l'allocation mémoire et insère l'(es) élément(s).

    Si tu as un tableau fixe, tu peux faire une affectation directe.

  10. #10
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Effectivement, c'est bien le cas
    Mais la documentation devrait mieux expliquer ces cas

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 68
    Par défaut
    Bonjour,

    Pour moi, il vous faut un tableau de structure (d'une seule dimension), et non un tableau à 2 dimensions.

    Vous y verriez beaucoup plus clair et vous pourrez typer vos données

  12. #12
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Bonjour,
    J'ai étudié de ma manière plus approfondie les variables tableau
    Il faut utiliser les fonctions qui correspondent au type de tableau, c'est là la clef du problème
    Cordialement
    SC

  13. #13
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Bonjour
    Pour éventuellement aider ceux qui ont eu à se débattre avec ce problème, voici le code illustrant l'utilisation des trois sortes de tableau
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    gtabTableauGenreFixe			est un tableau fixe de 500 par 2 chaînes
    gtabTableauGenreDynamique		est un tableau	<agrandissement=N> de 1 par 2 chaîne 
    gTabTableauGenreAssociatif		est un tableau associatif (*, *, *, 100) d'entiers
    gnIndice						est un entier	= 0
    btabGenre						est un tableau de chaînes = ["Western", "Roman", "Horreur"]
     
     
    //		FIXE ****************************
    gnIndice	 = 0
    //////SupprimeTout(gtabTableauGenreFixe)			//		On ne peut faire cela pour un tableau fixe
     
    POUR gnIndice = 1 À 2
    	gtabTableauGenreFixe[gnIndice][1]	= "toto "+gnIndice
    	gtabTableauGenreFixe[gnIndice][2]	= gnIndice
    Trace("Création tableau Fixe "+"  "+gtabTableauGenreFixe[gnIndice][1]+"  "+gtabTableauGenreFixe[gnIndice][2]+"  "+gnIndice)
    FIN
    Trace(" ")
     
    POUR wI = 1 À (gnIndice - 1)
    Trace("Vérification tableau Fixe "+gtabTableauGenreFixe[wI][1]+"  "+gtabTableauGenreFixe[wI][2]+"  "+wI)
    FIN
    Trace(" ")
     
    //		Dynamique		***********************************
    gnIndice	 = 0
    SupprimeTout(gtabTableauGenreDynamique)
    POUR gnIndice = 1 À 4
    	TableauAjouteLigne(gtabTableauGenreDynamique,"PIPI "+gnIndice,gnIndice*2)
    Trace("Création tableau Dynamique "+"  "+gtabTableauGenreDynamique[gnIndice][1]+"  "+gtabTableauGenreDynamique[gnIndice][2]+"  "+gnIndice)
    FIN
    Trace(" ")
     
    POUR wI = 1 À TableauInfo(gtabTableauGenreDynamique,tiDimension)
    	Trace("Vérification tableau Dynamique "+gtabTableauGenreDynamique[wI][1]+"  "+gtabTableauGenreDynamique[wI][2]+"  "+wI)
    FIN
    Trace(" ")
     
     
    //		Associatif		***********************************
    gnIndice	 = 0
    SupprimeTout(gTabTableauGenreAssociatif)
    gTabTableauGenreAssociatif[btabGenre[1]] = 1
    gTabTableauGenreAssociatif[btabGenre[2]] = 2
    gTabTableauGenreAssociatif[btabGenre[3]] = 3
    POUR TOUT nIdentifiant DE gTabTableauGenreAssociatif
    	gnIndice++
    	Trace("Associatif  "+btabGenre[gnIndice] + "  "+nIdentifiant)
    FIN
    Trace(" ")
    // Parcourt les tailles des fichiers
    sClef		est une chaîne
    nTaille		est un entier
    // sClef permet de récupérer la clé de parcours du tableau associatif
    POUR TOUT ELÉMENT nTaille,sClef DE gTabTableauGenreAssociatif
    	Trace("Associatif récupération clef "+sClef+" taille "+nTaille)
    FIN
    Cordialement
    SC

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

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 985
    Billets dans le blog
    1
    Par défaut
    Bon résumé, mais as simplement oublié le type le plus couramment utilisé a savoir le type tableau

  15. #15
    Membre éclairé
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Informaticien en retraite ...
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2008
    Messages : 496
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bon résumé, mais as simplement oublié le type le plus couramment utilisé a savoir le type tableau
    Désolé, j'ai fait de mon mieux .............. C'est vrais que je me suis attaché à ce qui m'a causé problème .............

    Cordialement
    SC

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

Discussions similaires

  1. [Tableaux] Trier tableau deux dimensions
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2006, 20h02
  2. Rechercher dans un tableau deux dimensions
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/09/2006, 20h29
  3. Réponses: 5
    Dernier message: 24/05/2006, 08h59
  4. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  5. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38

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