rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011
-
26 avril 2006 à 15:12
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
28 avril 2006 à 11:25
bonjour,
j'aimerai savoir quel est la ligne de commande pour faire appel a un sous formulaire etant mis sous forme de tableau dans un autre formulaire.
Merci
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 27 avril 2006 à 22:42
Pour répondre rapidement à ta question :
- mets des guillemets si j'en ai mis.
- ctl est un préfixe, lié à certaines conventions de codage, et dénotant le type de la variable.
Pour répondre plus précisément :
Pour gérer un sous-formulaire sous Access, il faut déjà créer 2 formulaires, frmParent et frmEnfant (l'un contiendra l'autre).
Pour que l'un contienne l'autre, il faut situer (la situation, c'est la terminologie Microsoft pour dire qu'un contrôle est dans un conteneur [ici, un formulaire]), sur ce formulaire frmParent, le formulaire frmEnfant. Mais, comme je l'ai ecrit entre parenthèses, sur un formulaire, on ne peut situer qu'un contrôle (et pas un formulaire).
Access met à notre disposition un contrôle conteneur Sous-Formulaire (de type SubForm), qui sera l'intermédiaire entre frmParent et frmEnfant. Nous appellerons ce contrôle sfrmConteneur.
En résumé, on a un formulaire frmParent, qui situe un contrôle sous-formulaire sfrmConteneur, qui, lui-même, héberge un formulaire frmEnfant.
A partir du code du formulaire frmParent, pour accéder aux propriétés du sfrmConteneur (parce qu'il a ses propres propriétés [cette précédente locution est un exercice de diction]), on écrit, par exemple :
'Là on accède à une interface de type Control (typé faible), liaison tardive (on ne connait
'pas, à la conception, les propriétés et méthodes disponibles), et en exécution, elle se 'transtypera en un type SubForm. Me.Controls("sfrmConteneur").Enabled = False ' verrouille le contrôle conteneur
'Là on accède à une interface de type SubForm (typé fort), liaison précoce (on connait,
'à la conception, les propriétés et méthodes disponibles).
Me.sfrmConteneur.Enabled = False ' accès direct à la variable implicite d'instance
Toujours du même endroit, pour accéder aux propriétés du formulaire frmEnfant, on écrit par exemple :
'Là on accède à une interface de type Form (typé faible), qui se transtypera, à l'exécution, en
'un type frmEnfant. Me.Controls("sfrmConteneur").Form.AllowEdits = True
Me.sfrmConteneur.Form.AllowEdits = True
Si le frmEnfant avait situé un contrôle de type TextBox, et nommé txNom, pour accéder à ce contrôle, toujours du même endroit, on écrit :
'interface de type Control (typé faible)
Me.Controls("sfrmConteneur").Form.Controls("txtNom").Text = "DUPOND"
'interface de type TextBox (typé fort)
Me.sfrmConteneur.Form.txtNom.Text = "DUPOND"
PS : une interface est un contrat. Cad, si, moi, contrôle, je dis que j'expose l'interface de type TextBox, je dois renvoyer ma valeur quand on appelle ma propriété .Text, et je dois répondre à toutes les propriétés, méthodes et évènements qu'un contrôle de type TextBox expose.
PS2 : un contrôle a le droit de dire qu'il répond à plusieurs interfaces (qu'il remplit plusieurs contrats). Donc, un contrôle de type SubForm peut aussi (en même temps) être de type Control (idem pour un TextBox). L'interface de type Control est donc très générique, et est exposée par de nombreux (pour ne pas dire tous) contrôles (elle est donc de type faible).
cette faculté qu'ont les objets de types différents (TextBox, ListBox, ...) à exposer une même interface (Control) s'appelle le polymorphismel'héritage d'interface.
si après ça, tu as une autre question, tant pis pour toi, je te préviens, je t'aurais prévenu :)
PS4 : normalement, pendant tout le temps que j'ai mis à écrire, tu as dû trouver comment il fallait écrire (avec ou sans guillemets)! Donc, je fais un refresh de la file de messages de ce sujet, et si tu as répondu que tu as trouvé, je jette mon message à la poubelle, sinon...
à+
rvblogn
<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011 26 avril 2006 à 15:44
oui j'ai fait une recherche vitte fait a l'aide du moteur de recherche mais je n'ai rien trouvé. Je suis sous VBA pour access, en fait je fais des autorisation de modification dans mon formulaire a l'aide la commande Me.allowedits=true (ou false en fonction de ce que l'on veut) mais j'aimerais faire pareil pour un sous formulaire, j'ai essayé de remplacer le [Me] par le nom du sous formulaire mais il doit manquer quelquechose car ca ne marche pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011 27 avril 2006 à 20:41
merci rvblog mais dois je mettre les noms de formulaire et sous-formulaire entre guillemets? et qu'est ce que le ct1 avant le nom du sous-formulaire? par quoi dois je le remplacer?
rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011 28 avril 2006 à 08:35
Desolé tu vas dire que je suis vraiment nul mais j'y arrive pas, mon formulaire s'appel MOIS_CONCERNÉ et mon sous formilaire est CONCERNÉ_PAR Sous-formulaire j'ai donc enté l'instruction suivante en m'inspirant de ton model,
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 28 avril 2006 à 10:07
Quoi, tu n'as pas lu !
:) - quel est le nom du contrôle de type SubForm sur le formulaire MOIS_CONCERNÉ?
- quel est le nom du formulaire qui deviendra sous-formulaire (le nom qu'Access t'a demandé la 1ère fois que tu l'as enregistré, qui est le même nom que celui que tu vois dans la liste des formulaires de la base de données)?
tu ne peux pas répondre la même chose à ces 2 questions. Tu peux, mais je ne te le conseille pas!
à+
rvblogn
<sup>
</sup><sup>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</sup>
rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011 28 avril 2006 à 10:23
non, 'MOIS_CONCERNÉ' est le formulaire contenant le sous formulaire. Le nom du sous formulaire est 'CONCERNÉ_PAR' et le nom que je vois dans la liste des formulaires est 'CONCERNÉ_PAR Sous-formulaire'
rodrigue62
Messages postés190Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention10 janvier 2011 28 avril 2006 à 11:20
Ok merci ca marche impecable, oui j'eviterai la prochaine fois les accents et espace, mais la ci je change va falloir que je retrouve tous le code ou je fait appel aux noms. Encore merci pour ta patience et ton aide precieuse.