PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → probleme de recupération d'indice de ligne dans un champs table
probleme de recupération d'indice de ligne dans un champs table
Started by jm48, Jan., 19 2021 6:19 PM - 4 replies
Registered member
3 messages
Posted on January, 19 2021 - 6:19 PM
bonjour à tous

malgré de nombreuses recherches sur le net et d'essais de plusieurs codes, je n'arrive toujours pas à afficher un total de colonne dans une rupture
je travaille sous windev 15 et ne dispose donc pas des calculs automatiques

le code ci-dessous fonctionne parfaitement si je place les champs de résultat dans la fenetre et le code dans l'évènement "à chaque changement de ligne" de la table (il s'agit d'une table fichier sur requete)

par contre des que je place les champs résultats dans la ligne rupture bas et le code dans cette meme rupture ("affichage d'une ligne de la rupture), la variable "i" est toujours à zéro et bien surs les champs à zero

CODE
i est un entier=0
nindicehaut est un entier=TableIndiceRupture(RUPT_HautRupture1)
nindicebas est un entier=TableIndiceRupture(RUPT_BasRupture1)
cumuldébits est un numérique=0
cumulcrédits est un numérique


POUR i= nindicehaut A nindicebas
cumuldébits=cumuldébits+COL_Débit[i]
cumulcrédits=cumulcrédits+COL_Crédit[i]
SAI_moisencours=DateVersMoisEnLettre(COL_Date[i])
FIN
SAI_Cumuldébits=cumuldébits
SAI_cumulcrédits=cumulcrédits

merci par avance à ceux qui auraient le temps et l'envie de se pencher sur ce problême et avoir de l'indulgence si la réponse leur parait évidente
cordialement
Registered member
3,846 messages
Popularité : +227 (347 votes)
Posted on January, 20 2021 - 8:52 PM
Bonjour,
Il faut préciser le N° de la ligne de bas de rupture :
TABLE_MaTable[nBas].SAI_.......


--
Il y a peut être plus simple, mais, ça tourne
Registered member
3 messages
Posted on January, 21 2021 - 6:41 PM
avant tout merci Voroltinquo pour ta réponse

j'ai fais les modifs et l'indice n'esttoujours pas pris en compte
j'ai essayé les 3 codes suivants:
//TABLE_REQ_CAOpérations[nindicebas].RUPT_BasRupture1.SAI_cumuldeb=cumuldébits
//TABLE_REQ_CAOpérations[nindicebas].SAI_cumuldeb=cumuldébits
//TABLE_REQ_CAOpérations[i].SAI_cumuldeb=cumuldébits

acec toujours le même message d'erreur

Erreur à la ligne 11 du traitement Affichage d'une ligne de RUPT_BasRupture1 ( TABLE_REQ_CAOpérations ).
Vous avez appelé l'opérateur [] sur le champ TABLE_REQ_CAOpérations.
L'indice spécifié [0] est invalide.
Les valeurs valides sont comprises entre 1 et 28 (inclus).

----- Informations techniques -----

Projet : trésorerie

Appel WL :
Traitement de 'Affichage d'une ligne de RUPT_BasRupture1 ( TABLE_REQ_CAOpérations )' (FEN_CAopérations.TABLE_REQ_CAOpérations.RUPT_BasRupture1), ligne 11, thread 0

Que s'est-il passé ?
Vous avez appelé l'opérateur [] sur le champ TABLE_REQ_CAOpérations.
L'indice spécifié [0] est invalide.
Les valeurs valides sont comprises entre 1 et 28 (inclus).

Code erreur : 10038
Niveau : erreur fatale (EL_FATAL)

Dump de l'erreur du module 'wd150obj.dll' (15.00Qcm).
Identifiant des informations détaillées (.err) : 10038
Informations supplémentaires :
EIT_PILEWL :
Affichage d'une ligne de RUPT_BasRupture1 ( TABLE_REQ_CAOpérations ) (FEN_CAopérations.TABLE_REQ_CAOpérations.RUPT_BasRupture1), ligne 11
EIT_DATEHEURE : 21/01/2021 18:38:17

Assistance

-Vérifiez que l'indice entre [] est correct. Si c'est la valeur d'un champ (ex : COL1[TABLE] ), vérifier la valeur de ce champ.
-Si c'est une table, une liste, ou une combo vérifiez qu'elle n'est pas vide
-Si c'est une combo en saisie, vérifiez que vous n'avez pas utilisé la syntaxe Combo[Combo] qui est réservée aux combos en affichage
-Vérifiez que vous ne demandez pas la ligne en cours alors qu'aucune n'est sélectionnée
(Rappel : ..Valeur et ListeSelect renvoient -1 dans ce cas)

si vous avez une idée

cordialement
Registered member
3,846 messages
Popularité : +227 (347 votes)
Posted on January, 21 2021 - 8:43 PM
Ton compteur est à 0, ce qui signifie qu'il est initialisé au départ par 0
Or l'initialisation se fait (indirectement) via TableIndiceRupture. Or si cette fonction renvoie 0, c'est qu'il y a une erreur. Il faudrait récupérer le Message d'erreur de TableIndiceRupture

--
Il y a peut être plus simple, mais, ça tourne
Registered member
3 messages
Posted on January, 24 2021 - 5:04 PM
bonjour voroltinquo

je ne suis pas parvenu à trouver le probléme de l'erreur sur tableindicerupture
par contre j'ai rentré un code qui fonctionne parfaitement et que j'adresse afin d'aider tout ceux qui comme moi ont galéré sur ce problême

voici ce code:

// Variables pour calculer les totaux
nindice est un entier
cumuldébits est un monétaire
moCumulcrédits est un monétaire
// Parcours toutes les lignes de la table
POUR nindice= 1 A TABLE_REQ_CAOpérations..Occurrence
// Ajoute le débit de la ligne au cumul des débits
cumuldébits = cumuldébits + TABLE_REQ_CAOpérations.COL_Débit[nindice]
moCumulcrédits=moCumulcrédits + TABLE_REQ_CAOpérations.COL_Crédit[nindice]

// Si cette ligne correspond à la dernière ligne de la rupture
SI nindice = TableIndiceRupture(RUPT_BasRupture1, nindice) ALORS
// Affecte le total au champ total
TABLE_REQ_CAOpérations[nindice].SAI_cumuldeb = cumuldébits
TABLE_REQ_CAOpérations[nindice].SAI_cumulcred=moCumulcrédits
// remettre à 0 les variables cumul car sinon les additions se poursuivent
moCumulcrédits=0
cumuldébits=0
FIN
FIN

encore merci pour m'avoir répondu