PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → databinding recherche d'une idée
databinding recherche d'une idée
Iniciado por roumegou, 23,nov. 2018 10:29 - 14 respuestas
Publicado el 23,noviembre 2018 - 10:29
bonjour,

je n'utilise pas HF, je n'utilise pas l'analyse et je ne travaille
qu'en requête SQL.
Pas la peine d'épiloguer là dessus, je ne reviendrai pas sur ce parti
pris.

Par contre j'avoue que c'est un peu pénible quand il faut décrire des
champs formulaires, des tables, des zr zones par zones

Avec quoi pourrais-je faire du databinding sur des structures définies
correspondant à mes tables, ou en analysant mes requêtes ?

j'ai déjà développé des progs qui analysent mes tables mysql et me
génèrent mes codes.

Donc l'idée serait d'avoir une bibliothèque où seraient déclarées
toutes mes tables et que je pourrais appeler.
idéalement en externe pour que cela soit valable sur tous mes projets.


peut être des classes partagées par le GDS ? des structures déclarées
dans des collections de procédures partagées ?

Toutes vos suggestions sont les bienvenues

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
2.682 mensajes
Publicado el 23,noviembre 2018 - 11:16
Bonjour,

Perso je dirai des classes pour avoir le code métier avec par exemple.

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
1.640 mensajes
Publicado el 23,noviembre 2018 - 11:24
Bon au final ça revient a se cogner l'analyse en manuel...Mais pourquoi pas !
Publicado el 23,noviembre 2018 - 11:45
Philippe SB a écrit :
Bonjour,

Perso je dirai des classes pour avoir le code métier avec par exemple.


Merci de ta réponse Pjhilippe

Oui c'est là dessus que je suis en train de partir

et effectivement en déclarant mon objet en init de ma page ou ecran, je
dispose bien de l'objet pour en faire des liaisons automatiques

donc prenons un exemple concret
cette requete
select codeindex,libindex,
sum(case typedocvente when 'Commande à Date' then fic_montant else 0
end) AS cdeadate,
sum(case typedocvente when 'Commande de Stock.' then fic_montant else 0
end) AS cdestock,
sum(case typedocvente when 'Commande Urgente' then fic_montant else 0
end) AS cdeurgente
from commandesquotidiennes
group by codeindex order by codeindex


du coup pour l'instant j'ai défini en déclaration de la classe

c_rq_commandesquotidiennes est une Classe
codeindex est une chaîne
libindex est une chaîne
cdeadate est un réel
cdestock est un réel
cdeurgente est un réel
FIN

Admettons que je veuille remplir une tablemémoire avec le produit de
cette requete
il faut que je déclare un tableau de c_rq_commandesquotidiennes dans ma
page ou fenêtre ?
il faut que ce tableau soit dans la classe ?
Le chargement de la requete vers le tbaleua ou la classe, il faut le
faire dans la classe ?

je cherche ...
et pour des indications sur la bonne direction à prendre, je suis
preneur.

Merci de vos réponses

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
2.682 mensajes
Publicado el 23,noviembre 2018 - 14:53
tu peux tout à fait déclarer un tableau de c_rq_commandesquotidiennes dans ta fenêtre en global et l'utiliser comme source de données d'une table ou d'une zone répétée sans aucun problème.

Tu peux aussi avoir une classe qui aura comme membre un tableau de c_rq_commandesquotidiennes, instancier cette nouvelle classe et utiliser ce tableau comme source de donnée.

Par contre une petite remarque, évite les réels. Trop de problèmes d'arrondis, avec ce type, tu peux avoir... :D

--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
2.682 mensajes
Publicado el 23,noviembre 2018 - 14:55
@François C. : C'est vrai, mais tu t'affranchis aussi du problème de l'analyse et de la description des fichiers de l'analyse qui ne correspond pas à la description des fichiers réels dans ta base.

Les 2 approches se valent.

--
Cordialement,

Philippe SAINT-BERTIN
Publicado el 23,noviembre 2018 - 16:01
Philippe SB a écrit :
@François C. : C'est vrai, mais tu t'affranchis aussi du problème de
l'analyse et de la description des fichiers de l'analyse qui ne correspond
pas à la description des fichiers réels dans ta base.

Les 2 approches se valent.


oui mon modèle est basé sur une plateforme utilisant une base mysql
contenant plus de 200 tables.
Elle est installée sur une 10zaines de serveurs différents pour je ne
sais pas combien de bases différentes.
Et je suis sans arrêt en train de faire évoluer ce modèle. J'ai juste à
utiliser un outil que j'ai développé et qui me propage mes scripts
partout en qq minutes.

Et je n'ai jamais de problèmes de synchro des analyses avec tous mes
projets; sans compter les pb de maitres en GDS dès que l'on veux
toucher ce genre de choses.
Donc non l'analyse ce n'est pas pour moi

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
1.640 mensajes
Publicado el 23,noviembre 2018 - 16:08
Il ne faudra du coup pas oublier de répercuter les modifications de bases sur les objets liés.

Pour le probleme d'analyse ne correspondant pas aux fichiers, il me semble que :
http://doc.windev.com/fr-FR/…
Permet d'eviter ca.
Mensaje modificado, 23,noviembre 2018 - 16:11
Publicado el 23,noviembre 2018 - 16:11
Après mûre réflexion, Philippe SB a écrit :
tu peux tout à fait déclarer un tableau de c_rq_commandesquotidiennes dans ta
fenêtre en global et l'utiliser comme source de données d'une table ou d'une
zone répétée sans aucun problème.

Tu peux aussi avoir une classe qui aura comme membre un tableau de
c_rq_commandesquotidiennes, instancier cette nouvelle classe et utiliser ce
tableau comme source de donnée.


c'est ce que j'ai fait et oui cela marche bien


Par contre une petite remarque, évite les réels. Trop de problèmes
d'arrondis, avec ce type, tu peux avoir... :D


ok donc pour des chiffres avec deux décimales, tu préconises quoi ?

Sinon ma classe telle que je l'ai faite, ce n'est rien que du pissage
de lignes. Autrement dit, juste avec ma requete formatée, voire la
description de ma table mysql, c'est le code que je peux générer par
programmation.

Il n'existe toujours pas de techniques pour intégrer du code déjà fait
?

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Publicado el 23,noviembre 2018 - 17:01
Dans son message précédent, Roumegou Eric a écrit :
Après mûre réflexion, Philippe SB a écrit :
tu peux tout à fait déclarer un tableau de c_rq_commandesquotidiennes dans
ta fenêtre en global et l'utiliser comme source de données d'une table ou
d'une zone répétée sans aucun problème.

Tu peux aussi avoir une classe qui aura comme membre un tableau de
c_rq_commandesquotidiennes, instancier cette nouvelle classe et utiliser
ce tableau comme source de donnée.

c'est ce que j'ai fait et oui cela marche bien


Par contre une petite remarque, évite les réels. Trop de problèmes
d'arrondis, avec ce type, tu peux avoir... :D

ok donc pour des chiffres avec deux décimales, tu préconises quoi ?

Sinon ma classe telle que je l'ai faite, ce n'est rien que du pissage de
lignes. Autrement dit, juste avec ma requete formatée, voire la description
de ma table mysql, c'est le code que je peux générer par programmation.

Il n'existe toujours pas de techniques pour intégrer du code déjà fait ?


bon la piste des classes, cela marche bien mais il faut être en maitre
pour créer de nouvelles classes

beaucoup trop contraignant

donc à priori je copierai cela en déclaration globale voire en
procédure locale

en fait je cherche ce que l'on avait dans une autre vie le /COPY ou le
/INCLUDE du RPG GAP2 (sur les ibm36, 38, as400)

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Miembro registrado
2.682 mensajes
Publicado el 23,noviembre 2018 - 17:16
ok donc pour des chiffres avec deux décimales, tu préconises quoi ?

Utilise des numériques ou des monétaires


Sinon ma classe telle que je l'ai faite, ce n'est rien que du pissage
de lignes. Autrement dit, juste avec ma requete formatée, voire la
description de ma table mysql, c'est le code que je peux générer par
programmation.

Il n'existe toujours pas de techniques pour intégrer du code déjà fait
?

Je ne sais pas exactement ce que tu souhaites faire...


@François C. : HVerifieStructure n'est valable que pour du HFSQL, et ici ce n'est pas le cas... :p

--
Cordialement,

Philippe SAINT-BERTIN
Publicado el 24,noviembre 2018 - 18:19
Bonjour

Les problèmes de structures divergentes entre l'analyse et le fichier en base tierce c'est de la pure foutaise il est possible passer outre en 3 lignes de code qui auront le même fonctionnement que HVérifieStructure(<Fichier> ,hSansContrôle) sur hfsql…. et ca fonctionne depuis la version 7.5 !!!

Cherche hdeclareexterne et, hchangenom, pour le reste à toi de trouver parfois c'est bien de chercher ca évite de tirer des conclusions aussi hypothétiques que les solutions qui en découlent

Pour le reste tu ne veux pas d'analyse, ni de classe, pas toucher au GDS... pourquoi tu recode pas en RPG ou en COBOL ?, les seules alternatives qui te reste se sont les tableaux et la fonction FichierVersTableau, déclarer des structures, des tableaux de structures…. bref usine à gaz inutile


Bon Dev
Marc Fastré
www.marc-fastre.be
Publicado el 26,noviembre 2018 - 12:14
Philippe SB a exposé le 23/11/2018 :
ok donc pour des chiffres avec deux décimales, tu préconises quoi
?

Utilise des numériques ou des monétaires


Sinon ma classe telle que je l'ai faite, ce n'est rien que du pissage
de lignes. Autrement dit, juste avec ma requete formatée, voire la
description de ma table mysql, c'est le code que je peux générer par
programmation.

Il n'existe toujours pas de techniques pour intégrer du code déjà fait
?

Je ne sais pas exactement ce que tu souhaites faire...



Merci Philippe de ta réponse
En Fait c'est le EXTERNE que je viens de découvrir (tardivement)
même si je soupçonne que si c'est déclaré ainsi, on n'en aura pas la
disponiblité sous l'éditeur



@François C. : HVerifieStructure n'est valable que pour du HFSQL, et ici ce
n'est pas le cas... :p


--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Publicado el 26,noviembre 2018 - 12:19
"Marc Fastré" a pensé très fort :
Cherche hdeclareexterne et, hchangenom, pour le reste à toi de trouver
parfois c'est bien de chercher ca évite de tirer des conclusions aussi
hypothétiques que les solutions qui en découlent

Pour le reste tu ne veux pas d'analyse, ni de classe, pas toucher au GDS...
pourquoi tu recode pas en RPG ou en COBOL ?, les seules alternatives qui te
reste se sont les tableaux et la fonction FichierVersTableau, déclarer des
structures, des tableaux de structures…. bref usine à gaz inutile


je te laisse à tes commentaires un peu désagréables ...
mais cela fait 20 ans que je pratique ces produits; je pense en avoir
une vision assez précise.
Ne t'inquiêtes pas je cherche toujours !!! et même je partage assez
volontiers (surtout sur le forum WebDev)

--
Roumegou Eric

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Publicado el 26,noviembre 2018 - 13:14
Cela a beau faire 22 ans que je bosse en WinDev je n'en ai pas pour autant des idées arrêtées pour tenir de tels propos aussi limitatifs, j'utilise les analyses, les classes et même le GDS dans un contexte d'une dizaine de développeurs.. ca n'a jamais posé de problème

Moi ce qui me dérange c'est qu'après de genre de développement il y a des retours client qui disent que WinDev ca ne fonctionne pas, que c'est limité ou que les temps de développement sont élevés évidement quand tu ne l'utilises pas là ou il est performant…

Voilà pour ceux qui prétendent que l'analyse ne fonctionne pas bien avec les bases tierces, 3 lignes de code trouvée en un peu plus d'une heure...

Prodecure IgnoreStructureSQL(_sFile)

// pour ignorer les différences de structure en SQL on déclare un fichier externe
SI HDéclareExterne(_sFile,_sFile+"_SQL",MaConnexionSQL) = Vrai ALORS
// et ensuite on le réattribule au fichier initial, ca marche magique
HChangeNom(_sFile+"_SQL",_sFile)
FIN


Bon Dev
Marc Fastré
www.marc-fastre.be