De Eric ROUMEGOU le 26/09/2003
Qui ne comprend pas que l’on peut autant galérer pour faire des choses simples, alors il préfère écrire la solution plutôt que de s’épuiser à la re-re-re-chercher.

Comment gérer les états avec rupture ?

En éditeur d’état


Créer un champ de rupture
Etat/Editer les ruptures

Il y a deux blocs de générés :
HAUT_RUPTURE1 et BAS_RUPTURE1

Dans HAUT_RUPTURE1 mettre tout les titres et en-têtes de colonnes


Dans BAS_RUPTURE1, éventuellement trait horizontal et/ou totalisation
Il serait possible de cocher saut de page après bloc, mais on utilisera plutôt du code car cela produit une dernière page surnuméraire.

Créer un HAUTPAGE_SUITE contenant l’en tête de page en cas de page suite

Créer un HAUTPAGE_VIDE
Ce bloc servira à cacher le haut de page car le haut_rupture aura déjà provoqué l’édition des en-têtes.

En programmation


Dans Ouverture de l’Etat
rupture_fin est un booléen

Après Impression de BAS_DE_PAGE
SI rupture_fin=Vrai ALORS
iSubstBloc(HAUT_DE_PAGE,HAUTPAGE_VIDE)
SINON
iSubstBloc(HAUT_DE_PAGE,HAUTPAGE_SUITE)
FIN

Avant Impression de HAUT_RUPTURE1
Libtab=SansEspace(TABLE_NAME)+" "+SansEspace(DESC_TABLE)

Après Impression de HAUT_RUPTURE1
rupture_fin=Faux

Avant Impression de BAS_RUPTURE1
rupture_fin=Vrai
Après Impression de BAS_RUPTURE1
SI DocTableMySQL..NbEnrImprimé<>DocTableMySQL..NbEnrTotal ALORS iTerminePage()

//préférable à la coche saut de page après bloc


Comment gérer une table des matières ?

Créer un fichier Table des matières


Créer un état à partir du fichier Table des matières


L’idéal serait de gérer des polices et des retraits selon le style (zone TM_STYLE)

Dans votre état, insérez les lignes suivantes

Dans Ouverture de l’Etat
HChangeRep(TABLE_MATIERES,gPrivateRep)
HCréation(TABLE_MATIERES)

Après Impression de HAUT_RUPTURE1
// sauvegarde pour la table des matières
TABLE_MATIERES.TM_TITRE=Libtab
TABLE_MATIERES.TM_PAGE=iNumPage()
TABLE_MATIERES.TM_STYLE="H1"
TABLE_MATIERES.TM_TITREPAGE=LeTitre
HAjoute(TABLE_MATIERES)

Puis après avoir édité l’état, mettre le code comme suit :

iAperçu(100)
iImprimeEtat(DocTableMySQL)
SI OuiNon("Voulez vous imprimer la table des matières ?") ALORS iImprimeEtat(TableMatières)