Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 29/11/2010, 12h41   #1
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Par défaut Jeux des dates

Bonjour,

Voici mon dernier soucis :

Je dispose d'un planning dont les dates de 5 jours de la semaine sont enregistrés dans les champs d'un formulaire.

Un test permet de vérifier pour chaque semaine si un rendez-vous est pris. Ces rendez-vous peuvent être d'une journée ou alors de plusieurs journée d'où le code suivant :

Code :
1
2
3
4
5
6
7
8
TST = "Select HP, Société, Contact, Type_2, Type_1 From " & SourceTable & " WHERE Validation LIKE '" & 1 & "' And Fix(JH_1) = '" & Lundi.Value & "' And Fix(JH_2) = '" & Lundi.Value & "' And Heure_Début <= '908' And Heure_Fin >= '908' 
 
OR (Validation LIKE '" & 1 & "' And Fix(JH_1) = '" & Lundi.Value & "' And Fix(JH_2) <> '" & Lundi.Value & "'And Heure_Début <= '908')
 
OR (Validation LIKE '" & 1 & "' And Fix(JH_1) <> '" & Lundi.Value & "' And Fix(JH_2) = '" & Lundi.Value & "'And Heure_Fin >= '908') 
 
OR (Validation LIKE '" & 1 & "' And Fix(JH_1) < '" & Lundi.Value & "' And Fix(JH_2) > '" & Lundi.Value & "');"
Set rec = CurrentDb.OpenRecordset(TST)
Ainsi le problème se localise au niveau du dernier test :

Code :
And Fix(JH_1) < '" & Lundi.Value & "' And Fix(JH_2) > '" & Lundi.Value & "'
Ainsi si les dates sont les suivantes :

JH_1 : 15/02/2010
JH_2 : 18/02/2010

Alors suivant ce dernier test les jours suivants sont retenues :

- 16/02/2010, 17/02/2010

Mais aussi pour les dates suivantes :

- 16/01/2010, 17/01/2010
- 16/03/2010, 17/03/2010
- 16/04/2010, 17/04/2010
- 16/05/2010, 17/05/2010
....

Pour vous aidez à la réflexion les dates des jours de la semaine sont inscrits sous la syntaxe suivante :

si Now est un dimanche
alors Lundi.value = Fix(Now) + 1

Merci
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 13h46   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Salut,

tes champs JH_1 et JH_2 sont-ils des dates ou bien du texte ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 13h53   #3
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Il s'agit bien évidemment de dates au format : Date, abrégé

Aussi pour uniquement ce test suivant :

Code :
Fix(JH_1) < '" & Lundi.Value & "'
et un enregistrement suivant :

JH_1 : 24/11/2010

Les jours 25,26,27,28,29,30 et 31 de tous les mois sont retenus !!!
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h12   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
ok, et utiliser la clause between a la place ?

Code :
And Fix(JH_1) < '" & Lundi.Value & "' And Fix(JH_2) > '" & Lundi.Value & "'
devenant
Code :
and '" & Lundi.Value & "' BETWEEN Fix(JH_1) And Fix(JH_2)
en sachant que l'utilisation de quote avec la fonction Fix me parait moyennement judicieux.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h17   #5
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Non mêmes symptômes
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h26   #6
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Ok,

peux tu dans ce cas la, virer la partie Fix de ta requete, elle n'a de mon point de vue aucune plus value a etre utilisee pour ce critere.

Remplace aussi les quotes par une syntaxe de date standard #MM/DD/YYYY#
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 14h39   #7
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Voici la nouvelle syntaxe :

Code :
OR (Validation LIKE '" & 1 & "' And '" & Lundi.Value & "' BETWEEN JH_1 And JH_2);"
Erreur 3464 : type de données incompatible dans l'expression des critères.

Aussi pouvez-vous être plus clair sur les quotes et formats de dates.

Merci
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h31   #8
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Je reste sur le même problème avec cette formule :

Code :
TEST = "Select HP, Société, Contact, Type_2, Type_1 FROM " & SourceTable & " WHERE Validation = '1' And '" & Fix(Lundi.Value) & "' BETWEEN Fix(JH_1) AND Fix(JH_2) ;"
Le fait de retirer le Fix() procure l'Erreur 3464 : type de données incompatible dans l'expression des critères, et la syntaxe " & Lundi.value & " BETWEEN JH1 AND JH2 ne fonctionne pas

Une requête SQL réalisé sous un autre formulaire fonctionne sur les mêmes champ de la même table.

Code :
strSql = "Select DISTINCTROW " & " Jour_1, HP, Lieu, Contact, Société, " & SourceTable & ".* FROM " & SourceTable & " WHERE ((Validation = '" & 1 & "' And Jh_1 >= Jh_1.Value And Jh_2 <= Jh_2.Value)
Seulement comment attribuer les résultats : HP, Société, Contact, Type_2, Type_1 à des valeurs comme A, B, C, D et E

Merci
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h26   #9
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Salut,
et en passant par

Code :
TEST = "Select HP, Société, Contact, Type_2, Type_1 FROM " & SourceTable & " WHERE Validation = '1' And #" & Fix(Lundi.Value) & "# BETWEEN JH_1 AND JH_2 ;"
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h31   #10
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Oui pouvez-vous m'expliquer le rôle des symboles #

Seulement j'ai un exemple sous le coude pour lequel le code ne fonctionne pas :

date de début 03/01/2011
date de fin 06/05/2011

pour les lundi 7 février et 11 avril 2011 le code ne fonctionne pas !!

Merci
fisio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 14h40   #11
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Les dates sous Access sont lues au format MM/JJ/AAAA en plus des # avant et apres.

Deux approches donc :
- soit tu inseres les dates directement dans ce format la;
- soit tu manipules les entrees de telle sorte a fournir la date au format Access

edit : voir les infos de la a ce sujet :
http://access.developpez.com/faq/?page=dates#DateFormat
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h09   #12
Nouveau Membre du Club
 
Inscription : janvier 2009
Messages : 130
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 130
Points : 29
Points : 29
Voici la meilleur réponse après quelques heures de recherche :

Code :
WHERE Validation = '1' And datevalue('" & Fix(Lundi.Value) & "') BETWEEN Fix(JH_1) AND Fix(JH_2) ;"
Merci pour ton aide précieuse, cela va dans le meilleur des sens.
fisio 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 00h34.


 
 
 
 
Partenaires

Hébergement Web