PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [Newbie] Parser une requête pour l'afficher dans des onglets dynamiques
[Newbie] Parser une requête pour l'afficher dans des onglets dynamiques
Débuté par phv67, 17 mar. 2018 08:21 - 2 réponses
Membre enregistré
4 messages
Posté le 17 mars 2018 - 08:21
Bonjour à toutes & à tous.

Je galère depuis 2 jours à essayer d'afficher des données provenant de 4 fichiers sur une même fenêtre.
J'ai mis en place une requête qui testée me renvoie bien les données attendues.
Idem quand j'évalue l'expression de la requête dans le débogueur.

Le but :
Afficher les coordonnées d'une organisation et de son contact en fonction du rôle du contact.
Chaque rôle est affecté à un onglet, un clique sur onglet affichera l'adresse du rôle du contact.

Les symptômes :
1) si les onglets sont bien créés mais leur contenu n'est pas affiché
2) les champs de l'organisation ne sont pas affichés
3) les champs de l'adresse ne sont pas affichés.

Je vous livre ici, l'analyse, la requête, et le code censé afficher tout ça.
A mon sens c'est dans le code que je merdoie, toute piste, conseil, avis me sera précieux.

Merci !
Cordialement,
Philippe





SELECT
EXPRESS_ROLES.IDEXPRESS_CONTACTS AS IDEXPRESS_CONTACTS,
EXPRESS_ROLES.IDEXPRESS_ROLES AS IDEXPRESS_ROLES,
EXPRESS_ROLES.Type AS Type,
EXPRESS_ROLES.IDEXPRESS_ORGANISATIONS AS IDEXPRESS_ORGANISATIONS_EX,
EXPRESS_ORGANISATIONS.IDEXPRESS_ORGANISATIONS AS IDEXPRESS_ORGANISATIONS,
EXPRESS_ORGANISATIONS.Libellé AS Libellé,
EXPRESS_ORGANISATIONS.Site_Internet AS Site_Internet,
EXPRESS_ORGANISATIONS.SIREN AS SIREN,
EXPRESS_ORGANISATIONS.SIRET AS SIRET,
EXPRESS_ROLES.IDEXPRESS_ADRESSE AS IDEXPRESS_ADRESSE,
EXPRESS_ADRESSES.Numero_de_voie AS Numero_de_voie,
EXPRESS_ADRESSES.Type_de_voie AS Type_de_voie,
EXPRESS_ADRESSES.Adresse1 AS Adresse1,
EXPRESS_ADRESSES.Adresse2 AS Adresse2,
EXPRESS_ADRESSES.Code_Postal AS Code_Postal,
EXPRESS_ADRESSES.Cedex AS Cedex,
EXPRESS_ADRESSES.Ville AS Ville,
EXPRESS_ADRESSES.Pays AS Pays,
EXPRESS_ADRESSES.Adresse_email AS Adresse_email,
EXPRESS_ADRESSES.Téléphone AS Téléphone
FROM
EXPRESS_ADRESSES,
EXPRESS_ROLES,
EXPRESS_ORGANISATIONS
WHERE
EXPRESS_ORGANISATIONS.IDEXPRESS_ORGANISATIONS = EXPRESS_ROLES.IDEXPRESS_ORGANISATIONS
AND EXPRESS_ADRESSES.IDEXPRESS_ADRESSE = EXPRESS_ROLES.IDEXPRESS_ADRESSE
AND
(
EXPRESS_ROLES.IDEXPRESS_CONTACTS = {ParamIDEXPRESS_CONTACTS}
)


Procedure MaFenêtre()
Alias_ONG_Roles est un Champ
tab_onglet est un tableau d'entiers
Drapo_ok est un booléen

HRecherche(EXPRESS_CONTACTS,IDEXPRESS_CONTACTS,1,hIdentique)//debug pour partir sur une bonne donnée
HLitPremier(EXPRESS_CONTACTS,IDEXPRESS_CONTACTS)

HLibèreRequête(EXPRESS_REQ_ChercheLiensRoleContact)
Drapo_ok = HExécuteRequête(EXPRESS_REQ_ChercheLiensRoleContact,hRequêteDéfaut,EXPRESS_CONTACTS.IDEXPRESS_CONTACTS)
HLitPremier(EXPRESS_REQ_ChercheLiensRoleContact)

TANTQUE PAS HEnDehors(EXPRESS_REQ_ChercheLiensRoleContact)
Alias_ONG_Roles <- OngletOuvre(ONG_Roles, EXPRESS_ROLES.Type+" "+EXPRESS_ORGANISATIONS.Libellé)
Ajoute(tab_onglet,EXPRESS_ROLES.IDEXPRESS_ROLES)// pour le refresh des onglets
HLitSuivant(EXPRESS_REQ_ChercheLiensRoleContact)
FIN

//HLitPremier(EXPRESS_REQ_ChercheLiensRoleContact)
ONG_Roles = 1

FichierVersEcran(EXPRESS_FEN_Contact,EXPRESS_ROLES)
FichierVersEcran(EXPRESS_FEN_Contact,EXPRESS_CONTACTS)
FichierVersEcran(EXPRESS_FEN_Contact,EXPRESS_ADRESSES)
FichierVersEcran(EXPRESS_FEN_Contact,EXPRESS_ORGANISATIONS)


--
Newbie sur WinDev, j'ai suivi le parcours d'auto-formation de la version Express 22.
J'ai 30 ans de développement sur 4D (pas taper) et je m'essaye à d'autre langages dont Swift et... Windev....
Votre aide est la bienvenue, merci.
Membre enregistré
1 923 messages
Popularité : +53 (65 votes)
Posté le 17 mars 2018 - 11:33
Bonjour,

Peut-être que vous en demandez un peu trop aux automatismes 8) :D
Vous devez remplir le contenu de votre onglet par programmation :
Procedure MaFenêtre()

// debug pour partir sur une bonne donnée
HLitPremier(EXPRESS_CONTACTS,IDEXPRESS_CONTACTS)

SI HExécuteRequête(EXPRESS_REQ_ChercheLiensRoleContact,hRequêteDéfaut,EXPRESS_CONTACTS.IDEXPRESS_CONTACTS) ALORS
POUR TOUT EXPRESS_REQ_ChercheLiensRoleContact
gsAlias est une chaîne = OngletOuvre(ONG_Roles, EXPRESS_ROLES.Type+" "+EXPRESS_ORGANISATIONS.Libellé)
// remplit l'onglet en affectant le contenu de la requête à chaque champ
ExécuteTraitement("ONG_Roles[" + gsAlias + "]", "MaProcedureInterne", trtProcedure)
FIN
FIN

ONG_Roles = 1


--
Bon dev,
Jean-Pierre
Membre enregistré
4 messages
Posté le 17 mars 2018 - 22:52
Merci Jean-Pierre pour cette piste.

Il va falloir que je me penche sur cette commande "exécute traitement".
Merci également pour l'élagage qui évite un peu de code inutile

Je suis parti sur une stratégie d'onglet dynamique, je me demande si on peut faire ça avec des onglets statiques ? (j'ai parcouru vite fait la doc à ce sujet sans chercher plus loin).

Ce qui me chiffonne c'est que j'y étais arrivé 'par la bande' avec des hrecherche mais je n'ai pas gardé le code car il ne répondait qu'en partie à mon besoin.

Avec mes remerciements les plus cordiaux,
Philippe

--
Newbie sur WinDev, j'ai suivi le parcours d'auto-formation de la version Express 22.
J'ai 30 ans de développement sur 4D (pas taper) et je m'essaye à d'autre langages dont Swift et... Windev....
Votre aide est la bienvenue, merci.