OVH Cloud OVH Cloud

HELP!!! Requete Période à partir de 2 dates

10 réponses
Avatar
nat
Bonjour je repose ma question, parce que je gal=E8re trop...
=E7a se complique!!*%!
j'ai une table qui regroupe des p=E9riodes, je souhaite s=E9lectionner
une des p=E9riodes de ma table en rentrant une date de d=E9but et une
date de fin (non =E9crite dans la table). sachant que la deuxi=E8me date
peut =EAtre =E0 cheval avec une autre p=E9riode.

voici ma table [p=E9riode]
d=E9but fin
1-> 01/01/1936 31/12/1936
2-> 01/01/1937 31/12/1937
3-> 01/01/1938 30/06/1938
4-> 01/07/1938 31/12/1938
5-> 01/01/1939 31/12/1939
par exemple : si je saisi du 05/01/1936 au 25/01/1936, je
souhaiterai avoir toutes les p=E9riodes 1,2,3,4 dans ma requ=EAte
(01/01/1936 31/12/1936 -----01/01/1937 31/12/1937 ------
01/01/1938 30/06/1938 ----- 01/07/1938 31/12/1938)

Merci pour vos conseils=20
Nat=20

merci, pour votre aide

10 réponses

Avatar
Argyronet
Bonjour,

Je n'ai pas bien compris...
Ce que vous souhaitez, c'est retourner les enregistrements de chaque période
"du JJ/MM au JJ/MM" des 4 années spécifiées ? Donc ne pas tenir compte de
l'année stipulée mais prendre les 4, c'est cela ?

Argy
--
Mes tutoriels sur http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour je repose ma question, parce que je galère trop...
ça se complique!!*%!
j'ai une table qui regroupe des périodes, je souhaite sélectionner
une des périodes de ma table en rentrant une date de début et une
date de fin (non écrite dans la table). sachant que la deuxième date
peut être à cheval avec une autre période.

voici ma table [période]
début fin
1-> 01/01/1936 31/12/1936
2-> 01/01/1937 31/12/1937
3-> 01/01/1938 30/06/1938
4-> 01/07/1938 31/12/1938
5-> 01/01/1939 31/12/1939
par exemple : si je saisi du 05/01/1936 au 25/01/1936, je
souhaiterai avoir toutes les périodes 1,2,3,4 dans ma requête
(01/01/1936 31/12/1936 -----01/01/1937 31/12/1937 ------
01/01/1938 30/06/1938 ----- 01/07/1938 31/12/1938)

Merci pour vos conseils
Nat

merci, pour votre aide




Avatar
Eric
Bonjour,

J'ai du mal à comprendre ton exemple. A mon avis une seule période
peut-être retournée, la 1ère.
En lisant tes autres posts, cas de la période allant du 05/01/1936 et
03/01/1938, tu peux l'obtenir avec (adapter le nom de la table):

SELECT Début, fin
FROM Nat
where
début in(select début from nat where [DateDeDepart]<fin)
and
fin in(select fin from nat where [DateDeFin]>début)

Non ?

PS: y a peut-être plus simple !

Bonjour je repose ma question, parce que je galère trop...
ça se complique!!*%!
j'ai une table qui regroupe des périodes, je souhaite sélectionner
une des périodes de ma table en rentrant une date de début et une
date de fin (non écrite dans la table). sachant que la deuxième date
peut être à cheval avec une autre période.

voici ma table [période]
début fin
1-> 01/01/1936 31/12/1936
2-> 01/01/1937 31/12/1937
3-> 01/01/1938 30/06/1938
4-> 01/07/1938 31/12/1938
5-> 01/01/1939 31/12/1939
par exemple : si je saisi du 05/01/1936 au 25/01/1936, je
souhaiterai avoir toutes les périodes 1,2,3,4 dans ma requête
(01/01/1936 31/12/1936 -----01/01/1937 31/12/1937 ------
01/01/1938 30/06/1938 ----- 01/07/1938 31/12/1938)

Merci pour vos conseils
Nat

merci, pour votre aide



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
nat
j'ai trouvé!!!

critère date de début
Entre [formulaires]![agents]![début période 1] Et
[formulaires]![agents]![fin période 1]

critère date de fin
Entre [formulaires]![agents]![début période 1] Et
[formulaires]![agents]![fin période 1]

merci d'avoir pris le temps de me répondre
nat
Avatar
Eric
Bonjour,

Je suis surpris !!! ou alors je n'ai rien compris

si tu mets entre 03/01/36 et 25/01/36 sur les dates début et fin tu ne
récupères aucune valeur.
Et Entre #05/01/1936# Et #03/01/1938# en critère pour début et fin, tu
ne récupères que la période du 01/01/37 et le 31/12/37.
alors que tu voulais au départ afficher toutes les périodes allant du
Début fin
01/01/1936 31/12/1936
01/01/1937 31/12/1937
01/01/1938 30/06/1938

<copie msg>
ça se complique!!*%!
j'ai une table qui regroupe des périodes, je souhaite sélectionner
une des périodes de ma table en rentrant une date de début et une
date de fin (non écrite dans la table). sachant que la deuxième date
peut être à cheval avec une autre période.

voici ma table [période]
début fin
1-> 01/01/1936 31/12/1936
2-> 01/01/1937 31/12/1937
3-> 01/01/1938 30/06/1938
4-> 01/07/1938 31/12/1938
5-> 01/01/1939 31/12/1939
par exemple : je saisi début/01/1936 et fin%/01/1936, ma requête
doit sélectionner la période allant du 01/01/1937 au 31/12/1936
si je saisi 05/01/1936 et 03/01/1938, je souhaite avoir les périodes
01/01/1936 au 30/06/1938
</copie>

j'ai trouvé!!!

critère date de début
Entre [formulaires]![agents]![début période 1] Et
[formulaires]![agents]![fin période 1]

critère date de fin
Entre [formulaires]![agents]![début période 1] Et
[formulaires]![agents]![fin période 1]

merci d'avoir pris le temps de me répondre
nat



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
nat

Bonjour,

Je suis surpris !!! ou alors je n'ai rien compris

si tu mets entre 03/01/36 et 25/01/36 sur les dates début et fin tu ne
récupères aucune valeur.
Et Entre #05/01/1936# Et #03/01/1938# en critère pour début et fin, tu
ne récupères que la période du 01/01/37 et le 31/12/37.
alors que tu voulais au départ afficher toutes les périodes allant du
Début fin
01/01/1936 31/12/1936
01/01/1937 31/12/1937
01/01/1938 30/06/1938

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr


Pourtant ça marche, je pense que si je t'envoie le code ce sera plus
clair.

SELECT COTSS.début, COTSS.fin
FROM COTSS
WHERE (((COTSS.début) Between [formulaires]![agents]![début période
1] And [formulaires]![agents]![fin période 1])) OR (((COTSS.fin)
Between [formulaires]![agents]![début période 1] And
[formulaires]![agents]![fin période 1]));

je rentre début période/08/1936 et fin de période/08/1938, ce
qui me donne les plages de dates (provenant de la table COTSS) allant
du
1/> 01/01/1936 31/12/1936
2/> 01/01/1937 31/12/1937
3/> 01/01/1938 30/06/1938
4/> 01/07/1938 31/12/1938

j'ai tatonné pour y arriver, et ça marche.
Par contre actuellement je bosse pour essayer de faire en sorte
qu'access remplace les dates de début (01/01/1936) et de fin
(31/12/1938) par les dates que j'ai rentré dans mon formulaire
(18/08/1936 et 17/08/1938) sans modifier la table COTSS afin de pouvoir
la réutiliser plus tard.

Si tu as une idée ?
Merci
nat@+

Avatar
Gilles MOUGNOZ
Pourtant ça marche, je pense que si je t'envoie le code ce sera plus
clair.
SELECT COTSS.début, COTSS.fin
FROM COTSS
WHERE (((COTSS.début) Between [formulaires]![agents]![début période
1] And [formulaires]![agents]![fin période 1])) OR (((COTSS.fin)
Between [formulaires]![agents]![début période 1] And
[formulaires]![agents]![fin période 1]));
je rentre début période/08/1936 et fin de période/08/1938, ce
qui me donne les plages de dates (provenant de la table COTSS) allant
du
1/> 01/01/1936 31/12/1936
2/> 01/01/1937 31/12/1937
3/> 01/01/1938 30/06/1938
4/> 01/07/1938 31/12/1938
j'ai tatonné pour y arriver, et ça marche.
Par contre actuellement je bosse pour essayer de faire en sorte
qu'access remplace les dates de début (01/01/1936) et de fin
(31/12/1938) par les dates que j'ai rentré dans mon formulaire
(18/08/1936 et 17/08/1938) sans modifier la table COTSS afin de pouvoir
la réutiliser plus tard.
Si tu as une idée ?
Merci
nat@+


Bonjour, Nat

Pour que cela soit plus clair, je pense que tu devrais essayer d'exprimer
ton besoin réel en "Français".
J'ai suivi la conversation de loin et je trouve que les exemples que tu
donnes ne sont pas très parlant. Ce n'est pas de ta faute, c'est simplement
que rien ne ressemble plus à un chiffre qu'un autre chiffre (et c'est pire
avec les dates !).
Eric et Argyronet, avec toute leur bonne volonté, ont essayé de traduire en
langage naturel ta demande et tu leur réponds avec du SQL !
Tentons la démarche inverse: exprime ton besoin en langage naturel et
peut-être qu'il en ressortira un SQL... qui marche ! ;-)
S'agit-il de ressortir toutes les périodes qui "chevauchent" la période
saisie sur le formulaire ?

Bonne continuation

"Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire
arrivent aisément." Nicolas BOILEAU

Avatar
nat
dsl, si je me suis mal fait comprendre mais mon SQL fonctionne, c'est
l'essentiel.
Avatar
Eric
Re,

Ok, j'étais parti sur un ET pour les champs Début et Fin.
Mon PS n'était pas si inutile que ça finalement ;-)

Pour ton problème de date de début de la 1ere période et de fin pour la
dernière, je ferai un truc du genre, basé sur ton exemple :
SELECT IIf([Début]<#8/18/1936#,#8/18/1936#,[début]) AS [Periode Debut],
IIf([fin]>#8/17/1938# And [début]<#8/17/1938#,#8/17/1938#,[fin]) AS
[Periode Fin]
FROM Nat
WHERE (((IIf([Début]<#8/18/1936#,#8/18/1936#,[début])) Between
#8/18/1936# And #8/17/1938#)) OR (((IIf([fin]>#8/17/1938# And
[début]<#8/17/1938#,#8/17/1938#,[fin])) Between #8/18/1936# And
#8/17/1938#));

Tu devras modifier avec tes champs de formulaires.

La requête me retourne :
Periode Debut Periode Fin
18/08/1936 31/12/1936
01/01/1937 31/12/1937
01/01/1938 30/06/1938
01/07/1938 17/08/1938

sans modification des valeurs dans la table sous-jacente.



Pourtant ça marche, je pense que si je t'envoie le code ce sera plus
clair.
...
j'ai tatonné pour y arriver, et ça marche.
Par contre actuellement je bosse pour essayer de faire en sorte
qu'access remplace les dates de début (01/01/1936) et de fin
(31/12/1938) par les dates que j'ai rentré dans mon formulaire
(18/08/1936 et 17/08/1938) sans modifier la table COTSS afin de pouvoir
la réutiliser plus tard.

Si tu as une idée ?
Merci
nat@+



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
Manque une condition sur Periode Debut dans le iif

IIf([Début]<#8/18/1936# And [fin]>#8/18/1936#,#8/18/1936#,[début]) AS
[Periode Debut]


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
nat
Merci beaucoup
@bientôt