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 16/10/2011, 16h31   #1
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Par défaut Requête sur dates

Bonjour à toutes et à tous,

Je travaille sur Access 2010 et voici mon souci.

J’ai une table avec des noms date entrée et date de sortie etc

Dans une requête j’ai des dates d’entrées :
Exemple
DateEntree
02/11/2010
29/07/2011
05/05/2011
07/07/2011
13/07/2011

Je souhaiterais connaître le nombre total de jours effectués entre le 01/07/2011 et 31/07/2011
Dans ma requête regroupement, deux champs
DateEntree avec comme critère entre #01/07/2011# et #31/07/2011#
Champ calculé : nbrejour: Somme(#31/07/2011#-[DateEntree])
J’obtiens :
DateEntree nbrejour
07/07/2011 24
13/07/2011 18
29/07/2011 2

Je devrais obtenir
02/11/2010 30
29/07/2011 2
05/05/2011 30
07/07/2011 24
13/07/2011 18

Soit un total de 104 jours

Pouvez-vous m’aider à résoudre ce problème.

Merci à tous
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 16h42   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 623
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 623
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Le nombre total de jour entre deux dates est donc une différence.

Voilà un tuto à lire : http://mhubiche.developpez.com/vba/f...ions/datetime/

Et cette partie : http://mhubiche.developpez.com/vba/f...tetime/#LIII-D

La fonction DateDiff est à voir, une recherche sur le forum avec cette fonction te donnera un nombre important de trucs et astuces.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 17h25   #3
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Oui,

Je dirais comme Philippe que la fonction DateDiff est une clé du problème, mais que ce genre de problème est en général assez tordu pour un non initié
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 18h22   #4
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Par défaut Requête sur dates

Bonjour,

Comme conseillé je suis allé voir sur le forum et voici mon premier essai (ce n’est pas évident effectivement pour une non initiée)

Requête
Champs jours: jours :VraiFaux([DateEntree]>#01/07/2011#;DiffDate("j";#01/07/2011#;[DateEntree]);DiffDate("j";[DateEntree];#01/07/2011#))

Champs jours 2 :
jours2: vraiFaux([DateEntree]>#31/07/2011#;DiffDate("j";#31/07/2011#;[DateEntree]);
DiffDate("j";[DateEntree];#31/07/2011#))

Champs total jours :
total jours : vraiFaux([jours2]<[jours];[jours2];VraiFaux([DateEntree]<#31/07/2011#;Abs([jours2]-[jours]);[jours2]))

J’obtiens :
Requête1
DateEntreeCHRS jours jours2 tota2l jours
07/07/2011 6 24 18
13/07/2011 12 18 6
02/08/2011 32 0 0
05/05/2011 57 87 30
29/07/2011 28 2 2
29/08/2011 59 0 0
02/11/2010 241 271 30
06/12/2010 207 237 30



Le résultat est juste mais cela me semble bien compliqué ! Y-a-t ’il une autre méthode qui me permettrai d’obtenir directement la somme soit 116 jours.

De plus si je dois modifier les dates d’intervalles ici du 1er juillet au 31 juillet et demander du 1er janvier au 31 juin obligation de venir modifier les formules. Requête paramétrée impossible dans ce cas ?

Merci encore pour votre aide.
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 19h16   #5
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Re,

Et tu ne te sers pas du champ DateSortie ?
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 21h08   #6
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Merci,

Je crois que je suis allé un peu vite, effectivement j'ai oublié la date de sortie.

Mais est-ce que mon raisonnement est juste ? n'y a t-il pas une méthode plus rapide pour arriver à ce résultat ?

Merci
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 21h15   #7
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Re,

Est-ce que tu connais le VBA ?

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 21h23   #8
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
En gros l'idée est la suivante :

Suppose que Date1 est le 1er jour du mois
et Date2 le dernier jour du mois.

Alors il faut énumérer les cas possibles :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 si (Date1 <= DateEntree) et (Date2 >= DateSortie) alors
 
      CompteJours = DateDiff("d", DateEntree, DateSortie)
 
  sinon si (Date1 > DateEntree) et (Date2 <= DateSortie) alors
 
      CompteJours = DateDiff("d", Date1, Date2)
 
   sinon si (Date1 > DateEntree) et (Date1 < DateSortie) alors
 
      CompteJours = DateDiff("d", Date1, DateSortie)
 
   sinon si (Date2 > DateEntree) et (Date2 <= DateSortie) alors
 
      CompteJours = DateDiff("d", DateEntree, Date2)
 
   fin si
Est-ce que tu comprends ?
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 12h54   #9
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Bonjour,

Merci beaucoup pour votre aide. Je connais un petit peu VBA sur Excel.

Je pense qu'ici il faut utiliser If Then.....

Je vais donc essayé et vous tiens au courant.

encore merci
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 16h35   #10
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Bonjour,

Désolée de reprendre le fil seulement aujourdh'ui, mais j'ai dû faire un petit séjour à l'hopital..... Veuillez m'excuser.

J'ai préparé ce bout de code comme conseillé mais je ne sais pas du tout ou le mettre. En clair je ne sais pas lancer une requête en VBA. J'ai vu la commande Docmd pour ouvrir un formulaire mais la j'avoue je sèche.

voici le texte du code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
If(Date1<=DateEntree) et (Date2>=DateSortie) Then
 
            Comptejours=DateDiff("d",DateEntree,DateSortie
 
ElseIf (Date1>DateEntree) and (Date2<=DateSortie Then
 
    Comptejours=Datediff(“d”,Date1,Date2)
 
ElseIf ((Date1 > DateEntree) and (Date1 < DateSortie) Then
 
    CompteJours = DateDiff("d", Date1, DateSortie)
 
ElseIf (Date2 > DateEntree) and (Date2 <= DateSortie) Then
 
             CompteJours = DateDiff("d", DateEntree, Date2)
 
End If
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 22h18   #11
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Salut,

Procédons par étape :

D'abord il te faut créer un module :

Onglet "Module", puis nouveau...

Puis, dans le module mettre le code de la fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Function Comptejours (Date1 as date,Date2 as date,DateEntree as date,DateSortie as Date) as long 
 
If(Date1<=DateEntree) et (Date2>=DateSortie) Then
 
    Comptejours=DateDiff("d",DateEntree,DateSortie)
 
ElseIf (Date1>DateEntree) and (Date2<=DateSortie) Then
 
    Comptejours=Datediff("d",Date1,Date2)
 
ElseIf ((Date1 > DateEntree) and (Date1 < DateSortie) Then
 
    CompteJours = DateDiff("d", Date1, DateSortie)
 
ElseIf (Date2 > DateEntree) and (Date2 <= DateSortie) Then
 
    CompteJours = DateDiff("d", DateEntree, Date2)
 
End If 
 
End function
A+

Denis
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 08h59   #12
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
tout d'abord encore merci pour ton aide

comme expliqué, j'ai copié le code dans un module de ma base. Comment utiliser cette fonction ? Merci et bonne journée
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h39   #13
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Salut,

Dans une requête tu crées un champ calculé comme suit :

Code :
Jours : Comptejours(DateSerial([Annee];[Mois];1);DateSerial([Annee];[Mois]+1;0);[DateEntree];[DateSortie])
Ici je suppose que ta requête a 2 paramètres : [Mois] et [Année]

et ta table source à 2 champs : [DateEntree] et [DateSortie].

A l'ouverture elle va te demander les 2 paramètres [Mois] et [Année], tu rentres par exemple 7 et 2011 et tu me dis ce qu'il se passe...

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 11h58   #14
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
bonjour,

lorsque je lance la requête il m'est demandé de rentrer l'année le mois puis dateentrée et datesortie

je rentre 2011 puis 7 pour le mois
dateentree 01/01/2011
datesortie 31/07/2011
le résultat me donne

Dateentree DateSortie jours
07/07/2011 12/07/2011 0
13/07/2011 28/07/2011 0
02/08/2011 0
05/05/2011 12/06/2011 0
29/07/2011 16/08/2011 0
29/08/2011 14/09/2011 0
02/11/2010 20/07/2011 0
06/12/2010 09/10/2011 0

je souhaiterais obtenir la somme des jours entre le 1er juillet et le 31 juillet

Date1 et Date2 étant modifiables soit du 1er juin au 31 aout etc

encore merci
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 12h40   #15
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Re,

Peux-tu me donner la liste des champs de ta table source ?

Merci,

Sinon pour choisir Date1 et Date2, il faut mettre :

Code :
Jours : Comptejours(Date1;Date2;[DateEntree];[DateSortie])
Sous réserve que les champs [DateEntree] et [DateSortie] existe dans la table source...

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h59   #16
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
voici la liste des champs de la table source et table lien

Merci

T_Lien_DateEntree

ID(clé primaire)
IDResidant
IDTypeAccueil
DateEntree
DateSortie
IDMotifSortie
TotalSéjour


Table: T_Résidants

IDRésidants (clé primaire
IDDateEntreeCHRS
Dossier_Ouvert_par
DateEntretien
Nom
Prénom
Autres Prénoms
DateEntree
DateSortie
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 18h52   #17
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Salut,

Tu as [DateEntree] et [DateSortie] dans les 2 tables, il peut y avoir confusion...

Essaie ceci :

Code :
Jours : Comptejours(Date1;Date2;T_Lien_DateEntree.[DateEntree];T_Lien_DateEntree.[DateSortie])
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 08h59   #18
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Bonjour,

Effectivement les champs DateEntree et DateSortie ne devaient se trouver dans la table résidants Merci.

Dans cette requête je ne souhaite pas renseigner la date d'entrée et la date de sortie. Je veux juste calculer le nombre de jours de présence sur une période donnée.


Encore merci et bonne journée
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 17h49   #19
Invité régulier
 
Pascale VASNIER
Inscription : avril 2010
Messages : 43
Détails du profil
Informations personnelles :
Nom : Pascale VASNIER

Informations forums :
Inscription : avril 2010
Messages : 43
Points : 6
Points : 6
Par défaut requête sur date

bonjour à toutes et à tous,

Il y a quelque temps vous m'aviez aidé pour le code d'une requête avec champs dates. Jusqu'à présent les champs dates étaient toujours remplis (à tort). Maintenant je rencontre un problème lorsque j'exécute ma requête les enregistrements qui n'ont pas de date de sortie indiquent Erreur. Voici le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function CompteJours1(Date1 As Date, Date2 As Date, DateEntree As Date, DateSortie As Date) As Long
 
If (Date1 < DateEntree) And IsNull(DateSortie) Then
   CompteJours1 = DateDiff("d", DateEntree, Date2)
ElseIf (Date1 > DateEntree) And IsNull(DateSortie) Then
   CompteJours1 = DateDiff("d", Date1, Date2)
ElseIf (Date1 <= DateEntree) And (Date2 >= DateSortie) Then
    CompteJours1 = DateDiff("d", DateEntree, DateSortie)
ElseIf (Date1 > DateEntree) And (Date2 <= DateSortie) Then
    CompteJours1 = DateDiff("d", Date1, Date2)
ElseIf (Date1 > DateEntree) And (Date1 < DateSortie) Then
    CompteJours1 = DateDiff("d", Date1, DateSortie)
ElseIf (Date2 > DateEntree) And (Date2 <= DateSortie) Then
    CompteJours1 = DateDiff("d", DateEntree, Date2)
ElseIf (Date2 >= DateEntree) And (Date2 < DateSortie) Then
    CompteJours1 = DateDiff("d", DateEntree, Date2)
ElseIf (Date1 < DateEntree) And (Date2 < DateSortie) Then
    CompteJours1 = 0
ElseIf (Date2 < DateEntree) Then
     CompteJours1 = 0
 
End If
Je ne vois pas où est l'erreur Merci pour votre aide
momoju est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h22.


 
 
 
 
Partenaires

Hébergement Web