|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| Etat et source de données |
| Débuté par eric.jeanneau, 12 jan. 2005 12:28 - 7 réponses |
| |
| | | |
|
| |
| Posté le 12 janvier 2005 - 12:28 |
Bonjour,
Je souhaite que l'état "MonEtat" ait comme source de données le résultat de la requête "SELECT * FROM T_CDEL INNER JOIN T_CDEH ON (T_CDEL_LienCDEH = T_CDEH_Id) WHERE T_CDEH_Id = " + zID
Les 2 tables (T_CDEH et T_CDEL sont des fichiers HyperFile 7), et le critère zID est une variable.
Mes questions sont donc :
- quel type d'état choisir ? (sachant que l'option "issu d'une requête SQL" semble exiger une source ODBC, d'après mes nombreux tests)
- quel(s) objet(s) utiliser pour déclarer la requête et l'affecter à l'état ?
Tout exemple de code me sera utile. Merci par avance et bonne journée.
EJ |
| |
| |
| | | |
|
| | |
| |
| Posté le 12 janvier 2005 - 18:22 |
Eric a écrit :
Bonjour,
Je souhaite que l'état "MonEtat" ait comme source de données le résultat de la requête "SELECT * FROM T_CDEL INNER JOIN T_CDEH ON (T_CDEL_LienCDEH = T_CDEH_Id) WHERE T_CDEH_Id = " + zID
Les 2 tables (T_CDEH et T_CDEL sont des fichiers HyperFile 7), et le critère zID est une variable.
Mes questions sont donc :
- quel type d'état choisir ? (sachant que l'option "issu d'une requête SQL" semble exiger une source ODBC, d'après mes nombreux tests)
- quel(s) objet(s) utiliser pour déclarer la requête et l'affecter à l'état ?
Tout exemple de code me sera utile. Merci par avance et bonne journée.
EJ
Traité ! Etat sur une requete... définie sous l'éditeur acceptant des paramètres : http://www.wdforge.org/modules/newbb/viewtopic.php…
++ R&B |
| |
| |
| | | |
|
| | |
| |
| Posté le 12 janvier 2005 - 22:46 |
Merci de cette précision.
Elle ne me permet cependant pas de résoudre mon cas de figure.
En effet, le code SQL est généré dynamiquement par l'application. Je pensait définir l'état en choisissant "les données à imprimer viennent <de la programmation>" (dernière option de la liste sous WD8), mais je n'ai pas trouvé d'exemple de code pour relier l'état à la source de données issue de cette requête.
Je suis donc toujours intéressé par une aide.
Eric |
| |
| |
| | | |
|
| | |
| |
| Posté le 13 janvier 2005 - 12:46 |
Eric a écrit :
Merci de cette précision.
Elle ne me permet cependant pas de résoudre mon cas de figure.
En effet, le code SQL est généré dynamiquement par l'application. Je pensait définir l'état en choisissant "les données à imprimer viennent <de la programmation>" (dernière option de la liste sous WD8), mais je n'ai pas trouvé d'exemple de code pour relier l'état à la source de données issue de cette requête.
Je suis donc toujours intéressé par une aide.
Eric
Dans l'initialisation de votre état, exécuter la requete (hExecuteRequeteSQL) dans une source de donéne locale, et programmer son parcours dans la partie 'Lecture de l'enregistrement' en pensant à renvoyer Vrai pour que les lignes s'imprimer, faux sinon et annuler pour finir l'impression.
++ R&B |
| |
| |
| | | |
|
| | |
| |
| Posté le 13 janvier 2005 - 20:49 |
Bonsoir,
Grâce à vos conseils, je progresse, mais bute encore sur des principes de base :
Appel de l'état : iImprimeEtat(MonEtat)
MonEtat :
OUVERTURE : res est un booléen rstEtat est une Source de Données zID est un entier zID 10 res=HExécuteRequêteSQL(rstEtat,"SELECT * FROM T_CDEL INNER JOIN T_CDEH ON (T_CDEL_LienCDEH = T_CDEH_Id) WHERE T_CDEL_LienCDEH = " + zID + "ORDER BY T_CDEL_LienCDEH") HLitPremier(rstEtat)
LECTURE DES DONNEES : TANTQUE PAS HEnDehors(rstEtat) CLI_CdeFicheEtat.T_CDEH_Id=rstEtat.T_CDEL_LienCDEH CLI_CdeFicheEtat.T_CDEL_CDEeanProduit=rstEtat.T_CDEL_CDEeanProduit CLI_CdeFicheEtat.T_CDEL_ProduitIntitule=rstEtat.T_CDEL_ProduitIntitule RENVOYER Vrai HLitSuivant(rstEtat) FIN
FILTRE + FERMETURE : vide
La requête retourne 3 enregistrements (testée sous WDSql), alors que l'état retourne quelques dizaines de pages, toutes es lignes étant identiques et valorisées avec le 1er enregistrement de la requête.
J'ai donc raté quelque chose, mais quoi ?
Merci encore de votre patience.
Eric |
| |
| |
| | | |
|
| | |
| |
| Posté le 17 janvier 2005 - 11:12 |
Eric a écrit :
Bonsoir,
Grâce à vos conseils, je progresse, mais bute encore sur des principes de base :
Appel de l'état : iImprimeEtat(MonEtat)
MonEtat :
OUVERTURE : res est un booléen rstEtat est une Source de Données zID est un entier zID 10 res=HExécuteRequêteSQL(rstEtat,"SELECT * FROM T_CDEL INNER JOIN T_CDEH ON (T_CDEL_LienCDEH = T_CDEH_Id) WHERE T_CDEL_LienCDEH = " + zID + "ORDER BY T_CDEL_LienCDEH") HLitPremier(rstEtat)
LECTURE DES DONNEES : TANTQUE PAS HEnDehors(rstEtat) CLI_CdeFicheEtat.T_CDEH_Id=rstEtat.T_CDEL_LienCDEH CLI_CdeFicheEtat.T_CDEL_CDEeanProduit=rstEtat.T_CDEL_CDEeanProduit CLI_CdeFicheEtat.T_CDEL_ProduitIntitule=rstEtat.T_CDEL_ProduitIntitule RENVOYER Vrai HLitSuivant(rstEtat) FIN
FILTRE + FERMETURE : vide
La requête retourne 3 enregistrements (testée sous WDSql), alors que l'état retourne quelques dizaines de pages, toutes es lignes étant identiques et valorisées avec le 1er enregistrement de la requête.
J'ai donc raté quelque chose, mais quoi ?
Merci encore de votre patience.
Eric
Bonjour, la lecture des données de l'état ne doit lire qu'une unique ligne... pour afficher le corps correspondant. Voici une petite modification à la volée donc à évaluer... ++ R&B de www.WDForge.org
//--OUVERTURE : res est un booléen rstEtat est une Source de Données zID est un entier zID 10 res=HExécuteRequêteSQL(rstEtat,"SELECT * FROM T_CDEL INNER JOIN T_CDEH ON (T_CDEL_LienCDEH = T_CDEH_Id) WHERE T_CDEL_LienCDEH = " + zID + "ORDER BY T_CDEL_LienCDEH") // on ne fait pas le hlitpremier bPremier est un booleen = vrai
//-- LECTURE DES DONNEES : SI bPremier ALORS hlitPremier(rstEtat) SINON hlitSuivant(rstEtat) FIN SI PAS HEnDehors(rstEtat) bPremier=faux CLI_CdeFicheEtat.T_CDEH_Id=rstEtat.T_CDEL_LienCDEH CLI_CdeFicheEtat.T_CDEL_CDEeanProduit=rstEtat.T_CDEL_CDEeanProduit CLI_CdeFicheEtat.T_CDEL_ProduitIntitule=rstEtat.T_CDEL_ProduitIntitule RENVOYER Vrai SINON RENVOYER Annuler FIN |
| |
| |
| | | |
|
| | |
| |
| Posté le 19 janvier 2005 - 17:29 |
Bonjour,
Effectivement, ce code est parfait.
La question du jour : comment programmer les ruptures, puisqu'il n'est pas possible à l'éditeur de proposer des champs (quel code dans quels blocs, là encore la doc ne me permet pas d'avancer).
Merci d'avance.
EricJ |
| |
| |
| | | |
|
| | |
| |
| Posté le 19 janvier 2005 - 17:37 |
Eric a écrit :
Bonjour,
Effectivement, ce code est parfait.
La question du jour : comment programmer les ruptures, puisqu'il n'est pas possible à l'éditeur de proposer des champs (quel code dans quels blocs, là encore la doc ne me permet pas d'avancer).
Merci d'avance.
EricJ
re, re, re ... 8-> Ajouter au progamme une rupture programmée qui lancera une procédure locale de l'état, laquelle devra retourner vrai pour les enregistrements et faut pour déclencher la rupture...
++ R&B de www.WDForge.org |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|