Bonjour à tous,
je développe actuellement une application professionnelle sensée gérer des entreprises clientes. J'ai conçu l'application de sorte qu'il y ait la base dans un fichier (Entreprises_Base.mdb) et l'application avec les formulaires dans un autre (Entreprises_App.mdb). J'utilise donc largement les objets DAO pour faire le lien entre l'appli et la base. Et c'est là que ca me bloque aussi. Voici le topo:
J'ai un formulaire avec une liste des entreprises. Lorsqu'on sélectionne une entreprise, des données "basiques" s'affichent dans un cadre à coté de la liste, dans le même formulaire. Lorsqu'on clique sur un bouton que j'ai créé, je récupère la clé primaire de l'entreprise selectionnée et la fait passer à un nouveau formulaire qui affichera toutes les infos.
DoCmd.OpenForm "entreprise", acNormal, , , acFormReadOnly, acDialog, Me.LstEntreprises.Column(0, Me.LstEntreprises.ListIndex)
Ensuite, dans la procédure Open du formulaire Entreprise, je récupère cette valeur (si elle existe), j'ouvre un recordset avec une requête conditionnée sur la clé et j'attribue le recordset à la propriété Recordset de mon formulaire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| If Len(Me.OpenArgs) > 0 Then
Set odb = OpenDatabase(AppPath & "Entreprises_Base.mdb", False, False)
rsQuery = "SELECT * FROM ENTREPRISE WHERE ENTREPRISE_CLE=" & Me.OpenArgs
Set rstEts = odb.OpenRecordset(rsQuery, dbOpenDynaset)
Set Me.Form.Recordset = rstEts
Me.Form.Requery
Me.ENTREPRISE_CLE.Value = rstEts.Fields("ENTREPRISE_CLE").Value
Me.ENTREPRISE_CP.Value = rstEts.Fields("ENTREPRISE_CP").Value
rstEts.Close: Set rstEts = Nothing
odb.Close: Set odb = Nothing
Else
MsgBox "Nombre de paramètres insuffisants, l'ouverture des détails est impossible."
DoCmd.Close
End If |
Ce que je n'ai pas et que je souhaiterai avoir, c'est un remplissage "automatique" des champs de mon formulaire. Je m'explique: dans les propriétés d'un champ texte on trouve la Source qui peut être un champ et qui est très utile si la source du formulaire est une table. Mais ca ne fonctionne pas si la source du formulaire est définie sur un recordset.
Alors ma question est la suivante: comment remplir mes champs texte sans avoir à taper pour chacun (j'en ai un bonne centaine) la ligne
Me.NOM_DU_CHAMP.Value = rstEts.Fields("NOM_DU_CHAMP").Value
Merci beaucoup de votre aide et n'hésitez pas si vous avez des questions!
Partager