Visites

   visiteurs

   visiteurs en ligne

Sujet n°294 sous-formulaire SourceObject
    par jcs75 le 17/11/2009 : 12:46

Paris, le 171109

Bonjour,

J'utilise un sous-formulaire dont je voudrais pouvoir ajuster la source en fonction de choix opérés par l'utilisateur sur le formulaire qui le contient.

J'ai essayé de faire varier la valeur de la propriété SourceObject mais elle n'accepte qu'une chaîne renvoyant à un formulaire existant. Les choix que je compte laisser à l'utilisateur conduiraient à créer un nombre très conséquent de ces formulaires (servant de sous-formulaires dans le formulaire principal).

Je souhaiterais pouvoir modifier directement la chaîne SQL du sous formulaire mais je ne vois pas comment y accéder à partir du code du formulaire principal.

Merci par avance de vos idées.

 


Réponse n° 1 par 3Stone le 17/11/2009 : 14:42
Bonjour,


Dixit...
J'ai essayé de faire varier la valeur de la propriété SourceObject mais elle n'accepte qu'une chaîne renvoyant à un formulaire existant


Il y a plusieurs possibilités...
  • soit on modifie le sous-formulaire contenu dans l'objet sous-formulaire et les zones de texte sont naturellement ok.
  • soit on remplace le "RecordSource" du sous-formulaire (et non la source de l'objet sous-formulaire), cela peut être une requête enregistrée ou une chaîne SQL que l'on contruit à la demande. Mais, dans ce cas, il faut veiller à la correspondance des sources des zones de texte et autres objets se trouvant sur le sous-formulaire.

Cordialement,
Pierre(3stone)

Réponse n° 2 par jcs75 le 17/11/2009 : 15:39

Paris, le 171109

Bonjour,

Merci pour votre réponse. La 2e option, la modification de la chaîne SQL du RecordSource du formulaire servant de sous formulaire me conviendrait bien mais je ne vois pas comment la mettre en oeuvre à partir du formulaire principal qui reçoit les choix opérés par l'utilisateur.

Par Me!NomSousFormulaire.propriété je n'éccède pas au RecordSource du sous-formulaire.

Par Me!NomSousFormulaire.Form!RecordSource je reçois un message d'erreur 2465 "MS acces ne trouve pas le champ RecordSource auquel il est fait référence dans cette expression."

En élargissant la question, je ne comprends pas bien le fonctionnement concret des liens entre les formulaires et les collections de contrôles qu'ils regroupent. Avez-vous une idée d'un endroit ou d'un ouvrage où je pourrais trouver ce type d'information ?

Encore merci pour votre aide

 

Réponse n° 3 par 3Stone le 17/11/2009 : 16:52
Bonjour,

RecordSource est une propriété et s'écrit donc en la précédant d'un point.

Me.NomObjetSousForm.Form.RecordSource ="Select..."

Cette page montre comment faire référence au divers objets d'un formulaire (ou d'un état).

Ceci dit, si le sous-formulaire continue à être basé sur la/les même(s) table(s) ou requête(s), il serait probablement plus simple d'utiliser les filtres. Le filtrage ne demande pas la modification de la source, elle est définie une fois pour toute, mais permet très simplement de spécifier quels enregistrements seront affichés ou non.

Cordialement,
Pierre(3stone)


[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut