OVH Cloud OVH Cloud

Appel d'un formulaire comme un sous-programme

1 réponse
Avatar
Maurice KRAIT
Bonjour,

Ce que je veux dire par appel comme un sous-programme est que je
veux pouvoir ouvrir, dans une dizaine de formulaires différents mais
très semblables, disons F1, F2, ... FX, un même formulaire SP et à
l'issue de l'utilisation de ce formulaire SP, revenir dans le formulaire
FX qui l'a appelé. Ceci pour éviter d'avoir à créer autant de
formulaires SP¨différents, d'autant que ce formulaire SP est basé sur
une requête, comprend un sous-formulaire, etc, qu'il faudrait multiplier.
Dans le formulaire SP ( le "sous-programme"), après traitement, on
peut, suivant les cas:
- soit revenir au formulaire FX appelant : là c'est simple, il suffit de
fermer SP pour se retrouver dans le FX appelant.
- soit , avant de fermer SP, modifier des élements du formulaire FX
appelant :
- changer la propriété DataEntry du formulaire FX
- changer la propriété Visible d'une zone de
texte ZONE du formulaire FX , sachant que chaque formulaire FX
différent contient une zone de texte de nom ZONE .

Il faut donc qu'à l'appel de SP par chaque FX, on puisse transmettre à
SP le nom du formulaire FX appelant afin de pouvoir accéder à
Forms![NomFX].DataEntry et à Forms![NomFX]![ZONE].Visible.

J'ai fait des tentatives en passant comme paramètre le symbole Me,
mais pour l'instant, je n'ai pas réussi à le faire fonctionner. Ce
serait surement la solution la plus élégante car le code serait alors le
même dans tous les FX.
Je suis en train d'essayer la solution suivante : à l'appel de SP
depuis FX, stocker le nom de FX dans une zone de texte de SP pour
pouvoir y accéder depuis SP; je n'ai pas encore pu faire le test pour
des raisons annexes.
Est-ce quelqu'un aurait une solution à me suggérer pour passer le nom du
formulaire ?

Merci d'avance pour toute solution

Maurice

1 réponse

Avatar
Raymond
Bonjour.

tu appelles ton formulaire SP en acdialog à partir de tes formulaires F1,
F2...
dans F1 par exemple:
Private Sub Commande0_Click()
DoCmd.OpenForm "SP", acNormal, , , , acDialog, Me.Name
End Sub

dans F2:
Private Sub Form_Load()
MsgBox Me.OpenArgs
End Sub
le msgbox affichera "SP". dans le openargs tu as le nom du formulaire
appelant que tu peux utiliser avec un objet Forms!......
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Maurice KRAIT" a écrit dans le message de
news:
Bonjour,

Ce que je veux dire par appel comme un sous-programme est que je
veux pouvoir ouvrir, dans une dizaine de formulaires différents mais
très semblables, disons F1, F2, ... FX, un même formulaire SP et à
l'issue de l'utilisation de ce formulaire SP, revenir dans le formulaire
FX qui l'a appelé. Ceci pour éviter d'avoir à créer autant de
formulaires SP¨différents, d'autant que ce formulaire SP est basé sur
une requête, comprend un sous-formulaire, etc, qu'il faudrait multiplier.
Dans le formulaire SP ( le "sous-programme"), après traitement, on
peut, suivant les cas:
- soit revenir au formulaire FX appelant : là c'est simple, il suffit de
fermer SP pour se retrouver dans le FX appelant.
- soit , avant de fermer SP, modifier des élements du formulaire FX
appelant :
- changer la propriété DataEntry du formulaire FX
- changer la propriété Visible d'une zone de
texte ZONE du formulaire FX , sachant que chaque formulaire FX
différent contient une zone de texte de nom ZONE .

Il faut donc qu'à l'appel de SP par chaque FX, on puisse transmettre à
SP le nom du formulaire FX appelant afin de pouvoir accéder à
Forms![NomFX].DataEntry et à Forms![NomFX]![ZONE].Visible.

J'ai fait des tentatives en passant comme paramètre le symbole Me,
mais pour l'instant, je n'ai pas réussi à le faire fonctionner. Ce
serait surement la solution la plus élégante car le code serait alors le
même dans tous les FX.
Je suis en train d'essayer la solution suivante : à l'appel de SP
depuis FX, stocker le nom de FX dans une zone de texte de SP pour
pouvoir y accéder depuis SP; je n'ai pas encore pu faire le test pour
des raisons annexes.
Est-ce quelqu'un aurait une solution à me suggérer pour passer le nom du
formulaire ?

Merci d'avance pour toute solution

Maurice