PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Comment gérer une selection dans un tableau
Comment gérer une selection dans un tableau
Débuté par Nicos77, 20 sep. 2017 16:18 - 3 réponses
Membre enregistré
63 messages
Popularité : +1 (1 vote)
Posté le 20 septembre 2017 - 16:18
Bonjour,
Je n'ai pas réussi a formuler un titre clair et précis pour ce que je souhaite.

En quelques lignes.
Dans le cadre d'un programme d'inventaire,
J'ai un bouton de recherche d'articles avec 3 possibilités. L'article n'existe pas, l'article existe et est unique, plusieurs articles correspondent au critères.
L'idée est de sélectionné le bon article et charger des champs avec les infos afin de pouvoir les modifier.

Voici mon code :
SI Taille(SAI_Recherche_Article)=7 ALORS
REQ_CHERCHE_ARTICLE.ParamNumArticle=SAI_Recherche_Article
SINON
REQ_CHERCHE_ARTICLE.ParamEAN=SAI_Recherche_Article
FIN

HExécuteRequête(REQ_CHERCHE_ARTICLE,hRequêteDéfaut)

SI HNbEnr(REQ_CHERCHE_ARTICLE)=-1 //Pas d'article
RepriseSaisie(SAI_Recherche_Article)
SINON SI HNbEnr(REQ_CHERCHE_ARTICLE)=1 //1 seul article
HLitPremier(REQ_CHERCHE_ARTICLE)
SINON
POUR TOUT REQ_CHERCHE_ARTICLE
TableAjouteLigne(TABLE_PRA,REQ_CHERCHE_ARTICLE.IDARTICLE,REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,REQ_CHERCHE_ARTICLE.QuantitéStock)
FIN
FEN_Index..Plan=3
RepriseSaisie(TABLE_PRA)
FIN



REQ_DEJA_POINTE.ParamNumArticle=REQ_CHERCHE_ARTICLE.NumArticle
REQ_DEJA_POINTE.ParamDateModif=DateDuJour()

// On vérifie sir l'article à déjà été pointé
HExécuteRequête(REQ_DEJA_POINTE)
SI HNbEnr(REQ_DEJA_POINTE)<>-1 ALORS
HLitDernier(REQ_DEJA_POINTE,REQ_DEJA_POINTE.HeureModif)
Info("Article "+REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,"déjà pointé à "+HeureVersChaîne(REQ_DEJA_POINTE.HeureModif),"par "+REQ_DEJA_POINTE.Opérateur)
FIN

//Puis on continue notre traitement
HLitRecherchePremier(ARTICLE,IDARTICLE,REQ_CHERCHE_ARTICLE.IDARTICLE)
HBloqueNumEnr(ARTICLE,hNumEnrEnCours,hBlocageLectureEcriture)


FichierVersEcran()
RepriseSaisie(FEN_Index.SAI_QuantitéStock)


Le problème que j'ai se trouve vers mon TableAjouteLigne
POUR TOUT REQ_CHERCHE_ARTICLE
TableAjouteLigne(TABLE_PRA,REQ_CHERCHE_ARTICLE.IDARTICLE,REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,REQ_CHERCHE_ARTICLE.QuantitéStock)
FIN
FEN_Index..Plan=3
RepriseSaisie(TABLE_PRA)


Il faudrai que dans le code de ma TABLE_PRA je suisse me positionner sur le bon article et continuer mon traitement. Et....Je ne vois pas trop comment du coup.
J'ai pensé à mettre ma 2ème partie de code dans une procédure et l'appeler ici comme actuellement, et dans le code de ma TABLE_PRA dans le cas du multi article.

Merci par avance.
Membre enregistré
36 messages
Popularité : +4 (4 votes)
Posté le 20 septembre 2017 - 18:36
Bonjour,

Comment cela vous positionner sur le bon article et continuer votre traitement?

Si vous le souhaitez, vous pouvez m'appeler au 06.37.97.75.34 et nous pourrions trouver plus simplement la solution et la diffuser ensuite sur le forum.
Membre enregistré
63 messages
Popularité : +1 (1 vote)
Posté le 20 septembre 2017 - 20:37
Admettons que j'ai 3 articles avec la même clé de recherche.
Partons dans l'idée que je gère des boissons.
En cherchant "Eau", je me retrouve avec 3 choix différents. Je voudrais choisir la bonne "eau" dans ma TABLE_PRA
puis continuer ce traitement (Avec 2-3 modifs sur les REQ_CHERCHE_ARTICLE
REQ_DEJA_POINTE.ParamNumArticle=REQ_CHERCHE_ARTICLE.NumArticle
REQ_DEJA_POINTE.ParamDateModif=DateDuJour()

// On vérifie sir l'article à déjà été pointé
HExécuteRequête(REQ_DEJA_POINTE)
SI HNbEnr(REQ_DEJA_POINTE)<>-1 ALORS
HLitDernier(REQ_DEJA_POINTE,REQ_DEJA_POINTE.HeureModif)
Info("Article "+REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,"déjà pointé à "+HeureVersChaîne(REQ_DEJA_POINTE.HeureModif),"par "+REQ_DEJA_POINTE.Opérateur)
FIN

//Puis on continue notre traitement
HLitRecherchePremier(ARTICLE,IDARTICLE,REQ_CHERCHE_ARTICLE.IDARTICLE)
HBloqueNumEnr(ARTICLE,hNumEnrEnCours,hBlocageLectureEcriture)


FichierVersEcran()
RepriseSaisie(FEN_Index.SAI_QuantitéStock)


Merci
Membre enregistré
63 messages
Popularité : +1 (1 vote)
Posté le 21 septembre 2017 - 09:26
Je m'en suis sortis autrement.
Voici mon code pour info

SI Taille(SAI_Recherche_Article)=7 ALORS
REQ_CHERCHE_ARTICLE.ParamNumArticle=SAI_Recherche_Article
SINON
REQ_CHERCHE_ARTICLE.ParamEAN=SAI_Recherche_Article
FIN

HExécuteRequête(REQ_CHERCHE_ARTICLE,hRequêteDéfaut)

SI HNbEnr(REQ_CHERCHE_ARTICLE)=-1 //Pas d'article
RepriseSaisie(SAI_Recherche_Article)
SINON SI HNbEnr(REQ_CHERCHE_ARTICLE)=1 //1 seul article
HLitPremier(REQ_CHERCHE_ARTICLE)
SINON
POUR TOUT REQ_CHERCHE_ARTICLE
TableAjouteLigne(TABLE_PRA,REQ_CHERCHE_ARTICLE.IDARTICLE,REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,REQ_CHERCHE_ARTICLE.QuantitéStock)
FIN
FEN_Index..Plan=3
RepriseSaisie(TABLE_PRA)
FIN


REQ_DEJA_POINTE.ParamNumArticle=REQ_CHERCHE_ARTICLE.NumArticle
REQ_DEJA_POINTE.ParamDateModif=DateDuJour()

// On vérifie sir l'article à déjà été pointé
HExécuteRequête(REQ_DEJA_POINTE)
SI HTrouve(REQ_DEJA_POINTE) ALORS
HLitDernier(REQ_DEJA_POINTE,REQ_DEJA_POINTE.HeureModif)
Info("Article "+REQ_CHERCHE_ARTICLE.NumArticle,REQ_CHERCHE_ARTICLE.Désignation,"déjà pointé à "+HeureVersChaîne(REQ_DEJA_POINTE.HeureModif),"par "+REQ_DEJA_POINTE.Opérateur)
FIN

//Puis on continue notre traitement
HLitRecherchePremier(ARTICLE,IDARTICLE,REQ_CHERCHE_ARTICLE.IDARTICLE)
HBloqueNumEnr(ARTICLE,hNumEnrEnCours,hBlocageLectureEcriture)


FichierVersEcran()
RepriseSaisie(FEN_Index.SAI_QuantitéStock)


Et dans mon TABLE_PRA je redetermine un SAI_Recherche_Article

SAI_Recherche_Article=TABLE_PRA.COL_Numéro
FEN_Index..Plan=2
ExécuteTraitement(BTN_OK,trtClic)


Si quelqu'un a une solution différente? Mieux? Plus performante..Je suis preneur

Merci