[ACCESS] Boîte dialogue alimentée pr variable

Résolu/Fermé
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
- 6 mai 2006 à 01:19
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
- 11 mai 2006 à 23:02
Bonjour,

Afin d'obtenir des résultats mensuels, 3 requêtes permettent d'obtenir ces résultats . Les critères de ces requêtes sont basés sur le mois concerné ou le mois suivant.
Le problème est que pour que le tout fonctionne il faut entrer plusieurs fois au clavier les critères " mois concerné" .
Comment peut-on remplacer ces saisies répétitives par une seule? L'idée est de stocker la valeur de la première dans une variable et la réintégrer dans les boites de dialogues suivantes par programmation;.
Pouvez-vous m'aider pour traduire l'idée en code ?

Merci d'avance .

9 réponses

GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
11 mai 2006 à 23:02
bonjour ,

Euréka , j'ai trouvé.
Pour ceux que ça intéresse ,je mets le code ci-dessous.

Détail de l'affaire:

Sur F_monformulaire mettre contrôle indépendant
Avec nom : MOISCONCERNE


Affecter à un bouton du formulaire une macro exécutant exécutant les requêtes nécessaires à l’arrêté R_Entrées, R_Sorties, R_Stocks

Critère à noter dans les requêtes
dans le champ dateentree
Comme [Forms]![F_monformulaire].[MOISCONCERNE]


Sorties dans le champ datesortie:
Comme [Forms]![F_monformulaire].[MOISCONCERNE]


et stocks
dans le champ dateentrée ( mois suivant le mois d’arrêté):
<=AjDate("m";1;[Forms]![F_monformulaire].[MOISCONCERNE])


et dans le champ date sortie :
Est Null Ou >=AjDate("m";1;[Forms]![F_monformulaire].[MOISCONCERNE])


Un état avec comme source une requête R_RésultatsMensuels issus des 3 requêtes précédentes permet d’obtenir les résultats souhaités en terme d’entrée de sortie et de stocks résiduels en fonction du mois d’arrêté choisi.

La difficulté comme d’habitude avec ACCESS est de trouver les bonnes syntaxes pour concrétiser les idées.
il m’a fallu, effectivement, passer par un contrôle indépendant , et des critères ou le signe = a du être remplacé par Comme et ou le mois suivant est obtenu au moyen de la fonction AjDate.

Merci à zenon de m’avoir mis sur la voie.

Ce système fonctionne parfaitement et supprime les 4 inputbox qui sollicitaient les paramètres , ce qui va beaucoup plus vite et évite ainsi les erreurs de saisies potentielles du mois d’arrêté.
1
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
6 mai 2006 à 16:09
Salut,


Tu pourrais demander la saisie de la date dans un champ texte indépendant et faire référence à la valeur de ce champ dans ton code.

Par exemple, si tu as des requêtes avec un critère. A l'ouverture Access te demande la valeur du critère. Tu peux la lui fournir avec une condition WHERE du type: DateRecherchée=Forms!NomDuForm!NomDuChampTexte
0
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
7 mai 2006 à 01:26
merci zenon de ta réponse.


Tu suggères de passer par un champ texte indépendant et de faire référence à la valeur de ce champ dans mon code.
C'est bien là le problème , je ne sais pas remplacer une boite de dialoque par un champ texte dont la valeur saisie pourrait être utilisée dans les autres requêtes.
De plus je ne sais pas ni quel code mettre , ni ou le mettre.

pourrais-tu me montrer un exemple?
0
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
7 mai 2006 à 11:32
Bin, ça dépend... Comment procèdes-tu actuellement?

Tu pourrais par exemple partir d'un formulaire muni de boutons de commande permettant d'appeler les différentes requêtes. Tu peux ajouter un champ texte indépendant (qu'on appellerait "RechercheDate" dans lequel tu entres la date.

Tes requêtes peuvent être créées avec l'assistant graphique. Dans ce cas tu inclus le champ "date" de ta table et en regard de "critère" tu tapes "=RechercheDate" (sans les guillements).
En mode SQL ça donne: SELECT... ...WHERE "NomDuChampContenantLaDate=RechercheDate"; (Bien sûr, tu dois mettre tes propres critères)

Dans ta situation actuelle, demandes-tu l'affichage d'une InputBox pour entrer la date ou la boite s'affiche-t-elle automatiquement à l'ouverture de ta requête? Dans ce dernier cas, c'est parce qu'Access ne trouve pas le critère de recherche. Si tu le lui indique comme proposé plus haut la boite ne devrait plus s'afficher.
0
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
7 mai 2006 à 19:03
bonjour zenon, je crois que je n'arrives pas à m'expliquer
Dans mes requêtes successives j'ai mis comme critère dans les champs mois :
[ENTREZ MOIS CONCERNE sous la forme mois année] pour la requête concernant les entrées et [ENTREZ MOIS CONCERNE sous la forme mois année] pour la requête concernant la sortie puis [ENTREZ le MOIS suivant celui CONCERNE ] pour la requête concernant le stock.
De ce fait s'affichent 3 input box que l'utilisateur doit saisir. le résultat de ces requêtes sont exactement ce que je veux obtenir ; Toutefois , je voudrais donc que l'utilisateur ne saisisse qu'1 fois le mois de la première requête et que ce critère soit ré-utilisé par access pour exécuter les 2 autres ( la troisième a besoin du critère mois suivant )
Je pense qu'une variable devrait faire l'affaire mais je ne vois pas toujours pas comment faire).
0
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
7 mai 2006 à 19:33
Bien, je pense que la solution que je te propose devrait fonctionner...

Access peut simplement utiliser la valeur du champ texte eu lieu et place de la valeur renvoyée par l'input box.

Si cela ne te convient pas, tu peux déclarer une variable

dim DateRech As Date

puis lui attribuer une valeur:

DateRech = InputBox...

Puis tu utilises simplement la valeur de DateRech dans tes critères de tri.

mais ce n'est pas très "transparent": l'utilisateur ne sait pas ce que contient la variable. Ca implique aussi que l'utilisateur utilise toujours le formulaire dans le même ordre sinon, à moins de prévoir un bloc If dans le code de chaque bouton pour vérifier si la variable a été initialisée.
0
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
7 mai 2006 à 20:39
Merci
je vais travailler la-dessus et je te tiens au courant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
9 mai 2006 à 00:09
bon , me revoila.

désolé , je n'y arrives pas .

j 'ai essayé de mettre un champ indépendant sur un formulaire et de faire référence à ce champ pour que les requêtes prennent le mois en considération ; mais j'ai aussi créé un module pour créer la variable mais les inputbox apparaissent toujours , le tout ensemble ne fonctionne pas , séparément non plus d'ailleurs.

Function ARRETE()
Dim MOISCONCERNE As Date
MOISCONCERNE = InputBox("ENTRER LE MOIS CONCERNE", "RESULTATS MENSUELS", Default, 100, 100)
End Function


dans 2 requêtes j'ai mis come critère :
"=Forms!F_monformulaire!MOISCONCERNE"


et dans celle qui doit prendre en compte le mois suivant j'ai mis :

<"=Forms!F_monformulaire!MOISCONCERNE"+1


peux-tu m'aider ?
0
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
9 mai 2006 à 08:59
Si j'ai bien compris, tu as des boutons de commande qui appellent les requêtes.

C'est directement dans les requêtes que tu devrais faire référence aux critères.

Si tu travailles avec l'assistant, dans le champ "critères" (partie inférieure du tableau) et dans la colonne où tu veus appliquer le tri, tapes la référence à la date recherchée (le nom du champ indépendant): =Forms!NomDuFormulaire!NomDuChamp

Normalement ça doit fonctionner sinon, c'est que les noms du formulaire ou de champ ne sont pas corrects ou qu'ils contiennent des espaces et que tu n'as pas mis de crochets([])...

Si tu travailles en mode SQL, tu dois avoir une condition Where du type: SELECT... WHERE "NomDuChampSurLequelTuVeuxTrier = Forms!NomDuFormulaire!NomDuChampIndépendant";
0
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
9 mai 2006 à 23:44
   Si j'ai bien compris, tu as des boutons de commande qui appellent les requêtes.


j'ai en effet un bouton qui sur clic exécute les requêtes 1 , 2 et 3

j'ai mis les crochets et inscrits les codes dans les critères des requêtes mais lorsque je lance ces requêtes , une input box s'affiche Entrez la valeur du paramètre
 = MOISCONCERNE+1 


Si je mets mai 2006 , access me réponds type de données incompatible dans l'expression du critère .

Et je suis pas plus avancé.....
0
GUYSYS
Messages postés
27
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
2 septembre 2006
11
10 mai 2006 à 00:48
Bon , en retravaillant un peu la syntaxe et sans passer par input box , il y a du mieux; les requêtes sur le mois concerné fonctionnent mais celles sur le mois suivant non.
en fait j'ai entré comme criTère de requête pour le mois suivant:
=[Forms]![F_monformulaire].[MOISCONCERNE]+1


c'est le + 1 qui bloque semble-t-il .

car les critères basés sur le code du mois saisi dans le contrôle indépendant fonctionnent.
=[Forms]![F_monformulaire].[MOISCONCERNE]


Comment peut-on coder le mois qui suit celui saisi.

Les 2 premières requêtes fonctionnent avec MOISCONCERNE sous la forme mmmm\aaaa ex: avril 2006 , mais je voudrais obtenir le mois suivant c'est à dire mai 2006 à partir de la variable MOISCONCERNE .
Et apparemment MOISCONCERNE +1 ne donne pas mai 2006....

merci d'avance .
0
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
182
10 mai 2006 à 09:33
En effet, je pense que tu devais essayer:
Mois(MOISCONCERNE) + 1

mais peut-être devras-tu modifier le premier terme de ton critère pour qu'il ne renvoie lui aussi que le mois...
0