Bonjour,
Peut ton faire une requête a partir de critères sélectionnés dans un formulaire et se servir du résultat de la requête pour générer un Etat??
Si oui, quelle est la méthode à utiliser?
Merci d'avance pour votre aide.
Isa
Version imprimable
Bonjour,
Peut ton faire une requête a partir de critères sélectionnés dans un formulaire et se servir du résultat de la requête pour générer un Etat??
Si oui, quelle est la méthode à utiliser?
Merci d'avance pour votre aide.
Isa
Bonjour,
Oui c'est possible le sujet a été abordé (et est encore d'actualité) dans de nombreux posts ainsi que dans la faq.
Une petite recherche dans le forum et la faq te donnerons la (ou les) solutions.
Cordialement,
Ok, merci.
Je vais reprendre mes recherches, mais il me semble avoir déjà pas mal parcouru la F.A.Q. et cela en vain..... :oops:
En ce moment il y a celui-là mais en tapant Etat Critere tu devrais en trouver beaucoup +. ;)
http://www.developpez.net/forums/sho...%E9tat+critere
Bon j'ai continué mes recherches, je pense que j'ai a peu près compris le principe mais il me manque toujours le plus important!!
Comment fait-on pour affecter une variable à un champ de l'état????
C'est un peu vague.
Que souhaites-tu faire exactement ?
Alors j'ai le champs eText1 sur mon état et j'aimerais lui affecter le résultat d'une requête (rs.Fields("Champ1").Value.
SI ton état est basé sur une requête, tu peux créer une fonction dans un module qui te renverra la valeur dans la requête de base de l'état...
Heu, je dois être un peu neuneu mais avec un petit exemple ca donne quoi????
Je n'ai jamais fais de VBA et je suis complètement perdue....
:oops:
Exemple (pa forcément pertinent)
Tu veux obtenir la liste des factures pour tout tes clients. Tu recherche donc les infos dans ta table facture
Mais tu veux obtenir en plus sur chaque ligne, la date de la dernière facture pour chaque client. on va donc créer une fonction dans un moduleCode:
1
2
3 SELECT FACTURE.NUM, FACTURE.DATE, FACTURE.CLIENT FROM ...
et donc au final ta requête :Code:
1
2
3
4
5
6 Public Function DerniereFac(Client As String) AS Date 'On fait le code qui recherche la facture... End Function
J'espere être assez clair...Code:
1
2
3
4 SELECT FACTURE.NUM, FACTURE.DATE, FACTURE.CLIENT, DerniereFac([FACTURE]![CLIENT) AS DERNIERE_FACTURE FROM ...
Et pour afficher dans mon champ eText1 la valeur de DERNIERE_FACTURE
retrournée par la requête, je fais comment???
Ben c'est en fait une valeur retournée par la requête de ton état.
A noter que tu peux également mettre dans la source de ton contrôle sur l'état la fonction de ton module. Tu peux même appeler ta fonction en envoyant en paramètre une valeur d'un champ de l'état
Mais ce que je souhaite c'est tout faire dans le code, ne pas attacher de requête a l'état.
Et ce que je ne vois pas c'est comment affecter une valeur a un champ de l'état.
J'ai essayé eText1.value = "1", mais j'ai une erreur...
Dans ce cas précis je ne sais pas comment affecter une valeur à un controle. En revanche tu peux utiliser un texte simple (étiquette) et mettre ta valeur
Code:
1
2Me.Étiquette1.Caption = "1"
Jusque là c'est normal et logique ! non ?
Un état c'est fait pour afficher des données pas pour les renseigner.
Mais alors je fais comment pour structuer mon état avec des requêtes créées dans le code VBA???
Dans l'événement Sur Formatage de la zone Détails (en espérant que ton controle eText1 y soit)
Ouvre un recordset à partir de ta requete.
faire la rechercheCode:
1
2
3 Dim rst as recordset set rst = currentdb.openrecordset("Marequete")
on trouveCode:rst.find "monchamp=" & mavaleur
on affecteCode:if not rst.nomatch then
et comme on est propre et qu'on laisse pas le caca du chien sur le trottoir on nettoie avant de sortirCode:
1
2 me.eTexte1 = rst.fields(x) endif
Maintenant eText1 ne doit pas être lié à un champ source sinon ça marche pas.Code:
1
2 rst.close set rst = nothing
Cordialement,
Et comment on fait quand on a plusieurs lignes retrounées par la requête et que l'on veut avoir a chaque fois un nouveau détail....
A mon avis tu t'embarques dans quelque chose de compliqué en ne partant pas d'une requête dans ton état.
Pour pouvoir générer autant de détail que d'enregistrement il faut lier ta reqûete sur la source de l'état
En fait mon problème c'est que je dois faire une gestion des statistique et je n'ai pas envie de créer toutes les requêtes car il y aura vraiment beaucoup de critères de sélection.... Je pensais pouvoir faire mes etat tout en requête.
Donc ce n'est pas possible, faut que je créé toutes mes requêtes et tous mes états??