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 dimension


Sujet :

WinDev

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

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 486
    Points : 178
    Points
    178
    Par défaut Remplir puis lire un tableau à deux dimension
    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 : 84
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 : 81
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 884
    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 884
    Points : 5 457
    Points
    5 457
    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
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

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

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 486
    Points : 178
    Points
    178
    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 éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 283
    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 283
    Points : 12 979
    Points
    12 979
    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 habitué
    Homme Profil pro
    Informaticien en retraite ...
    Inscrit en
    Janvier 2008
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Sénégal

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 486
    Points : 178
    Points
    178
    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 éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 388
    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 388
    Points : 9 562
    Points
    9 562
    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 ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

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

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

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

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 486
    Points : 178
    Points
    178
    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 éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 388
    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 388
    Points : 9 562
    Points
    9 562
    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.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

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

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

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

Discussions similaires

  1. [Tableaux] Trier tableau deux dimensions
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2006, 21h02
  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, 21h29
  3. Réponses: 5
    Dernier message: 24/05/2006, 09h59
  4. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 15h27
  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, 22h38

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