PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Remplir puis lire un tableau à deux dimension
Remplir puis lire un tableau à deux dimension
Started by Sauveur CONSALVI, Oct., 28 2024 11:14 AM - 4 replies
Registered member
395 messages
Posted on October, 28 2024 - 11:14 AM
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
gtabTableauGenre est un tableau <agrandissement=N> de 2 par 2 chaîne
gnIndice est un entier = 0

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




Ensuite je parcourt le tableau
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 !!!!!!!!!




Sauf pour le denier genre trouvé, Western !!!!

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

Cordialement
SC

--
Cordialement
SC
Registered member
179 messages
Posted on October, 28 2024 - 4:03 PM
Bonjour,

Je ne vois pas l’intérêt de déclarer un tableau de 2 par 2. Un tableau de 1 par 2 suffit largement.
Cela dit, j'aurais plutôt opté pour un tableau associatif d'entiers.

Néanmoins, dans votre cas, voici le code qui correspond :

gtabTableauGenre est un tableau de 1 par 2 chaîne
gnIndice est un entier

TableauSupprimeTout(gtabTableauGenre)
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
SI HNbEnr(REQ_Pret_Par_Genre) > 0 ALORS
gnIndice = TableauAjouteLigne(gtabTableauGenre, BIB_Genre.BIB_Genre, NumériqueVersChaîne((HNbEnr(REQ_Pret_Par_Genre) * 20)))
SINON
gnIndice = TableauAjouteLigne(gtabTableauGenre, BIB_Genre.BIB_Genre, NumériqueVersChaîne(10))
FIN
Trace("Création tableau",gtabTableauGenre[gnIndice][1],gtabTableauGenre[gnIndice][2])

HLitSuivant(BIB_Genre, BIB_Genre)
FIN

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


Cdt
Registered member
395 messages
Posted on October, 31 2024 - 9:27 AM
Bonjour,
Merci bien
En fait le problème vient que des tableaux Fixe et de tableaux Dynamique ne se remplissent pas de la même façon .....

--
Cordialement
SC
Registered member
395 messages
Posted on November, 01 2024 - 9:59 AM
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
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
Registered member
28 messages
Posted on November, 02 2024 - 8:43 AM
Bonjour

Merci pour la résolution, j'utilise souvent aussi des tableaux de classe avec beaucoup d'attribut, c'est très bien codé

Cordialement
M.RATSIMANDRESY
Niry Aina Eddy