Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 00h19   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Par défaut Requête : Afficher les dates 4 mois avant

Bonjour,

J'ai une table "clients" et une table "produits".

Dans la table "produit", j'ai un champ "dates d’échéances".

Je souhaiterais effectuer une requête qui me permet d'afficher mes clients et les produits 4 mois avant la date d'échéance.

Donc afficher : Date d'échéance - 4 mois

Je ne sais pas quoi mettre dans la critère de la requête.

Merci
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 06h15   #2
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Bonjour
Il faut à la fois ressortir les dates d'échéance - 4 mois, mais également comparer par rapport à la date du jour.
Ce qui donne dans le critère avec le générateur:

Code :
Date()>AjDate("m";-4;[TaTable]![dates d’échéances])
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 08h16   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Merci de ta réponse.

donc si ma date d’échéance est au 1/4/2012, il me sortira tout les produits vendus avant le 31/12/2011 ?

Si maintenant je veux qu'il me sorte les résultats compris entre -4 mois et - 5mois ? (Dans mon exemple cela donnerait tous les produits vendus dans le mois de décembre) Comment je dois procéder ?

Merci

Ps : je dois faire une requête similaire sur des dates d'anniversaire. J'aimerais réaliser une requête qui m'affiche toutes les personnes qui vont avoir leur anniversaire avec 1 mois d'avance pour générer un état. Je dois procéder de la même façon ?
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 18h30   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Je viens de tester le code :

Code :
Date()>AjDate("m";-4;[TaTable]![dates d’échéances])
Mais il y a une erreur, il m'affiche que les produits compris dans les 4 mois.

Exemple :

Date d'échéance le 1/4/2012

Il m'affiche tous les produits entre le 1/1/2012 et le 1/4/2012
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 18h43   #5
Membre habitué
 
Alain
Inscription : septembre 2004
Messages : 206
Détails du profil
Informations personnelles :
Nom : Alain
Âge : 53
Localisation : France

Informations forums :
Inscription : septembre 2004
Messages : 206
Points : 142
Points : 142
Citation:
Envoyé par Gregk84 Voir le message
Je viens de tester le code :

Code :
Date()>AjDate("m";-4;[TaTable]![dates d’échéances])
Mais il y a une erreur, il m'affiche que les produits compris dans les 4 mois.
bonsoir,
tu peux tester l'ajout des limites dans 2 zones de texte
Code :
1
2
3
 
avant.Value = DateAdd("m", -4, [TaTable]![dates d’échéances])
apres.Value = DateAdd("m", 5, [TaTable]![dates d’échéances])
Puis traiter le contenu des zones
alainb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 22h13   #6
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Citation:
Envoyé par Gregk84 Voir le message
Il m'affiche tous les produits entre le 1/1/2012 et le 1/4/2012
Désolé mais j'ai cru que c'était ce qui était recherché...
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 22h30   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Bonjour GAYOT et les autres ^^

Ta réponse répond à une partie de mon problème. Sur les dates d'anniversaire.

Par contre, pour les dates d'échéances, je dois être informé entre le 5ème et le 4ème mois avant la date d'échéance.

Exemple :

Si la date d'échéance est le 1/4/2012

Je voudrais que la requête m'affiche les dossiers sur la période du 1/12/2011 au 31/12/2011 des contrats qui arriveront à échéance le 1/4/2012.

J'espère avoir été plus clair :-)
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 07h10   #8
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Bonjour
Si je comprends bien, il y a dans la table clients des dates de dossier différentes ayant la même échéance.
L'astuce consiste dans ta requête à transformer ces dates au premier de chaque mois.
par exemple le 01/12/2011, 02/12/2011, 15/12/2011 seront toutes converties au 01/12/2011. 04/11/2011, 07/11/2011 seront converties en 01/11/2011.

Pour ce faire:
Code :
SérieDate(Année([TaTable].[DateDossier]);Mois([TaTable].[DateDossier]);1)
Tu auras donc des dates au premier de chaque mois, très facilement comparables à la date d'échéance en t'aidant du code mentionné plus haut.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h38   #9
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Citation:
Envoyé par GAYOT Voir le message
Bonjour
Si je comprends bien, il y a dans la table clients des dates de dossier différentes ayant la même échéance.
Bonjour GAYOT

Ce n'est pas tout à fait ca

J'ai deux tables : Clients et Produits

Dans la table clients, j'ai toutes les informations du client

Dans la table produits, j'ai les produits acheté par un client (il s'agit de police d'assurance)

Dans la table produits, j'ai un champ "Date d'échéance" qui m'informe de la date ou le produit sera automatiquement reconduit pour 1an.

Si je veux faire une modification sur une police d'assurance ou la supprimer, je dois le faire 3mois avant la date d'échéance.

D’où mon souhait d'arriver à lister tous les produits dont la date d'échéance va arriver. Et j'aimerais le faire entre le 5ème mois et le 4mois avant la date d'échéance. (Pour être avant ce fameux délais de 3mois)

Je suis plus clair ?
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 09h58   #10
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Donc la date d'échéance peut être 01/04/12 02/04/12 ou 28/04/12?
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 18h13   #11
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Citation:
Envoyé par GAYOT Voir le message
Donc la date d'échéance peut être 01/04/12 02/04/12 ou 28/04/12?
Oui elle peut être n'importe quand dans le mois

Et comme les contrats peuvent être signé toute l'année, la date d'échéance peut tomber n'importe quel mois et n'importe quel jour du mois.

Par contre, l'année n'est pas importante. Car il faut faire cette vérification chaque année...
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 18h25   #12
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Il faut donc appliquer sur les dates d'échéance la technique que je t'ai indiqué. Dans ta requête il faut comparer par rapport aux dates d'échéance ramenées au premier du mois.

La comparaison sera alors facile.

Par exemple une table Tbl_Echeances:



Une requête:



Et voici le résultat:



Toutes les échéances correspondant au mois de Mai ou Juin n'apparaissent pas. Ceci quelle que soit la date du jour pendant le mois de Janvier.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 22h55   #13
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
J'ai fais la même chose que toi et je n'obtiens pas le même résultat ... je ne comprend pas mon erreur...

Je te montre :

1) 1 table produits qui comprend des dates d'échéances



2) 1 requête



Dont voici le code :

Code :
>AjDate("m";-3;SérieDate(Année([Produits].[Date d'échéance]);Mois([Produits].[Date d'échéance]);1))
3) Les résultats



Les résultats affichés devraient commencer à partir du 17 avril 2012 et afficher toutes les dates d'échéances jusqu'au 17 juin 2012.

Nous somme le 17/01/2012 + 3 mois = 17 avril 2012

(Note : Et dans la pratique, comme on doit agir sur les polices avant 3 mois, je dirait même qu'il faudrait prévoir du 17 mai 2012 au 17 juillet 2012.)

Merci
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 06h09   #14
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 076
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 076
Points : 4 396
Points : 4 396
Envoyer un message via Skype™ à GAYOT
Bonjour
Décidément, je n'ai rien compris à ce que tu demandes.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 09h04   #15
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Citation:
Envoyé par GAYOT Voir le message
Bonjour
Décidément, je n'ai rien compris à ce que tu demandes.
Je me suis peut être mal exprimé aussi... Ce que j'aimerais réaliser est clair dans ma tête, maintenant ce n'est pas toujours évident de le retranscrire.

En tout cas merci pour le coup de mains
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 18h17   #16
Invité de passage
 
Inscription : janvier 2011
Messages : 79
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 79
Points : 4
Points : 4
Voici une explication plus clair du problème :

Dans ma table produit, j'ai une date d'échéance qui est variable pour chaque produits.

J'aimerais que la requête affiche les contrats dont la date d'échéance va arriver dans 4 mois.

Exemple :

Date du jour : 18/01/2012

Les contrats qui devront être affichés sont : Date du jour + 4 mois.

Donc les contrats affichés seront ceux ou la date d'échéance commence à partir du : 18/05/2012

Pour ne pas avoir tous les contrats listés dans ma requêtes. J'aimerais qu'elle ne s'applique que sur 2mois.

Donc les contrats affichés seront ceux ou la date d'échéance commence à partir du : 18/05/2012 jusqu'au 18/07/2012.

Solution :

Citation:
Entre AjDate("m";+4;Date()) Et AjDate("m";6;Date())
Merci GAYOT pour ton aide ^^
Gregk84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h16.


 
 
 
 
Partenaires

Hébergement Web