PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HLitRecherchePremier considère une rubrique comme une valeur d'énumération
HLitRecherchePremier considère une rubrique comme une valeur d'énumération
Débuté par Julien V, 12 juil. 2018 11:21 - 5 réponses
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 12 juillet 2018 - 11:21
Bonjour,

J'ai créé une énumération dans la déclaration d'une collection de procédures (COL_GED) :
// Définition des index spécifiques au logiciel de Prestation
index est une Enumération
IDDossier = "N° dossier (interne)"
// Autres valeurs
FIN // index est une énumération

Cette énumération qui comporte énormément de valeurs me permet d'utiliser l’auto-complétion dans le code de mon projet
Ex.
Document.index[ COL_GED.index.IDDossier..Nom ] = 12345

ou encore
i = ZoneRépétéeAjouteLigne( ZR_index, i )
ZR_index[ i ].ATT_index = COL_GED.index.IDDossier..Nom
ZR_index[ i ].ATT_libelle = COL_GED.index.IDDossier..Valeur
ZR_index[ i ].BTN_Plus..Visible = Faux

J'ai également un fichier dossier ayant une rubrique IDDossier.
Lorsque je fais un HLitRecherche ou HLitRecherchePremier de la manière suivante :
IDDossier est un entier sur 8 octets
IDDossier = 12345
HLitRecherchePremier( dossier, IDDossier, IDDossier )
// Etc.

à partir d'une fenêtre ça fonctionne nickel.
Le même appel à partir d'une procédure globale me renvoie l'erreur suivante :





Une solution serait de faire un HlitRecherche avec la rubrique entre guillemets
HLitRecherchePremier( dossier, "IDDossier", IDDossier )

mais je perds l'avantage de la synchronisation du code en cas de changement sur le fichier dans l'analyse.

Y aurait-il une option qui me permette de forcer l'utilisation de la valeur IDDossier de l'énumération en COL_GED.index.IDDossier ou index.IDDossier pour éviter ce genre de conflit ?
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 12 juillet 2018 - 11:31
Bonjour

Tout d'abord, utiliser les normes de préfixage permet d'éviter ce genre de problème.
Prefixer la variable par son type, ex :
sMaChaine est une chaîne
nEntier est un entier
moMontant est un monétaire


Ensuite, concernant votre bout de code :


IDDossier est un entier sur 8 octets
IDDossier = 12345
HLitRecherchePremier( dossier, IDDossier, IDDossier )


Pourrait devenir


nIDDossier est un entier sur 8 octets
nIDDossier = 12345
HLitRecherchePremier( dossier, dossier.IDDossier, nIDDossier )


Et la, plus de problèmes.

Petit début d'infos sur les charte de programmations sous windev :
https://blog.developpez.com/dsr57/p12149/windev/windev-normes-de-programmation-pour-les-types-simples
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 12 juillet 2018 - 11:37
HLitRecherchePremier( dossier, dossier.IDDossier, nIDDossier )

génie !

Merci pour l'astuce.
Posté le 12 juillet 2018 - 11:37
C'est un vieux bug ca… mais qui a été corrigé

tu es en quelle version ??


Bon Dev
Marc Fastré
www.marc-fastre.be
Membre enregistré
129 messages
Popularité : +20 (20 votes)
Posté le 12 juillet 2018 - 12:20
En 22, la 01F2200773h.
Vais bientôt migrer en 23.
Posté le 12 juillet 2018 - 12:34
bizarre je viens d'essayer en 21 vite fait et pas de soucis , me semble qu'en 22 non plus..

Marc Fastre
www.marc-fastre.be