Donnees Date incompatibles

Le
dadpub
Bonjour,

Voulant trouver le prochain anniversaire parmi mes contacts, j'ai cette
requette :

SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()));

Sans le critere (where) ça marche, mais avec le critere j'ai ce message
d'erreur :
"Type de données incompatible dans l'expression du critère"
Or il s'agit bien de donnees de Type Date ! (DDNÚte De Naissance)
Ou est le bug ?

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6192921
Salut dadpub !

et avec :
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Date()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Date()),Month([DDN]),Day([DDN])))>Date()));

Dis-nous !

En ce jour exceptionnel du mercredi 14/03/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour,

Voulant trouver le prochain anniversaire parmi mes contacts, j'ai cette
requette :

SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()));

Sans le critere (where) ça marche, mais avec le critere j'ai ce message
d'erreur :
"Type de données incompatible dans l'expression du critère"
Or il s'agit bien de donnees de Type Date ! (DDNÚte De Naissance)
Ou est le bug ?

Merci.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

dadpub
Le #6192871
Salut,

et avec :
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Date()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Date()),Month([DDN]),Day([DDN])))>Date()));

Dis-nous !
Non !

Ok, y'a plus le message d'erreur, mais le résultat est faux (à tester avec
diverses dates)

Par contre j'ai trouvé ceci et ça a l'air de marcher :
SELECT TOP 1 TContact.Contact, TContact.DDN
FROM TContact
WHERE (((Month([DDN]))>Month(Now()+7))) OR (((Month([DDN]))=Month(Now()))
AND ((Day([DDN]))>Day(Date())))
ORDER BY Month([DDN]), Day([DDN]);

Le seul problème est le chiffre après Now() + ...

@ +


En ce jour exceptionnel du mercredi 14/03/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour,

Voulant trouver le prochain anniversaire parmi mes contacts, j'ai cette
requette :

SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()));

Sans le critere (where) ça marche, mais avec le critere j'ai ce message
d'erreur :
"Type de données incompatible dans l'expression du critère"
Or il s'agit bien de donnees de Type Date ! (DDNÚte De Naissance)
Ou est le bug ?

Merci.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info





ze Titi
Le #6192841
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()))
ORDER BY TContact.DDN

En ce jour exceptionnel du mercredi 14/03/2007, tu nous as très
généreusement gratifié du message suivant:

Salut,

et avec :
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Date()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Date()),Month([DDN]),Day([DDN])))>Date()));

Dis-nous !
Non !

Ok, y'a plus le message d'erreur, mais le résultat est faux (à tester avec
diverses dates)

Par contre j'ai trouvé ceci et ça a l'air de marcher :
SELECT TOP 1 TContact.Contact, TContact.DDN
FROM TContact
WHERE (((Month([DDN]))>Month(Now()+7))) OR (((Month([DDN]))=Month(Now()))
AND ((Day([DDN]))>Day(Date())))
ORDER BY Month([DDN]), Day([DDN]);

Le seul problème est le chiffre après Now() + ...

@ +


En ce jour exceptionnel du mercredi 14/03/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour,

Voulant trouver le prochain anniversaire parmi mes contacts, j'ai cette
requette :

SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()));

Sans le critere (where) ça marche, mais avec le critere j'ai ce message
d'erreur :
"Type de données incompatible dans l'expression du critère"
Or il s'agit bien de donnees de Type Date ! (DDNÚte De Naissance)
Ou est le bug ?

Merci.


-- Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Eric
Le #6192821
Bonjour,

Je crois qu'il manquait juste à la proposition de ze Titi la clause de
tri croissant :
Order By DateSerial(Year(Date()),Month([DDN]),Day([DDN]))

non ?

Salut,

et avec :
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Date()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Date()),Month([DDN]),Day([DDN])))>Date()));

Dis-nous !
Non !

Ok, y'a plus le message d'erreur, mais le résultat est faux (à tester avec
diverses dates)

Par contre j'ai trouvé ceci et ça a l'air de marcher :
SELECT TOP 1 TContact.Contact, TContact.DDN
FROM TContact
WHERE (((Month([DDN]))>Month(Now()+7))) OR (((Month([DDN]))=Month(Now()))
AND ((Day([DDN]))>Day(Date())))
ORDER BY Month([DDN]), Day([DDN]);

Le seul problème est le chiffre après Now() + ...

@ +




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


Eric
Le #6192801
Hello ze Titi,

Et oui, je pense qu'il te manquait la clause Order By ;-)
Moi, j'ai proposé ta formule avec la fonction Date() car son Now() n'est
pas utile puisqu'il ne travaille pas sur l'instant présent. Question de
goût certainement ;-)


SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()))
ORDER BY TContact.DDN



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

ze Titi
Le #6192791
Hello Eric !

J'ai ajouté la clause mais sur la date de naissance... Le résultat est
le même mais je soupçonne que ça soit un peu plus rapide de cette
façon. Mais je peux me tromper, ça ne serait pas la première fois...

En ce jour mémorable du mercredi 14/03/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Bonjour,

Je crois qu'il manquait juste à la proposition de ze Titi la clause de tri
croissant :
Order By DateSerial(Year(Date()),Month([DDN]),Day([DDN]))

non ?

Salut,

et avec :
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Date()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Date()),Month([DDN]),Day([DDN])))>Date()));

Dis-nous !
Non !

Ok, y'a plus le message d'erreur, mais le résultat est faux (à tester avec
diverses dates)

Par contre j'ai trouvé ceci et ça a l'air de marcher :
SELECT TOP 1 TContact.Contact, TContact.DDN
FROM TContact
WHERE (((Month([DDN]))>Month(Now()+7))) OR (((Month([DDN]))=Month(Now()))
AND ((Day([DDN]))>Day(Date())))
ORDER BY Month([DDN]), Day([DDN]);

Le seul problème est le chiffre après Now() + ...

@ +




--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Eric
Le #6192781
re,

Certainement car lui faire calculer par 2 fois la date n'est pas
nécessaire, mais j'ai réagi surtout à la formulation de son critère que
je ne comprenais pas. Aussi dans la précipitation, je n'ai pas regardé
les champs, juste la fonction DateSerial() que j'ai copiée-collée.

+1 pour toi ;-)
A charge de revanche !


Hello Eric !

J'ai ajouté la clause mais sur la date de naissance... Le résultat est
le même mais je soupçonne que ça soit un peu plus rapide de cette façon.
Mais je peux me tromper, ça ne serait pas la première fois...



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

dadpub
Le #6192771
SELECT TOP 1 TContact.Contact, TContact.DDN,
DateSerial(Year(Now()),Month([DDN]),Day([DDN])) AS Anniversaire
FROM TContact
WHERE ((DateSerial(Year(Now()),Month([DDN]),Day([DDN])))>Date()))
ORDER BY TContact.DDN


Non, pas mieux !....

dadpub
Le #6192761
"Eric" %
Bonjour,

Je crois qu'il manquait juste à la proposition de ze Titi la clause de tri
croissant :
Order By DateSerial(Year(Date()),Month([DDN]),Day([DDN]))

non ?
Ben non ! pas mieux ...

Pour l'instant y'a que ça qui marche :

SELECT TOP 1 TContact.Contact, TContact.DDN
FROM TContact
WHERE (((Month([DDN]))>Month(Now()+7))) OR (((Month([DDN]))=Month(Now()))
AND ((Day([DDN]))>Day(Date())))
ORDER BY Month([DDN]), Day([DDN]);

Le seul problème est le chiffre après Now() + ...

Eric
Le #6192751
re,

Bizarre !!!
Ton champ DDN est bien de type Date ? format abrégé par exemple ?
Je viens de tester sur 200 dates et j'ai pas de problème. 2 dates
sortent pour le 15/03 parmi les 200.

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Publicité
Poster une réponse
Anonyme