[Access][ETAT] num page par groupe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Access][ETAT] num page par groupe

par cerber » 29 juin 2005, 16:09

non, en fait j'avais vu et j'ai donc créé le controle ctlGrpPages .
Ca ca marche c'est le résultat qui est pas bon, ca donne :
page 1/1
page 2/2
page 3/3

au lieu de :
page 1/3
page 2/3
page 3/3

pour l'instant j'ai contourné le probleme comme ceci :
'************ Code Start *************
Option Compare Database
Option Explicit

'stocke le numéro de la page du groupe
'et le nombre total de page dans un groupe
'en fonction du *numéro de page Access*
Dim GrpArrayPage(), GrpArrayPages()

'nom du groupe courant et précédent
'(pour détecter les chagements de groupes'
Dim GrpNameCurrent As Variant, GrpNamePrevious As Variant

'variables temporaires
Dim GrpPage As Integer, GrpPages As Integer

Private Sub ZonePiedPage_Format(Cancel As Integer, FormatCount As Integer)
Dim i As Integer
If Me.Pages = 0 Then
'premiere passe
ReDim Preserve GrpArrayPage(Me.Page + 1)
ReDim Preserve GrpArrayPages(Me.Page + 1)
GrpNameCurrent = Me!numInterv
If GrpNameCurrent = GrpNamePrevious Then
GrpArrayPage(Me.Page) = GrpArrayPage(Me.Page - 1) + 1
GrpPages = GrpArrayPage(Me.Page)
For i = Me.Page - ((GrpPages) - 1) To Me.Page
GrpArrayPages(i) = GrpPages
Next i
Else
GrpPage = 1
GrpArrayPage(Me.Page) = GrpPage
GrpArrayPages(Me.Page) = GrpPage
End If
'affichage du nombre de pages
Me!ctlGrpPages = "Page " & GrpArrayPage(Me.Page)

Else
'Seconde passe
'affichage du nombre de pages
Me!ctlGrpPages = "Page " & GrpArrayPage(Me.Page) & " / " & GrpArrayPages(Me.Page)

End If
GrpNamePrevious = GrpNameCurrent
End Sub
'************ Code End *************
comme ca, tant que j'ai pas trouvé comment faire la seconde passe, il n'affichera pas le total :
page 1
page 2
page 3

PS : on lancera l'impression vendredi en fin de matinée => si tu as pas trouvé de solution d'ici là te prend pas la tête, c'est déjà gentil d'avoir essayé :)

par hello » 29 juin 2005, 16:03

salut

je viens de regarder ton source et celui qui a été fourni par le lien

ils disent qu'il faut modifier les lignes suivantes :

Note: la ligne Me!Salesperson doit être changée pour le nom du contrôle de groupe qui gouverne la numérotation de page. De même, Me!ctlGrpPages est le nom du contrôle du pied de page qui contiendra le numéro de page.


tu as bien modifié le 1er mais par le deuxieme
c'est lui qui t'affiche les bons numéros de pages

j'ai pas testé, mais avec ca, tu dois pouvoir corriger ton probleme
a+

par mere-teresa » 28 juin 2005, 15:36

mais non c'est MON message qui est hors sujet.

par cerber » 28 juin 2005, 15:35

Je trouve ça bien justement qu'il parle de la même manière à tout le monde !
tu sais, moi ca me fait plus sourire qu'autre chose, comme je l'ai dit ci-dessus, il a pas tout a fait tors :roll:

par cerber » 28 juin 2005, 15:28

d'accord, c'est vrai que d'un certain point de vue ca peut être hors sujet, mais ca reste une question sur les bases de données (type access pour ce post) et il faut rendre a access ce qui est a access : il sait faire de beaux rapports de manière simple ;)

=> j'amène le sujet dans le forum autre ....

par mere-teresa » 28 juin 2005, 14:48

HORS SUJET Je trouve ça bien justement qu'il parle de la même manière à tout le monde !

par cerber » 28 juin 2005, 13:23

lol ok merci

par hello » 28 juin 2005, 11:34

bonjour

voila je me suis enregistré

Sinon je ne regarde pas les noms des personnes qui postent les messages... :)

Cela dit, je developpe sous Access, donc je vais essayer de prendre un peu de temps pour voir ton probleme ce midi (ou aujourd'hui)

a+

par cerber » 28 juin 2005, 09:28

Courageux Hello de s'en prendre à un des administrateurs
Courageux courageux, c'est vite dit .... il poste en tant qu'invité :evil:
En fait si je demande ici c'est pour une raison toute simple : je suis limité dans mon surf a deux forums (oui, le reste du net est trop dangereux pour que le service info laisse un stagiaire comme moi y acceder) : celui ci et developpez.com => j'ai demandé dans les deux mais personne a voulu répondre chez developpez :
Forum | Sujets| Auteur | Réponses | Vus
Access | [ETAT] Total de page pour 1 grp (g déjà le début de la sol)| cerber | 0 | 11

par Cyrano » 27 juin 2005, 17:35

lol, ouais, Hello ne manque pas de souffle, enfin bon.

Personnellement, ce problème de séparation avec ACCESS a toujours été un emmerdement majeur dans les sorties d'État. Je sais que ça se fait, que je l'ai déjà fait aussi, mais c'était il y a un an, ce n'était pas en manipulant le code vba mais directement en mode graphique. Je n'ai malheureusement pas la réponse Cerber et tu m'en vois navré.

par zeus » 27 juin 2005, 17:14

Courageux Hello de s'en prendre à un des administrateurs du forum pour lui dire qu'il est pas sur le bon forum !!!

Celà dit, c'est vrai que je suis pas sûr que tu trouve ton bonheur ici Cerber

PS : Que mes cours de VB me parraissent loin ... :oops:

par Hello » 27 juin 2005, 17:06

Bonjour

Tes explications sont tres vastes et peu clair.

Soit ton application est sous Microsoft Access et donc cela ne concerne pas le PHP, donc tu es sur le mauvais forum et la je te conseille d'aller demander l'aide sur le forum suivant : http://support.microsoft.com/newsgroups ... .fr.access

Soit tu utilises du PHP avec une base de donnée,
et donc si c'est le cas, il faut faire appel a une requete qui donne le résultat et aussi le nombre de ligne d'engegistrements.
Pour connaitre la fonction, va voir sur le site www.odbcphp.fr.st et tu trouveras l'application CATMDB qui te montrera comment faire.

esperant avoir pu t'aider
a+

hello / sector one

[Access][ETAT] num page par groupe

par cerber » 27 juin 2005, 14:18

Contexte :
J'édite un rapport d'activité pour tous les unités (~100) de ma société.
Chaque unité se voit consacrer de 1 à 3 pages de rapport (soit 153 pages en tout)
Logiquement je groupe mon rapport sur le numéro d'unité avec un saut de page avant le début du groupe *unité* et l'option "répeter section" à oui
Chaque unité recevra les pages du rapport qui lui sont consacrées

Base du probleme :
J'affiche en bas de page le numéro de la page et le nombre total de page, ce qui peut donner "Page 43/153" hors le groupe représenté sur la page 43, ne prend en réalité qu'une seule page. Je souhaite donc afficher "Page 1/1"

Début de solution : (Source : http://www.mvps.org/accessfr/reports/rpt0013.htm )

Code : Tout sélectionner

'************ Code Start ************* Option Compare Database Option Explicit 'stocke le numéro de la page du groupe 'et le nombre total de page dans un groupe 'en fonction du *numéro de page Access* Dim GrpArrayPage(), GrpArrayPages() 'nom du groupe courant et précédent '(pour détecter les chagements de groupes' Dim GrpNameCurrent As Variant, GrpNamePrevious As Variant 'variables temporaires Dim GrpPage As Integer, GrpPages As Integer Private Sub ZonePiedPage_Format(Cancel As Integer, FormatCount As Integer) Dim i As Integer If Me.Pages = 0 Then 'premiere passe ReDim Preserve GrpArrayPage(Me.Page + 1) ReDim Preserve GrpArrayPages(Me.Page + 1) GrpNameCurrent = Me!numInterv If GrpNameCurrent = GrpNamePrevious Then GrpArrayPage(Me.Page) = GrpArrayPage(Me.Page - 1) + 1 GrpPages = GrpArrayPage(Me.Page) For i = Me.Page - ((GrpPages) - 1) To Me.Page GrpArrayPages(i) = GrpPages Next i Else GrpPage = 1 GrpArrayPage(Me.Page) = GrpPage GrpArrayPages(Me.Page) = GrpPage End If Me!alerteTotal = "Nombre total de page du groupe INVALIDE" Else 'Seconde passe Me!alerteTotal = "" End If 'affichage du nombre de pages Me!ctlGrpPages = "Page " & GrpArrayPage(Me.Page) & " / " & GrpArrayPages(Me.Page) GrpNamePrevious = GrpNameCurrent End Sub '************ Code End *************
Mon probleme :
Quand Access formate l'état, il est requis d'effectuer deux passes pour obtenir l'information [nombre total de page du groupe]
Je pensais qu'access était lui aussi obligé de faire deux passes pour obtenir son nombre total de page (153) et que, logiquement, ma fonction serais appellée deux fois.
Hors mon controle d'alerte alerteTotal maintient l'avertissement et mon nombre total de page reste érroné.


Merci d'avance pour vos réponses ;)
Cerber