OVH Cloud OVH Cloud

[WD8] Etat programmé

6 réponses
Avatar
Jean Passe
Salut,

Ca fait très long temps que je n'ai pas utilisé l'éditeur d'état de WD. J'ai
recommencé hier avec ça (il a d'ailleurs fait un progres énorme) et j'ai
créé plusieurs états dont la source de données est une vue HF. Ca marche
fort bien, effectivement.
Depuis hier-soir je bataille avec un état qui ne peut pas se baser,
apparemment, sur une vue pour obtenir ce qu'il faut.
Voilà, j'ai une vue contenant ce qu'il faut pour l'état en question. Mais il
faut une donnée complémentaire provenant d'un autre fichier.
Quand j'ajoute une rubrique dans l'état, comment remplir cette rubrique (à
chaque ligne imprimée je dois aller l'info dans le fichier concerné, en
prenant une référence se trouvant dans l'enregistrement lu dans la vue).

Ayant bataillé avec cet état, j'ai (provisoirement) abandonné ça et me suis
"amusé" à faire un état rempli par programmation.
Dans l'aide et les exemples je n'arrive pas à trouver comment faire
comprendre à l'état ce qu'il faut qu'il imprime.
Si je fais dans le traitement 'lecture des données' :

HLitPremier(mavue,marubrique1)
TantQue PAS HEndehors
RUBRIQUE2=mavue.marubrique2
HLitSuivant(mavue,marubrique1)
FIN

Il me boucle sans fin.
Si j'ajoute après le FIN

SI sansespace(mavue.marubrique2)="" alors RENVOYER Faux

Il ne trouve aucune donnée à imprimer.

Qu'est-ce que j'ai loupé ?

Merci.
A+


Jan Van Wijk

6 réponses

Avatar
JC FLAJOULOT
Bonjour,

Avec HLitRecherche(<Nom du fichier>, <Nom de la rubrique>, <Valeur
recherchée>) ça marche bien.

Sincères salutations
--
Jean-Claude FLAJOULOT

(otez _no_Spam pour me contacter en privé)
Sécurité Pointage & Biométrie
http://www.sp-et-b.com
Avatar
Jean Passe
Salut,

Avec HLitRecherche(<Nom du fichier>, <Nom de la rubrique>, <Valeur
recherchée>) ça marche bien.



Je ne peux pas faire un HLitRecherche car je ne sais pas ce que je
cherche....
Je fais un HLitPremier/HLitSuivant sur une vue qui contient tout ce qu'il
faut.

Je n'ai pas de problème pour récupérer les valeurs qu'il faut intégrer dans
l'état, mais je ne comprends pas comment faire pour que chaque
enregistrement dans la vue soit affiché sur une ligne dans l'état. Ce que
j'obtiens est soit un état vide (pas d'enreg disponibles), soit ça imprime
10 millions de fois le même enreg dans l'état (ça boucle quoi).

Merci.
A+

--
Jan Van Wijk
Avatar
mat
Jean Passe wrote:
Salut,

Ca fait très long temps que je n'ai pas utilisé l'éditeur d'état de WD. J'ai
recommencé hier avec ça (il a d'ailleurs fait un progres énorme) et j'ai
créé plusieurs états dont la source de données est une vue HF. Ca marche
fort bien, effectivement.
Depuis hier-soir je bataille avec un état qui ne peut pas se baser,
apparemment, sur une vue pour obtenir ce qu'il faut.
Voilà, j'ai une vue contenant ce qu'il faut pour l'état en question. Mais il
faut une donnée complémentaire provenant d'un autre fichier.
Quand j'ajoute une rubrique dans l'état, comment remplir cette rubrique (à
chaque ligne imprimée je dois aller l'info dans le fichier concerné, en
prenant une référence se trouvant dans l'enregistrement lu dans la vue).



Bonjour Jan,

Très simple. Dans le code "Avant Impression" du bloc concerné, tu mets
une lecture sur le fichier en question
SI HLitRecherche... alors monChamp = monFichier.maRubrique



Ayant bataillé avec cet état, j'ai (provisoirement) abandonné ça et me suis
"amusé" à faire un état rempli par programmation.
Dans l'aide et les exemples je n'arrive pas à trouver comment faire
comprendre à l'état ce qu'il faut qu'il imprime.
Si je fais dans le traitement 'lecture des données' :

HLitPremier(mavue,marubrique1)
TantQue PAS HEndehors
RUBRIQUE2=mavue.marubrique2
HLitSuivant(mavue,marubrique1)
FIN

Il me boucle sans fin.
Si j'ajoute après le FIN

SI sansespace(mavue.marubrique2)="" alors RENVOYER Faux

Il ne trouve aucune donnée à imprimer.

Qu'est-ce que j'ai loupé ?



Je crée la source de données dans l'ouverture de l'état.
C'est là où je lis le premier enregistrement. Il ne faut surtout pas de
boucle dans "Lecture de données", mais comme le filtre un vrai ou faux
afin de traiter ou pas la ligne de données.

1) Dans l'ouverture de l'état:
IF NOT HReadFirst(SQL_WeightList) THEN iEndReport()


2) Code de "Lecture de données", exemple d'une liste de poids avec deux
"colonnes" de données ce que l'éditeur de Windev ne permet pas.
J'assigne directement les champs de l'état.

Bale1 = SQL_WeightList.BaleNum ; vBales ++
Gross1 = SQL_WeightList.Gross ; vGross += Gross1
Tare1 = SQL_WeightList.Tare
Nett1 = Gross1 - Tare1 ; vNett += Nett1
Items1 = SQL_WeightList.NumPieces
IF HReadNext(SQL_WeightList) THEN
Bale2 = SQL_WeightList.BaleNum ; vBales ++
Gross2 = SQL_WeightList.Gross ; vGross += Gross2
Tare2 = SQL_WeightList.Tare
Nett2 = Gross2 - Tare2 ; vNett += Nett2
Items2 = SQL_WeightList.NumPieces
ELSE
Bale2 = ""
Gross2 = ""
Tare2 = ""
Nett2 = ""
Items2 = ""
END
RESULT True


3) Dans "Après Impression" du corps,j'ai
IF NOT HReadNext(SQL_WeightList) THEN iEndReport()


Salutations
Mat
Avatar
mat
Jean Passe wrote:
Salut,


Avec HLitRecherche(<Nom du fichier>, <Nom de la rubrique>, <Valeur
recherchée>) ça marche bien.




Je ne peux pas faire un HLitRecherche car je ne sais pas ce que je
cherche....
Je fais un HLitPremier/HLitSuivant sur une vue qui contient tout ce qu'il
faut.

Je n'ai pas de problème pour récupérer les valeurs qu'il faut intégrer dans
l'état, mais je ne comprends pas comment faire pour que chaque
enregistrement dans la vue soit affiché sur une ligne dans l'état. Ce que
j'obtiens est soit un état vide (pas d'enreg disponibles), soit ça imprime
10 millions de fois le même enreg dans l'état (ça boucle quoi).





Alors là, tu te contre-dits.

""
Mais il faut une donnée complémentaire provenant d'un autre fichier.
Quand j'ajoute une rubrique dans l'état, comment remplir cette rubrique (à
chaque ligne imprimée je dois aller l'info dans le fichier concerné, en
prenant une référence se trouvant dans l'enregistrement lu dans la vue).
""
Avatar
Jean Passe
Salut,



Très simple. Dans le code "Avant Impression" du bloc concerné, tu mets
une lecture sur le fichier en question
SI HLitRecherche... alors monChamp = monFichier.maRubrique



Exact, j'ai trouvé ça cet après-midi.
C'est en effet très simple, encore faut-il le savoir.

Je crée la source de données dans l'ouverture de l'état.
C'est là où je lis le premier enregistrement. Il ne faut surtout pas de
boucle dans "Lecture de données", mais comme le filtre un vrai ou faux
afin de traiter ou pas la ligne de données.



Ok, je vais étudier ça.

Merci beaucoup.
A+

Jan Van Wijk
Avatar
mat
Jean Passe wrote:
Je crée la source de données dans l'ouverture de l'état. C'est là
où je lis le premier enregistrement. Il ne faut surtout pas de
boucle dans "Lecture de données", mais comme le filtre un vrai ou
faux afin de traiter ou pas la ligne de données.




Ok, je vais étudier ça.



Ce n'est qu'une solution entre plusieures. Normalement j'évite les états
programmés mais de temps en temps c'est inévitable. Une page très utile
à ce sujet dans l'aide se trouve sous "Enchaînement des traitements
associés aux états".