Pagination par groupe - Suite !
Le
News Groups
Bonjour,
Dans un précédent post je cherchais à paginer un etat par groupe et non en
totalité (Cf. Etats : comment paginer par groupe ?)
Après l'aide de "3Stone" et le lien
http://www.mvps.org/accessfr/reports/rpt0013.htm
et en consultant le site de "Raymond"
http://access.seneque.free.fr/pagin...groupe.htm
J'ai composé avec l'ensemble pour obtenir une solution tout à fait adaptée à
mon cas !! :-))
Donc Merci à eux deux (et par là même à tous les participants du nws groupe
et ceux editant des sites remplis de bonnes astuces sur Access) !!
Et j'en profite pour faire part de mon expérience :
- La solution de Raymond utilise une table temporaire, or étant en projet
ADP + SQL Server je ne voulais pas passer par de tables tempo
mais par contre j'ai retenu l'idée d'initialiser la page courante (Me.page =
1)
- La solution sur mvps.org utilise à la place de tables des variables
tableau que j'ai reconduit, mais ne fonctionne pas correctement si l'on
change par exemple les marges en apercu sur impression car seule la clause
Me.pages = 0 est testée (tout cela est compréhensible après être rentré dans
le code édité sur le site ..!!)
- mais avec un peu de mixt et de reflexion voici la solution adoptée :
1- Créer au niveau en tête de page une zone de texte non visible[znx_Pages]
dont la source est "=[Pages]"
* Pour forcer le formatage de l'état
2- Créer au niveau en tête de page une zone de texte visible[znx_Pagination]
dont la source est vide
* Pour editer la pagination voulue
3- Créer au niveau en tête de groupe une zone de texte non visible
[znx_NumGroupe] dont la source est "=1" avec la propriété cumul "= Par
groupe"
* Pour numéroter les groupes utilisé comme indice pour ma variable
tableau
4 - ensuite taper le code suivant dans les procédures événementielles
correspondantes :
Private TabPagesGroup() As Integer
Private RazPagination As Boolean
Private Sub Report_Open(Cancel As Integer)
RazPagination = True
End Sub
Private Sub EnTetePage_Format(Cancel As Integer, FormatCount As Integer)
If RazPagination Then
Me.Page = 1
RazPagination = False
End If
Me.Pagination = "Page : " & Me.Page & " / " & TabPagesGroup(Me.NumGroupe)
End Sub
Private Sub PiedGroupe0_Format(Cancel As Integer, FormatCount As Integer)
TabPagesGroup(Me.NumGroupe) = Me.Page
RazPagination = True
End Sub
Voilà, le résultat fonctionne si l'on prend soin de mettre la propriété
"Saut de Page" du pied de groupe à "Après Section"
Désolé pour la longueur du message et pour, surement, son faible degrés de
compréhension
mais je suis dispo pour tous compléments d'infos.
A plus,
Thierry.
Dans un précédent post je cherchais à paginer un etat par groupe et non en
totalité (Cf. Etats : comment paginer par groupe ?)
Après l'aide de "3Stone" et le lien
http://www.mvps.org/accessfr/reports/rpt0013.htm
et en consultant le site de "Raymond"
http://access.seneque.free.fr/pagin...groupe.htm
J'ai composé avec l'ensemble pour obtenir une solution tout à fait adaptée à
mon cas !! :-))
Donc Merci à eux deux (et par là même à tous les participants du nws groupe
et ceux editant des sites remplis de bonnes astuces sur Access) !!
Et j'en profite pour faire part de mon expérience :
- La solution de Raymond utilise une table temporaire, or étant en projet
ADP + SQL Server je ne voulais pas passer par de tables tempo
mais par contre j'ai retenu l'idée d'initialiser la page courante (Me.page =
1)
- La solution sur mvps.org utilise à la place de tables des variables
tableau que j'ai reconduit, mais ne fonctionne pas correctement si l'on
change par exemple les marges en apercu sur impression car seule la clause
Me.pages = 0 est testée (tout cela est compréhensible après être rentré dans
le code édité sur le site ..!!)
- mais avec un peu de mixt et de reflexion voici la solution adoptée :
1- Créer au niveau en tête de page une zone de texte non visible[znx_Pages]
dont la source est "=[Pages]"
* Pour forcer le formatage de l'état
2- Créer au niveau en tête de page une zone de texte visible[znx_Pagination]
dont la source est vide
* Pour editer la pagination voulue
3- Créer au niveau en tête de groupe une zone de texte non visible
[znx_NumGroupe] dont la source est "=1" avec la propriété cumul "= Par
groupe"
* Pour numéroter les groupes utilisé comme indice pour ma variable
tableau
4 - ensuite taper le code suivant dans les procédures événementielles
correspondantes :
Private TabPagesGroup() As Integer
Private RazPagination As Boolean
Private Sub Report_Open(Cancel As Integer)
RazPagination = True
End Sub
Private Sub EnTetePage_Format(Cancel As Integer, FormatCount As Integer)
If RazPagination Then
Me.Page = 1
RazPagination = False
End If
Me.Pagination = "Page : " & Me.Page & " / " & TabPagesGroup(Me.NumGroupe)
End Sub
Private Sub PiedGroupe0_Format(Cancel As Integer, FormatCount As Integer)
TabPagesGroup(Me.NumGroupe) = Me.Page
RazPagination = True
End Sub
Voilà, le résultat fonctionne si l'on prend soin de mettre la propriété
"Saut de Page" du pied de groupe à "Après Section"
Désolé pour la longueur du message et pour, surement, son faible degrés de
compréhension
mais je suis dispo pour tous compléments d'infos.
A plus,
Thierry.

Poser une question


à force de persévérance on arrive à tout. C'est bien.
pourrais-tu me passer ton état pour que je puisse l'adapter à mon exemple et
proposer ainsi une alternative sur mon site ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"News Groups" news:4113a2b5$0$29425$
Je prépare cela aujourd'hui et te l'envoi dés que possible
pour confirmation l'adresse d'expédition est bien celle-ci :
?
A plus,
Thierry.
"Raymond [mvp]" news: #
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"News Groups" news:41172918$0$4343$