Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Donnees Date incompatibles

33 réponses
Avatar
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=Date De Naissance)
Ou est le bug ?

Merci.

10 réponses

1 2 3 4
Avatar
ze Titi
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

Avatar
dadpub
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





Avatar
ze Titi
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



Avatar
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 ?

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


Avatar
Eric
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

Avatar
ze Titi
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



Avatar
Eric
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

Avatar
dadpub
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 !....

Avatar
dadpub
"Eric" a écrit dans le message de news:
%
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() + ...

Avatar
Eric
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
1 2 3 4