OVH Cloud OVH Cloud

Zones de texte dans un Etat

4 réponses
Avatar
Thierry DUMAS
Je cr=E9e un =E9tat qui n'est pas bas=E9 sur une table ou une=20
requ=EAte.

J'y pose un contr=F4le, de type zone de texte, qui est donc=20
ind=E9pendant.

Puis, sous VBA, j'ouvre l'Etat en aper=E7u :
DoCmd.OpenReport "MonEtat", acViewPreview

J'assigne alors ma zone de texte :
Reports!MonEtat!Zone1 =3D "Toto"

... r=E9sultat : zone vide ...

je rajoute alors une ligne de code :
DoCmd.RepaintObject acReport, "MonEtat"

... queudale ...

J'ouvre alors la boite de dialogue Mise en Page et je la=20
ferme avec le bouton OK :

La zone affiche alors : Toto

Avant que j'appelle un exorciste, si quelqu'un a une=20
explication rationnelle, je prends volontiers.

4 réponses

Avatar
Raymond [mvp]
Bonsoir.

il serait préférable de placer ta fonction dans ton état directement:
Private Sub Report_Open(Cancel As Integer)
Me.Zone1 = "Toto"
End Sub


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Thierry DUMAS" a écrit dans le message
de news:015c01c3d157$d8be3590$
Je crée un état qui n'est pas basé sur une table ou une
requête.

J'y pose un contrôle, de type zone de texte, qui est donc
indépendant.

Puis, sous VBA, j'ouvre l'Etat en aperçu :
DoCmd.OpenReport "MonEtat", acViewPreview

J'assigne alors ma zone de texte :
Reports!MonEtat!Zone1 = "Toto"

... résultat : zone vide ...

je rajoute alors une ligne de code :
DoCmd.RepaintObject acReport, "MonEtat"

... queudale ...

J'ouvre alors la boite de dialogue Mise en Page et je la
ferme avec le bouton OK :

La zone affiche alors : Toto

Avant que j'appelle un exorciste, si quelqu'un a une
explication rationnelle, je prends volontiers.
Avatar
hm15
Bonjour *à toi aussi* Thierry,

sur quel événement tu as mis ton bout de code ?
As-tu essayé de mettre ta ligne
Reports!MonEtat!Zone1 = "Toto"
sur l'événement "Au formatage" de ta section Détail ?

Si cela fonctionne, ne te crois pas obligé de dire "Merci" ;-)

Annette
---------------------------------------------------------------------------
www.horizon-micro.com


"Thierry DUMAS" a écrit dans le message
de news: 015c01c3d157$d8be3590$
Je crée un état qui n'est pas basé sur une table ou une
requête.

J'y pose un contrôle, de type zone de texte, qui est donc
indépendant.

Puis, sous VBA, j'ouvre l'Etat en aperçu :
DoCmd.OpenReport "MonEtat", acViewPreview

J'assigne alors ma zone de texte :
Reports!MonEtat!Zone1 = "Toto"

... résultat : zone vide ...

je rajoute alors une ligne de code :
DoCmd.RepaintObject acReport, "MonEtat"

... queudale ...

J'ouvre alors la boite de dialogue Mise en Page et je la
ferme avec le bouton OK :

La zone affiche alors : Toto

Avant que j'appelle un exorciste, si quelqu'un a une
explication rationnelle, je prends volontiers.
Avatar
Thierry DUMAS
Merci à tous les deux pour vos avis, :

En fait mon code se trouve hors de l'état, sagement rangé dans la section des modules. Ceci pour répondre à Annette. J'évite habituellement de mettre ma procédure sur un des évènements de l'état. En y réfléchissant bien, vous me faites douter

Il est certain que cela fonctionnerait. Sur l'évènement ouverture ou sur l'évènement au formatage, dans les deux cas je pense. Ceci pour répondre à Raymond. Je pourrais aussi écrire les données dans un fichier temporaire et fonder l'état dessus. Mais c'est moins light en terme de process

J'avais fondé mes espoirs sur une méthode de rafraichissement comme repaintobject, en vain. J'ai même essayé de faire ouvrir automatiquement la boite de dialogue Mise en Page. Et j'y suis arrivé. Mais pour ce qui est de la fermer c'est autre chose. D'ailleurs mes profs ont toujours dis que j'avais du mal à la fermer

Pendant que j'y suis : Bonne Année à tous deux
Avatar
Raymond [mvp]
Pour fermer une boite de dialogue et conserver le form chargé il faut faire
un me.visible = false pour rendre la main

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Thierry DUMAS" a écrit dans le
message de news:
Merci à tous les deux pour vos avis, :)

En fait mon code se trouve hors de l'état, sagement rangé dans la section
des modules. Ceci pour répondre à Annette. J'évite habituellement de mettre

ma procédure sur un des évènements de l'état. En y réfléchissant bien, vous
me faites douter.

Il est certain que cela fonctionnerait. Sur l'évènement ouverture ou sur
l'évènement au formatage, dans les deux cas je pense. Ceci pour répondre à

Raymond. Je pourrais aussi écrire les données dans un fichier temporaire et
fonder l'état dessus. Mais c'est moins light en terme de process.

J'avais fondé mes espoirs sur une méthode de rafraichissement comme
repaintobject, en vain. J'ai même essayé de faire ouvrir automatiquement la

boite de dialogue Mise en Page. Et j'y suis arrivé. Mais pour ce qui est de
la fermer c'est autre chose. D'ailleurs mes profs ont toujours dis que
j'avais du mal à la fermer.

Pendant que j'y suis : Bonne Année à tous deux