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 08/01/2011, 18h45   #1
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Par défaut Problème de critère VraiFaux

Bonjour,

J'ai un petit problème avec un critère que j'ai dans ma requête. Je souhaite avoir un critère qui me recherche les enregistrement dont la date est égale à 31/12/9999 si une case est cochée et qui me recherche les dates contenues entre deux dates déterminés sinon. J'ai mis le critère suivant :

Code :
VraiFaux([Formulaires]![FCreationEtat]![chkDateFin]=Vrai;#31/12/9999#;([tbMouvementGrille].[DateFinEtat]) Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin])
Alors je ne comprend pas bien car si je coche la case, ca marche bien (j'ai seulement les dates égales à 31/12/9999 mais si je décoche la case je n'ai plus rien même si je met 31/12/9999 comme date d'encadrement. De plus si je met seulement :

Code :
Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin]
comme critère, ca marche aussi.

Quelqu'un a-t-il une idée d'ou viendrai mon problème ?

Merci
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 20h34   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Les parties "Si Vrai" et "Si Faux" de ton VraiFaux ne retournent pas le même type de valeur.

Si Vrai renvoie une date :
Si Faux renvoie un booléen :
Code :
([tbMouvementGrille].[DateFinEtat]) Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin]

Essaie avec
Code :
Entre VraiFaux([Formulaires]![FCreationEtat]![chkDateFin]=Vrai; #31/12/9999#; [Formulaires]![FCreationEtat]![DateDebut]) Et VraiFaux([Formulaires]![FCreationEtat]![chkDateFin]=Vrai; #31/12/9999#; [Formulaires]![FCreationEtat]![DateFin])

Ou bien tu ajoutes un champ calculé à ta requête :
Code :
CaseDateFin : [Formulaires]![FCreationEtat]![chkDateFin]
Et tu crée deux lignes de critères.

1ère ligne :
Critière pour DateFinEtat : #31/12/9999#
Critère pour CaseDateFin : Vrai

2ème ligne :
Critière pour DateFinEtat : Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin]
Critère pour CaseDateFin : Faux

La dernière solution est la plus lisible et la plus rapide (aucun VraiFaux utilisé)

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 21h02   #3
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Merci LedZeppII,

Je comprends maintenant mon erreur, ta première solution marche nickel. Par contre, juste par curiosité je ne comprends pas bien comment tu mets en place ta deuxième solution.

J'aurrai donc :

Champ :....|DateFinEtat............................................................................................................|CaseDateFin : [Formulaires]![FCreationEtat]![chkDateFin]
Table : .....|tbMouvementGrille...................................................................................................|
Tri :..........|...........................................................................................................................|
Afficher :...|...........................................................................................................................|
Critères :...|#31/12/9999#........................................................................................................|Vrai
Ou :..........|Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin]..|Faux

En tout cas, merci pour cette réponse rapide !

Cordialement

Seb
rafalemirage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 21h28   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Citation:
Envoyé par rafalemirage Voir le message
Par contre, juste par curiosité je ne comprends pas bien comment tu mets en place ta deuxième solution.

J'aurrai donc :
Champ :....|DateFinEtat............................................................................................................|CaseDateFin : [Formulaires]![FCreationEtat]![chkDateFin]
Table : .....|tbMouvementGrille...................................................................................................|
Tri :..........|...........................................................................................................................|
Afficher :...|...........................................................................................................................|
Critères :...|#31/12/9999#.........................................................................................................|Vrai
Ou :..........|Entre [Formulaires]![FCreationEtat]![DateDebut] Et [Formulaires]![FCreationEtat]![DateFin]....|Faux
Oui c'est ça

Sur une même ligne, les critères sont combinés entre eux avec des ET.
Les lignes de critères sont combinées entre elles avec de OU.
En langage un peut plus humain ça donne :
Code :
1
2
3
(DateFinEtat = 31/12/9999) ET (chkDateFin est cochée)
OU
(DateFinEtat Entre DateDebut Et DateFin) ET (chkDateFin est décochée)
Comme la case à cocher chkDateFin ne peut pas être Vrai et Faux en même,
une seule des deux lignes de critères peut retourner des enregistrements.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 19h40   #5
Futur Membre du Club
 
Inscription : avril 2009
Messages : 81
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 81
Points : 15
Points : 15
Merci LedZeppII,

Quand c'est bien expliqué, c'est royale !!!

Cordialement

Seb
rafalemirage 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 18h17.


 
 
 
 
Partenaires

Hébergement Web