OVH Cloud OVH Cloud

Filtrer un report via code ?

12 réponses
Avatar
Bruno Frisque
Bonjour,

Je voudrais filtrer l'ouverture d'un sub-report avec le code ci-dessous.
Il y a chaque fois 1 msg d'erreur : the settings is not valid for this
property etc ...

Private Sub Report_Open(Cancel As Integer)
If CurrentProject.AllForms("ClientsActuels").IsLoaded = True Then
Debug.Print "at SubRpt open!!!: ClientsActuel IS loaded" & " with IDKey
" & Forms!clientsactuels!MyIdEventKey ' = ok
Me.Filter = "ideventkey = " & Forms!clientsactuels!MyIdEventKey '<<<
error Syntaxe ??
Me.FilterOn = True
end if

Tout grand merci si quelqu'un peut me donner la syntaxe correcte !

Bruno

2 réponses

1 2
Avatar
Gilbert
Bonjour,
J'ai refait des essais avec un état et un sous-état.
J'ai défini un filtre par VBA sur chacun des deux.
Si j'ouvre mon sous-état tout seul ça fonctionne.
Si je l'ouvre dans l'état, j'ai le message d'erreur "Le paramètre entré
n'est pas valide pour cette propriété".
J'ai essayé de le définir à partir de l'état avec
Reports("SousEtat").Filter = condition
Reports("SousEtat").FilterOn = True
mais soit j'obtiens le message comme quoi je fais référence à un état qui
n'est pas ouvert, soit le filtre ne s'applique pas (cela dépend de
l'évènement qui est utilisé).

La solution que je te propose est de redéfinir le RecordSource de ton
sous-état par une requête SQL avec une clause WHERE correspondant au filtre
que tu veux utiliser.

A+

Gilbert

"Bruno Frisque" a écrit dans le message de news:

Tout grand merci !
(tu bosses bien tard toi ?)
je ne m'exprime pas trop bien sans doute.
Etat principal : Ville de Nantes (il n'y en a qu'une, filtrée sur Code
Postal)

Sous-Etat : (subForm et Sous-Etat) Bordereau d'Enlèvement (des registres
Etat Civil) = EventKey 1
Boderau Restitution = EventKey 2
Bordereau de Livraison : CD Worm avec actes numérisés
etc...

= EventKey 3
etc...
Mon formulaire affiche Nantes avec ttes. les coordonnées tel/fax ..etc) et
son sub-form les différents événements ... (sous forme DataSheet à
compléter

successivement)
Je souhaite imprimer le dernier événement de Nantes.
Donc open report where key = Nantes ...c'est OK l'Etat principal
s'affiche

avec Nantes etc....

Le sous-état (contenat l'objet de l'événement, sa date etc ) via code :
where "EventKey = 3" (Livraison) ... et là çà plante !!

Moralité : impossible de "coder" le filtre d'un sous-état !!??

Encore tout grand merci Gilbert !

Je m'étonne quand même un peu qu'un Forum tel que MS-Acces.FR n'y arrive
pas.
Tu n'y es pour rien et encore merci d'avoir répondu si rapidement ce jour
!


Je tente ma chance aux US (ils ont des forums Access pas tristes non plus)
Encore fort grand merci
Bruno









"Gilbert" wrote in message
news:O8G24%
Je ne comprends pas ce que tu entends par "problème s'il y a 3 records
pour

le sous-état, ils s'impriment tous les trois..."
Si tu veux dire que les trois enregistrements du sous-form ne sont pas
liés

à l'enregistrement du formulaire, mais apparaissent quand même, alors
c'est

que soit le lien entre état et sous-état n'est pas défini correctement,
soit

la relation entre les tables (ou requêtes) de l'état et du sous-état
n'est


pas correcte.

Gilbert








Avatar
Bruno Frisque
TOUT GRAND MERCI !
Cela fonctionne parfaitement maintenant !
Source du sub report :
SELECT custevents.ideventkey, CustEvents.DataEvent, CustEvents.Zip,
CustEvents.EventType, CustEvents.Object FROM CustEvents WHERE
custevents.ideventkey=Forms!clientsactuels!MyIdEventKey;

Il fallait y penser ..... BRAVO et merci



"Gilbert" wrote in message
news:
Bonjour,
J'ai refait des essais avec un état et un sous-état.
J'ai défini un filtre par VBA sur chacun des deux.
Si j'ouvre mon sous-état tout seul ça fonctionne.
Si je l'ouvre dans l'état, j'ai le message d'erreur "Le paramètre entré
n'est pas valide pour cette propriété".
J'ai essayé de le définir à partir de l'état avec
Reports("SousEtat").Filter = condition
Reports("SousEtat").FilterOn = True
mais soit j'obtiens le message comme quoi je fais référence à un état qui
n'est pas ouvert, soit le filtre ne s'applique pas (cela dépend de
l'évènement qui est utilisé).

La solution que je te propose est de redéfinir le RecordSource de ton
sous-état par une requête SQL avec une clause WHERE correspondant au
filtre

que tu veux utiliser.

A+

Gilbert

"Bruno Frisque" a écrit dans le message de news:

Tout grand merci !
(tu bosses bien tard toi ?)
je ne m'exprime pas trop bien sans doute.
Etat principal : Ville de Nantes (il n'y en a qu'une, filtrée sur Code
Postal)

Sous-Etat : (subForm et Sous-Etat) Bordereau d'Enlèvement (des registres
Etat Civil) = EventKey 1
Boderau Restitution = EventKey 2
Bordereau de Livraison : CD Worm avec actes numérisés
etc...

= EventKey 3
etc...
Mon formulaire affiche Nantes avec ttes. les coordonnées tel/fax ..etc)
et


son sub-form les différents événements ... (sous forme DataSheet à
compléter

successivement)
Je souhaite imprimer le dernier événement de Nantes.
Donc open report where key = Nantes ...c'est OK l'Etat principal
s'affiche

avec Nantes etc....

Le sous-état (contenat l'objet de l'événement, sa date etc ) via code :
where "EventKey = 3" (Livraison) ... et là çà plante !!

Moralité : impossible de "coder" le filtre d'un sous-état !!??

Encore tout grand merci Gilbert !

Je m'étonne quand même un peu qu'un Forum tel que MS-Acces.FR n'y arrive
pas.
Tu n'y es pour rien et encore merci d'avoir répondu si rapidement ce
jour


!

Je tente ma chance aux US (ils ont des forums Access pas tristes non
plus)


Encore fort grand merci
Bruno









"Gilbert" wrote in message
news:O8G24%
Je ne comprends pas ce que tu entends par "problème s'il y a 3 records
pour

le sous-état, ils s'impriment tous les trois..."
Si tu veux dire que les trois enregistrements du sous-form ne sont pas
liés

à l'enregistrement du formulaire, mais apparaissent quand même, alors
c'est

que soit le lien entre état et sous-état n'est pas défini
correctement,



soit
la relation entre les tables (ou requêtes) de l'état et du sous-état
n'est


pas correcte.

Gilbert












1 2