Message de rapport:
 

Re: Questions sur les états

Sujet: Re: Questions sur les états
par R&B sur 28/11/2005 16:49:54

Bonjour
C'est un chose bien difficile que vous souhaitez faire là. A fiortiori, si vous êtes débutant.

En effet, il va vous falloir rapidement intégrer la programmation des état.

Voici donc une trame pour parvenir à vos fins.

L'impression des états dépendent du matériel sur lequel l'impression est réalisée. En effet, la hauteur imprimable d'une page et donc le nombre de lignes par page est dépendant du matériel : chaque imprimante dispose de sa marge constructeur dans laquelle on ne peut imprimer.

Pour déterminer quels seront les enregistrement, imprimés sur telle ligne de telle page, je vous invite à effectuer une pré-impression qui rempliera un compteur de lignes/pages.
Cette préimpressione est possible en redirigeant l'impression dans un fichier :
iApercu(iFichier)
IImprimeEtat(...)

Vous devrez passer un paramètre à l'état pour qu'il puisse enregistrer ces valeurs lors de l'impression. Pourquoi pas alors lui passer le nom d'un champ table sans lequel vous aurez deux colonnes : n° page, nbEnr
iApercu(iFichier)
IImprimeEtat(NomEtat,BorneMin,BorneMax,MaFenêtre..Nom+"."+Table..nom)

Et dans l'état :
// initilisation de l'état
PROCEDURE NomEtat(pcNomTable)
bModeFichier est un booleen = {pcNomTable,indChamp}..Vide // faux si la table a un contenu = seconde impression
nNbEnr est un entier
// Avant Impression Bloc Haut De Page
nNbEnr=0
// Apres impression Bloc Bas De Page
SI pcModeFichier ALORS TableAjouteLigne(pcNomTable,iNumPage(),nNbEnr)

Remarque : pcNomTable contient le chemin de la table soit
Nom de la fenêtre . nom de la table

Cette première impression va remplir la table des pages et du nombre d'enregistrement quelles contiennent

Une seconde impression, la vraie, pourra alors utiliser la table (cette fois nen vide) pour aller chercher les bonnes lignes.

Pour assurer un parcours non séquentiel de votre requête, ce qui va être le cas, je vous invite à envoyer sont résultat dans une table mémoire. Cette dernière pourra alors contenir une colonne que l'on remplira avenc de lancer la seconde avec les valeurs de page et d'enregistrement.

La seconde impression pourra alors être effectuée sur le parcours de cette table. La source de l'atat ne sera plus alors la requête mais cette dernière table.

Je pense vous retrouver plus tard pour des détails.
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2