Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD8] : etat : imposer une écriture dans le corps après un saut de page

7 réponses
Avatar
jean-claude.dubois
meilleurs voeux à tous !

petit problème à vous soumettre.

Soit une analyse comportant les rubriques série , titre , année de
parution , auteur et éditeur.

Soit un état me permettant d'afficher les valeurs de ces rubriques,
triées par ordre alphabétique sur les séries puis sur les années, avec
une rupture lors d'un changement de valeur sur série.
J'avais jusqu'à présent interdit l'affichage de la valeur de la série si
celle-ci ne changeait pas ( même chose pour la valeur de l'éditeur ) (
case à cocher dans le détail du champ il me semble ), tout ça pour faire
plus joli.
Mais lorsque le nombre de valeurs à éditer dépasse la taille d'une page,
une nouvelle page est créée, et comme la valeur de la série n'a pas
changée, celle ci n'est pas visible! plutot génant si on ne regarde que
cette page.
J'ai bien essayé d'utiliser une variable initialisée à "" dans le code
avant impression du bas de page et utilisée dans le code avant
impression du corps, ça marche mais sur la deuxième ligne imprimée ( sur
la première, la colonne série est toujours vierge )! La réaction semble
retardée d'une boucle!

Quelqu'un aurait il une solution à me proposer pour que cet affichage
apparaisse dès la première ligne de la nouvelle page?

Merci d'avance.

7 réponses

Avatar
mat
jean-claude.dubois wrote:
Soit un état me permettant d'afficher les valeurs de ces rubriques,
triées par ordre alphabétique sur les séries puis sur les années,
avec une rupture lors d'un changement de valeur sur série. J'avais
jusqu'à présent interdit l'affichage de la valeur de la série si
celle-ci ne changeait pas ( même chose pour la valeur de l'éditeur )
( case à cocher dans le détail du champ il me semble ), tout ça pour
faire plus joli. Mais lorsque le nombre de valeurs à éditer dépasse
la taille d'une page, une nouvelle page est créée, et comme la
valeur de la série n'a pas changée, celle ci n'est pas visible!
plutot génant si on ne regarde que cette page. J'ai bien essayé
d'utiliser une variable initialisée à "" dans le code avant
impression du bas de page et utilisée dans le code avant impression
du corps, ça marche mais sur la deuxième ligne imprimée ( sur la
première, la colonne série est toujours vierge )! La réaction semble
retardée d'une boucle!

Quelqu'un aurait il une solution à me proposer pour que cet affichage
apparaisse dès la première ligne de la nouvelle page?




Bonsoir,

C'est la chose qui me manque le plus avec l'éditeur d'état.
Ca me gène surtout dans des états avec les noms de fournisseurs, clients
et produits. Pour l'instant je répète le libellé dans le sous-total. Or,
dans le cas présent il y en a pas. Je pense il ne serait pas trop
compliqué de le gérer manuellement dans le genre

Haut de page, avant impression: libellé..visible = vrai
Haut de rupture, avant impression: libellé..visible = vrai
Haut de rupture, après impression: libellé..visible = faux

Plusieurs niveaux de ruptures compliquent un peu la tâche. Je faisais
une chose similaire dans des états entièrement programmés. A mon avis,
ça vaut la peine.

Salutations
Mat
Avatar
jean-claude.dubois
mat a écrit:

Bonsoir,

C'est la chose qui me manque le plus avec l'éditeur d'état.
Ca me gène surtout dans des états avec les noms de fournisseurs, clients
et produits. Pour l'instant je répète le libellé dans le sous-total. Or,
dans le cas présent il y en a pas. Je pense il ne serait pas trop
compliqué de le gérer manuellement dans le genre

Haut de page, avant impression: libellé..visible = vrai
Haut de rupture, avant impression: libellé..visible = vrai
Haut de rupture, après impression: libellé..visible = faux

Plusieurs niveaux de ruptures compliquent un peu la tâche. Je faisais
une chose similaire dans des états entièrement programmés. A mon avis,
ça vaut la peine.

Salutations
Mat




merci pour la solution, mais je ne peut pas rendre invisible le champ (
disparition de l'encadrement ).
Déjà essayé avec un contenu de champ toujours visible et en comparant
avec le contenu de la variable que je manipule dans le bloc bas de page,
j'arrive à le faire apparaitre uniquement en 2ème ligne mais pas sur la
première.
Avatar
mat
jean-claude.dubois wrote:
merci pour la solution, mais je ne peut pas rendre invisible le champ (
disparition de l'encadrement ).



Dans ce cas, l'équivalent serait peut-être quelque chose comme

Haut de page, avant impression: vImprime1 = vrai
Haut de rupture, avant impression: vImprime1 = vrai
monChamp1, avant impression: SI PAS vImprime1 alors moimême = ""
monChamp1, après impression: vImprime1 = faux

J'ai aussi eu des problèmes avec le haut/bas de page dans le passée. Je
ne me souviens plus bien, je crois que la raison était un décalage d'un
enregistrement entre la valeur d'une rubrique de la source de l'état et
la valeur d'un champ lié à la même rubrique de la source et qu'il
fallait uniquement utiliser des champs pour que ça joue...
Avatar
jean-claude.dubois
mat a écrit:
jean-claude.dubois wrote:

merci pour la solution, mais je ne peut pas rendre invisible le champ
( disparition de l'encadrement ).




Dans ce cas, l'équivalent serait peut-être quelque chose comme

Haut de page, avant impression: vImprime1 = vrai
Haut de rupture, avant impression: vImprime1 = vrai
monChamp1, avant impression: SI PAS vImprime1 alors moimême = ""
monChamp1, après impression: vImprime1 = faux

J'ai aussi eu des problèmes avec le haut/bas de page dans le passée. Je
ne me souviens plus bien, je crois que la raison était un décalage d'un
enregistrement entre la valeur d'une rubrique de la source de l'état et
la valeur d'un champ lié à la même rubrique de la source et qu'il
fallait uniquement utiliser des champs pour que ça joue...



je vais essayé cette idée. abientot pour des nouvelles après essai.

merci
Avatar
jean-claude.dubois
mat a écrit:
jean-claude.dubois wrote:

merci pour la solution, mais je ne peut pas rendre invisible le champ
( disparition de l'encadrement ).




Dans ce cas, l'équivalent serait peut-être quelque chose comme

Haut de page, avant impression: vImprime1 = vrai
Haut de rupture, avant impression: vImprime1 = vrai
monChamp1, avant impression: SI PAS vImprime1 alors moimême = ""
monChamp1, après impression: vImprime1 = faux

J'ai aussi eu des problèmes avec le haut/bas de page dans le passée. Je
ne me souviens plus bien, je crois que la raison était un décalage d'un
enregistrement entre la valeur d'une rubrique de la source de l'état et
la valeur d'un champ lié à la même rubrique de la source et qu'il
fallait uniquement utiliser des champs pour que ça joue...



j'ai essayé mais ça marche pas.
Du coup, j'ai trouvé!
Lorsqu'il imprime le bas de page, il a déjà imprimé ( virtuellement ) le
bloc_corps. Donc,dans le code d'impression du bloc_corps, j'ai pensé
qu'en comparant la hauteur de la ligne à imprimer et la hauteur restante
de la page ( fonction iHauteurRestantePage ), j'imposerai l'affichage de
la valeur désirée puisque je le vois avant qu'il ne l'imprime. Et ça marche!

Merci pour le coup de main.
Avatar
mat
jean-claude.dubois wrote:
j'ai essayé mais ça marche pas. Du coup, j'ai trouvé! Lorsqu'il
imprime le bas de page, il a déjà imprimé ( virtuellement ) le
bloc_corps. Donc,dans le code d'impression du bloc_corps, j'ai pensé
qu'en comparant la hauteur de la ligne à imprimer et la hauteur
restante de la page ( fonction iHauteurRestantePage ), j'imposerai
l'affichage de la valeur désirée puisque je le vois avant qu'il ne
l'imprime. Et ça marche!



Je suis content qu'il y a un contournement, même s'il est peut-être
difficile a mettre en oeuvre lorsqu'on a des haut/bas de pages de taille
variable.

J'adore travailler avec cet éditeur d'état, mais il n'y a aucune raison
de devoir faire une telle gymnastique afin de pouvoir faire une chose si
simple. En effet, j'ai trouvé que le code Haut de Page (ainsi que bas de
page), avant impression, n'est appliqué au corps que lorsque le haut de
page tombe sur le début d'une rupture. Vraisemblablement un vrai bug.
Avatar
jean-claude.dubois
mat a écrit:
jean-claude.dubois wrote:

j'ai essayé mais ça marche pas. Du coup, j'ai trouvé! Lorsqu'il
imprime le bas de page, il a déjà imprimé ( virtuellement ) le
bloc_corps. Donc,dans le code d'impression du bloc_corps, j'ai pensé
qu'en comparant la hauteur de la ligne à imprimer et la hauteur
restante de la page ( fonction iHauteurRestantePage ), j'imposerai
l'affichage de la valeur désirée puisque je le vois avant qu'il ne
l'imprime. Et ça marche!




Je suis content qu'il y a un contournement, même s'il est peut-être
difficile a mettre en oeuvre lorsqu'on a des haut/bas de pages de taille
variable.

J'adore travailler avec cet éditeur d'état, mais il n'y a aucune raison
de devoir faire une telle gymnastique afin de pouvoir faire une chose si
simple. En effet, j'ai trouvé que le code Haut de Page (ainsi que bas de
page), avant impression, n'est appliqué au corps que lorsque le haut de
page tombe sur le début d'une rupture. Vraisemblablement un vrai bug.



il est vrai que cette gymnastique semble douteuse ( bug pourquoi pas ou
logique de travail chez pcsoft! ) en tout cas cela nous oblige à
rechercher des solutions et trouver des idées et des parades à quelques
fonctionnement ( merci la fonction trace ).

A bientôt peut être et merci encore de ton coup de main.