Problème date Sql

Fermé
Cas-Lu Messages postés 1 Date d'inscription mardi 17 janvier 2017 Statut Membre Dernière intervention 17 janvier 2017 - Modifié par Cas-Lu le 17/01/2017 à 11:46
jondev Messages postés 23 Date d'inscription mercredi 18 janvier 2017 Statut Membre Dernière intervention 31 janvier 2023 - 18 janv. 2017 à 17:52
Salut tout le monde,
Je suis face à un problème basique de SQL, donc SVP, soyez conciliant.

Je souhaite (grâce a une requête) afficher les heures supplémentaires selon l'id du salarié, le mois actuel et l'année actuel.
Ma requête se présente ainsi :
SELECT ...(ligne très longue de ce que je veux afficher)
FROM Hsupp
WHERE Hsupp.IDSalarié=1(Jusqu'ici ca va) and Hsupp.Jours="**/01/2017";

La ligne soulignée est le problème.

Access m'affiche lors de l’exécution "Type de données incompatible dans l'expression du critère.".
Cependant, il me semble avoir vu en 1ere année de BTS SIO qu'on utilise les "*" pour définir les données qui peuvent changer.
Par exemple, dans mon cas j'aimerais afficher les heures supplémentaires du service Finance pendant le mois de Janvier (01) 2017 de n'importe quel jours (d'ou mon **/01/2017).

Merci de bien vouloir m'indiquer ou se situent mes erreurs et me proposer des correctifs.

1 réponse

jondev Messages postés 23 Date d'inscription mercredi 18 janvier 2017 Statut Membre Dernière intervention 31 janvier 2023 9
18 janv. 2017 à 17:52
Bonjour Cas-Lu,

Dans "Access" vous ne pouvez pas effectuer une recherche sur un champ de type "DateTime" en utilisant une chaîne de caractères d'où le message "Type de données incompatible dans l'expression du critère.".

Pour cela il faut utiliser la fonction "format"

La syntaxe est la suivante : format(NomDuChamp,"FormatSouhaité")

Dans votre cas pour une recherche sur tout le mois de janvier, la requête est la suivante :
SELECT * FROM Hsupp WHERE Hsupp.IDSalarie=1 and format(Hsupp.Jours,"mm/yyyy") = "01/2017";

Pour une recherche sur un jour donné, la requête sera :
SELECT * FROM Hsupp WHERE Hsupp.IDSalarie=1 and format(Hsupp.Jours,"dd/mm/yyyy") = "01/01/2017";

En espérant avoir pu vous aider.

Bonne continuation pour votre développement.

JonDev
0