PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Boucle avec table si ma ligne =...
Boucle avec table si ma ligne =...
Débuté par Marc V., 25 jan. 2007 08:47 - 4 réponses
Posté le 25 janvier 2007 - 08:47
Bonjour,

Voilà après un premier post, je me permet de vous contacter pour la suite des opérations car je sais même pas si c'est possible ce que je veux faire.

Le code ci-dessous s'effectue lorsque je clique sur un bouton "ok" dans un formulaire (il modifie toutes les lignes de la table)


k est un entier
POUR k = 1 A TableOccurrence(TABLE_factures_detail)
HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[k])
SI HTrouve(T_factures_detail) ALORS

T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_desc_longue[k]

HModifie(T_factures_detail,hNumEnrEnCours)
FIN

Dans la Table dans mon formulaire, j'ai inséré une colonne qui s'appelle col_statut_ligne, elle est bien sur invisible ( masquée ) mais elle peut contenir une lettre ex, A ou M

Donc mon but serait le suivant que lorsque je clique sur ok, il fasse ceci :

Si col_statut_ligne = "A" alors

k est un entier
POUR k = 1 A TableOccurrence(TABLE_factures_detail)
HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[k])
SI HTrouve(T_factures_detail) ALORS

T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_desc_longue[k]

HModifie(T_factures_detail,hNumEnrEnCours)
FIN

Voilà ce qu'il faudrait qu'il fasse: Est ce que pour cette ligne affichée dans ce tableau la colonne col_statut_ligne est égal à M ? Si oui alors je modifie, et qu'il continue pour chaque ligne.

Ou alors dire, pour toutes les col_statut_ligne = M alors fait ceci..

Avez-vous compris ce que j'essaie de faire, et est-ce réalisable ?

merci de votre support.
Posté le 25 janvier 2007 - 10:07
salut

le mieux est :

k est un entier

k=tablecherche("col_statut_ligne","M")
tantque k<>-1
HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[k])
SI HTrouve(T_factures_detail) ALORS

T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_desc_longue[k]

HModifie(T_factures_detail,hNumEnrEnCours)

// ici soit on modifie col_statut_ligne, puisque la ligne a été enregistrée , et on fait :
col_statut_ligne[k]=""
k=tablecherche("col_statut_ligne","M")

.... OU....

// soit on ne touche pas col_statut_ligne et on fait :
k=tablecherche("col_statut_ligne","M",vrai,k+1)
FIN
Posté le 25 janvier 2007 - 10:08
Bonjour,
Je n'ai pas tout compris: est-ce que tu veux faire ton traitement uniquement pour les lignes de la table dont la colonne = 'M' ? Si c'est le cas, alors c'est tout simple:

k est un entier
POUR k = 1 A TableOccurrence(TABLE_factures_detail)
SI col_statut_ligne[k] = 'M' ALORS
HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[k])
SI HTrouve(T_factures_detail) ALORS

T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_desc_longue
[k]

HModifie(T_factures_detail,hNumEnrEnCours)
FIN
FIN

Mais je ne vois pas à quoi sert le test Si col_statut_ligne = "A" dans ton code, puisque tu ne spécifie pas de numéro de ligne, et que tu veux les lignes avec col_statut_ligne = "M"...

Frédéric.
Posté le 25 janvier 2007 - 10:09
Si j'ai bien compris votre problème, vous voulez effectuez un traitement pour chaque ligne de votre table mémoire et ce traitement dépent de col_statut_ligne

Je ferais comme cela

nLig est entier
nOcc est entier

nOcc = TableOccurrence(TABLE_factures_detail)
POUR nLig = 1 A nOcc
SELON TABLE_factures_detail.col_statut_ligne[nLig]
CAS "A"
//Traitement à faire si c'est A Ex : HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[nLig])
SI HTrouve(T_factures_detail) ALORS
T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_desc_longue[nLig]
HModifie(T_factures_detail,hNumEnrEnCours)
FIN

CAS "M"
//Traitement à faire si c'est M

AUTRES CAS
//Traitement à faire dans les autres cas
FIN
FIN
Posté le 25 janvier 2007 - 23:07
Un grand merci à vous tous pour votre support et votre disponibilité

Je me suis servis de ce code, qui a fonctionné à merveille je peux continuer mon projet.
merci encore et bonne soirée


nLig est entier
nOcc est entier

nOcc = TableOccurrence(TABLE_factures_detail)
POUR nLig = 1 A nOcc
SELON TABLE_factures_detail.col_statut_ligne[nLig]
CAS "A"
//Traitement à faire si c'est A Ex : HLitRecherchePremier(T_factures_detail,id_factures_detail,COL_detail_id_ligne[nLig])
SI HTrouve(T_factures_detail) ALORS
T_factures_detail.detail_article_desc=TABLE_factures_detail.COL_d
esc_longue[nLig]
HModifie(T_factures_detail,hNumEnrEnCours)
FIN

CAS "M"
//Traitement à faire si c'est M

AUTRES CAS
//Traitement à faire dans les autres cas
FIN
FIN