Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier des critères de requête identiques en une fois

16 réponses
Avatar
lograd
Bonjour.

Voila mon soucis, j'ai des requ=EAtes dans lesquelles j'ai ce crit=E8re :
entre 01/01/2008 et 31/01/2008
avec un autre : vrai.
Ce qui me permet d'avoir pour le mois de janvier 2008 toutes les cases
coch=E9es.
Mais pour le mois de f=E9vrier puis mars et ainsi de suite je suis
oblig=E9 de cr=E9er une requ=EAte identique mais en tapant =E0 chaque fois
ceci : entre xx/xx/xxxx et xx/xx/xxxx.
Et ceci autant de fois que j'ai de mois.

Auriez vous une id=E9es pour simplifier le probl=E8me, de plus je voudrais
que ces requ=EAtes me servent pour l'ann=E9e d'apr=E8s, donc le crit=E8res :=

entre xx/xx/2008 et xx/xx/2008 de pouvoir le changer =E0 ma guise en
fonction des ann=E9e sans devoirs me retaper une =E0 une les requ=EAtes.

Ais-je =E9t=E9 bien claire ?

Par avance merci.

10 réponses

1 2
Avatar
Richard_35
Bonjour Lograd,

Donc, ta requête devrait être du genre :

SELECT *
FROM Ta_Table
WHERE Ta_Table.Date Between #1/1/2008# And #1/31/2008#
AND Ta_Table.ChampVF=True;

Le plus simple serait de déclencher ta requête à la suite d'un
formulaire qui demanderait la saisie d'une date de début et d'une date de
fin :
- créer un formulaire avec 2 champs de type "date" : Date_debut et
Date_fin.
- modifier ta requête, par l'assistant, en remplaçant #1/1/2008# par
le champ Date_debut de ton formulaire et en remplaçant #1/31/2008# par le
champ Date_fin de ton formulaire.
Ensuite, à toi de voir sous quelle forme que tu veux le résultat de
cette requête.

Dis-nous et bon courage,
Richard.

"lograd" a écrit dans le message de news:

Bonjour.

Voila mon soucis, j'ai des requêtes dans lesquelles j'ai ce critère :
entre 01/01/2008 et 31/01/2008
avec un autre : vrai.
Ce qui me permet d'avoir pour le mois de janvier 2008 toutes les cases
cochées.
Mais pour le mois de février puis mars et ainsi de suite je suis
obligé de créer une requête identique mais en tapant à chaque fois
ceci : entre xx/xx/xxxx et xx/xx/xxxx.
Et ceci autant de fois que j'ai de mois.

Auriez vous une idées pour simplifier le problème, de plus je voudrais
que ces requêtes me servent pour l'année d'après, donc le critères :
entre xx/xx/2008 et xx/xx/2008 de pouvoir le changer à ma guise en
fonction des année sans devoirs me retaper une à une les requêtes.

Ais-je été bien claire ?

Par avance merci.
Avatar
lograd
Bonjour Richard et merci pour la réponse, qui demande réflexion.

Mais mon soucis est que cette requête est utilisée uniquement dans le
but de dénombrer le nombre de cases cochées.

Je m'explique; j'ai un formulaire avec des champs ' Zones de textes '
et dans ' Source contrôle ' j'utilise ma requête comme ceci pour
dénombrer : =CpteDom("[marine]";"[Req Demandes en Janvier Marine]").

Cela me donne un chiffre, ex:45.

Et ainsi de suite pour Février, Mars, avril etc.....

En fait ce Formulaire est un tableau fait de ' Zones de texte ' et
dans chaque ' Source contrôle ' =CpteDom("[marine]";"[Req Demandes en
Janvier Marine]").

Et en fin d'année, j'aimerais modifier toutes les requêtes en une
fois, sans devoirs retaper une à une ' entre 01/01/2008 et 31/01/2009
'.

Peut-être par l'intermédiaire de VBA ? ou en utilisant autre table ?

Je ne sais plus comment faire, ou peut-être revoir tout l'architecture
même de ma base ?

Merci de votre aide.
Avatar
Richard_35
Bonsoir Lograd,

Donc, si j'ai bien compris, le but est de remplir un formulaire
comportant 12 zones de texte (1 zone de texte par mois) avec le nombre de
cases cochées pour le mois correspondant.

Ai-je bien compris ?

A tout de suite,
Richard.

"lograd" a écrit dans le message de news:

Bonjour Richard et merci pour la réponse, qui demande réflexion.

Mais mon soucis est que cette requête est utilisée uniquement dans le
but de dénombrer le nombre de cases cochées.

Je m'explique; j'ai un formulaire avec des champs ' Zones de textes '
et dans ' Source contrôle ' j'utilise ma requête comme ceci pour
dénombrer : =CpteDom("[marine]";"[Req Demandes en Janvier Marine]").

Cela me donne un chiffre, ex:45.

Et ainsi de suite pour Février, Mars, avril etc.....

En fait ce Formulaire est un tableau fait de ' Zones de texte ' et
dans chaque ' Source contrôle ' =CpteDom("[marine]";"[Req Demandes en
Janvier Marine]").

Et en fin d'année, j'aimerais modifier toutes les requêtes en une
fois, sans devoirs retaper une à une ' entre 01/01/2008 et 31/01/2009
'.

Peut-être par l'intermédiaire de VBA ? ou en utilisant autre table ?

Je ne sais plus comment faire, ou peut-être revoir tout l'architecture
même de ma base ?

Merci de votre aide.
Avatar
lograd
Bien compris.
Avatar
lograd
Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.
Avatar
Richard_35
Bonjour Lograd,

Il suffit donc d'ajouter, à ce formulaire (celui qui contient les 12
zones de texte), un champ supplémentaire dans lequel tu saisiras une année
(Annee_saisie).

La valeur de tes zones de texte sera, pour janvier :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=1
AND Ta_Table.ChampVF=True ;


Pour février :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=2
AND Ta_Table.ChampVF=True ;

Etc...

Dis-nous et bon courage,
Richard.


"lograd" a écrit dans le message de news:

Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.
Avatar
lograd
On 24 mar, 15:50, "Richard_35" wrote:
Bonjour Lograd,

Il suffit donc d'ajouter, à ce formulaire (celui qui contient les 12
zones de texte), un champ supplémentaire dans lequel tu saisiras une ann ée
(Annee_saisie).

La valeur de tes zones de texte sera, pour janvier :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=1
AND Ta_Table.ChampVF=True ;

Pour février :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=2
AND Ta_Table.ChampVF=True ;

Etc...

Dis-nous et bon courage,
Richard.

"lograd" a écrit dans le message de news:

Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.


Merci pour la réponse, je vais essayer dès que possible.
Je reviendrais pour vous faire part de mes essais.

@+

Avatar
lograd
On 24 mar, 18:46, lograd wrote:
On 24 mar, 15:50, "Richard_35" wrote:



Bonjour Lograd,

Il suffit donc d'ajouter, à ce formulaire (celui qui contient les 12
zones de texte), un champ supplémentaire dans lequel tu saisiras une a nnée
(Annee_saisie).

La valeur de tes zones de texte sera, pour janvier :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=1
AND Ta_Table.ChampVF=True ;

Pour février :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=2
AND Ta_Table.ChampVF=True ;

Etc...

Dis-nous et bon courage,
Richard.

"lograd" a écrit dans le message de news:

Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.


Merci pour la réponse, je vais essayer dès que possible.
Je reviendrais pour vous faire part de mes essais.

@+


Bonjour Richard.

J'ai essayé, pour janvier j'ai donc écrit ceci dans ma requête :
SELECT Count([Tab Courrier Arrivé].marine) AS Nombredemande
FROM [Tab Courrier Arrivé]
WHERE (((Year([Tab Modif]=[Année]))<>False) AND ((Month([Tab
Modif]=1))<>False) AND (([Tab Courrier Arrivé].marine)=True));

Malheureusement le résultat est faux, le chiffre trouvé est éronnée.
De plus dans mon code j'ai " <>False qui apparait deux fois, et lors
du lancement de ma requête celle-ci me demande :
1) Entrée une valeur paramètre, Table modif
2) Entrée une valeur de paramètre, Année.

Pour l'année OK, mais pour la première valeur je ne comprend pas.
Dans ma Table courrier arrivée je veux compter toutes les cases
cochées Marine du mois de janvier, puis fevrier, puis mars etc... Mais
cela tu avais compris.

ALors ou ais-je fait une erreur.

Dans mon Formulaire j'ai déjà le fameux champs ' Année ', il est issu
de ma table ' Tab Modif '.

Suis-je claire ?

Je n'ai peut-être pas tout compris, détail un peu plus s'il te plait.

@+


Avatar
Richard_35
Bonjour Lograd,

1°/ Il y a des "<>False" de trop !
Remplacer :
WHERE (((Year([Tab Modif]=[Année]))<>False) AND ((Month([Tab
Modif]=1))<>False) AND (([Tab Courrier Arrivé].marine)=True));
Par :
WHERE (((Year([Tab Modif]=[Année]))) AND ((Month([Tab Modif]=1))) AND (([Tab
Courrier Arrivé].marine)=True));
==> Passe par l'assistant de requête et, ensuite, copie le code SQL
dans les valeurs de tes 12 champs.

2°/
1) Entrée une valeur paramètre, Table modif
==> cela veut que ACCESS ne trouve pas le champ "Table modif" :
erreur de syntaxe, je pense.
==> passe par l'assistant requête.
2) Entrée une valeur de paramètre, Année.

==> cela veut que ACCESS ne trouve pas le champ "Année" : erreur de
syntaxe, je pense.
==> passe par l'assistant requête.

3°/ Dans mon Formulaire j'ai déjà le fameux champs ' Année ', il est
issu
de ma table ' Tab Modif '.
L'année à saisir n'a rien à voir avec l'année de ta table "Tab
Modif".
Il s'agit de saisir l'année pour laquelle tu veux consulter le
nombre de cases cochées "Marine" par mois.
Cette année saisie sera comparée avec l'année de ta table "Tab
Modif".
==> il faut ajouter un champ à saisir (4 numériques).

Dis-nous et, toujours, bon courage,
Richard.


"lograd" a écrit dans le message de news:

On 24 mar, 18:46, lograd wrote:
On 24 mar, 15:50, "Richard_35" wrote:



Bonjour Lograd,

Il suffit donc d'ajouter, à ce formulaire (celui qui contient les 12
zones de texte), un champ supplémentaire dans lequel tu saisiras une
année
(Annee_saisie).

La valeur de tes zones de texte sera, pour janvier :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=1
AND Ta_Table.ChampVF=True ;

Pour février :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=2
AND Ta_Table.ChampVF=True ;

Etc...

Dis-nous et bon courage,
Richard.

"lograd" a écrit dans le message de news:

Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.


Merci pour la réponse, je vais essayer dès que possible.
Je reviendrais pour vous faire part de mes essais.

@+


Bonjour Richard.

J'ai essayé, pour janvier j'ai donc écrit ceci dans ma requête :
SELECT Count([Tab Courrier Arrivé].marine) AS Nombredemande
FROM [Tab Courrier Arrivé]
WHERE (((Year([Tab Modif]=[Année]))<>False) AND ((Month([Tab
Modif]=1))<>False) AND (([Tab Courrier Arrivé].marine)=True));

Malheureusement le résultat est faux, le chiffre trouvé est éronnée.
De plus dans mon code j'ai " <>False qui apparait deux fois, et lors
du lancement de ma requête celle-ci me demande :
1) Entrée une valeur paramètre, Table modif
2) Entrée une valeur de paramètre, Année.

Pour l'année OK, mais pour la première valeur je ne comprend pas.
Dans ma Table courrier arrivée je veux compter toutes les cases
cochées Marine du mois de janvier, puis fevrier, puis mars etc... Mais
cela tu avais compris.

ALors ou ais-je fait une erreur.

Dans mon Formulaire j'ai déjà le fameux champs ' Année ', il est issu
de ma table ' Tab Modif '.

Suis-je claire ?

Je n'ai peut-être pas tout compris, détail un peu plus s'il te plait.

@+


Avatar
Fabien
On 24 mar, 18:46, lograd wrote:
On 24 mar, 15:50, "Richard_35" wrote:



Bonjour Lograd,
Il suffit donc d'ajouter, à ce formulaire (celui qui contient les 12
zones de texte), un champ supplémentaire dans lequel tu saisiras une année
(Annee_saisie).
La valeur de tes zones de texte sera, pour janvier :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=1
AND Ta_Table.ChampVF=True ;
Pour février :
SELECT Count(*)
FROM Ta_Table
WHERE Year(Ta_Table.Date )=Annee_saisie
AND Month(Ta_Table.Date )=2
AND Ta_Table.ChampVF=True ;
Etc...
Dis-nous et bon courage,
Richard.
"lograd" a écrit dans le message de news:

Encore bien compris, avec dans chaque zone de texte l'utilisation de
ma requête comme indiqué plus haut.
Merci pour la réponse, je vais essayer dès que possible.

Je reviendrais pour vous faire part de mes essais.

@+


Bonjour Richard.

J'ai essayé, pour janvier j'ai donc écrit ceci dans ma requête :
SELECT Count([Tab Courrier Arrivé].marine) AS Nombredemande
FROM [Tab Courrier Arrivé]
WHERE (((Year([Tab Modif]=[Année]))<>False) AND ((Month([Tab
Modif]=1))<>False) AND (([Tab Courrier Arrivé].marine)=True));

Malheureusement le résultat est faux, le chiffre trouvé est éronnée.
De plus dans mon code j'ai " <>False qui apparait deux fois, et lors
du lancement de ma requête celle-ci me demande :
1) Entrée une valeur paramètre, Table modif
2) Entrée une valeur de paramètre, Année.

Pour l'année OK, mais pour la première valeur je ne comprend pas.
Dans ma Table courrier arrivée je veux compter toutes les cases
cochées Marine du mois de janvier, puis fevrier, puis mars etc... Mais
cela tu avais compris.

ALors ou ais-je fait une erreur.

Dans mon Formulaire j'ai déjà le fameux champs ' Année ', il est issu
de ma table ' Tab Modif '.

Suis-je claire ?

Je n'ai peut-être pas tout compris, détail un peu plus s'il te plait.

@+
Bonjour,

Une autre solution :
Une requete de type
SELECT Format([Tab Modif],"yyyymm") AS AnnéeMois, Count([Tab Courrier
Arrivé].marine) AS Nombredemande
FROM [Tab Courrier Arrivé]
Having [Tab Courrier Arrivé].marine=True and Year(Tab Modif]=Year(now())
GROUP BY Format([Tab Modif],"yyyymm")
ORDER BY Format([Tab Modif],"yyyymm");

Te donnes le comptage de tes
[Tab Courrier Arrivé].marine qui sont à vrai pour l'année en cours en
les regroupants par Année Mois
Ensuite tu ajoute a ton formulaire principal un sous-formulaire mode
continu basé sur cette requete qui filtre sur l'année en cours.
@+



1 2