Utiliser qu'une partie d'une date dans une requête SQL

Résolu
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008 - 13 juin 2007 à 09:01
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008 - 13 juin 2007 à 10:51
Bonjours à tous,


 


J'ai un petit problème et j'espère que vous allez pouvoir m'aider. Pour commencer je vais vous expliquer le sujet. Je dois faire un programme de gestion des absences et quand j'enregistre une absence, je saisi la date de début de l'absence et la date de fin. Mon problème se situ au moment de la visualisation des absences mensuelles (afficher toutes les absences du mois) et les absences annuelles (afficher toutes les absences de l'année). Pour cela, je saisis biensur avant, dans deux textbox différentes, le mois et l'année pour les recherches mensuelles et l'année pour les recherches annuelles. Donc pour cela, dans ma requête, je dois séparer chaque partie de ma date pour n'utiliser que le mois ou l'année pour les comparer avec l'année et le mois saisis dans mes textbox. Avant d'écrire ce message sur le forum, j'ai essayé avec : Year (ma date) = '" & datebox.text & "' et Month pour le mois,  mais cela ne marche pas.

Pour finir je voulais savoir si c'était possible d'afficher les absences hebdomadaire et si oui, comment.

Merci d'avance et j'espère avoir était clair dans mon énonciation.

Vicelow5901.
A voir également:

10 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 juin 2007 à 10:04
Pourtant ta requête me semble correcte ! Es-tu sûr que tu n'as pas un problème dans le nom d'un champs de ta requête ?
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 juin 2007 à 10:30
Nicko11 : en effet, tu peux agrémenter ta clause WHERE avec des appels de fonctions SQL, c'est pas un soucis ;)

Pour vicelow5901 : regarde tu côté de la fonction Format. Il me semble que ca donne :
Pour une recherche sur numéro de semaine :
Format("ww", tonChamp) = NumeroDeSemaine
Pour une recherche sur le jour :
Format("dddd", tonChamp) = NomDuJour
ex :
Format("dddd", tonChamp) = 'lundi'
3
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
13 juin 2007 à 09:15
Pour etre plus précis et pour etre corrigé, voila ma requête :

Private Sub BTrechercher_Click()


Dim sql As String
Set Rcd = New ADODB.Recordset


If mensuelle.Value = Checked Then


    ' Préparation de la requête
    sql = "Select * From absence where Month(dat_debut) >= " & Text1.Text & " and Year(dat_debut) = " & Text2.Text & " and Month(dat_fin) <= " & Text1.Text & " and Year(dat_fin) = " & Text2.Text & " Order by nom_salarie ;"


    ' Connexion à la base de données
    cnx.CursorLocation = adUseClient
    Rcd.CursorLocation = adUseClient


    ' Exécution de la requête
    Rcd.Open sql, cnx


    ' Affichage dans le datagrid
    Set DataGrid1.DataSource = Rcd
    DataGrid1.Refresh
   
    ElseIf annuelle.Value = Checked Then
   
        ' Préparation de la requête        sql "Select * From absence where Year(dat_debut) " & Text2.Text & " and Year(dat_fin) = " & Text2.Text & " Order by nom_salarie ;"


        ' Connexion à la base de données
        cnx.CursorLocation = adUseClient
        Rcd.CursorLocation = adUseClient


        ' Exécution de la requête
        Rcd.Open sql, cnx


        ' Affichage dans le datagrid
        Set DataGrid1.DataSource = Rcd
        DataGrid1.Refresh
       
End If


End Sub
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
13 juin 2007 à 09:23
Je me suis trompé dans ma requête, même si sa n'a rien changé, j'ai toujours un bug, pour dat_debut c'est <= et non pas >= et vice versa pour la dat_fin.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
13 juin 2007 à 09:32
Voici l'erreur qu'il m'affiche :


 


"Aucune valeur donnée pour un ou plusieurs des paramètres requis"


 


et quand je debug il me surligne :


 


Rcd.open sql, cnx
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 10:03
Salut,

je suis pas sur mais dans une clause Where, tu dois forcement faire reference a un des champs de ta table.
Or Ici, Year(dat_debut) est une fonction et pas un champ.
"Select * From absence where Absence_date_debut " & Text2.Text & " and Absence_date_Fin " & Text2.Text & " Order by nom_salarie ;"

Absence_date_debut et Absence_date_Fin sont les champs de ta table.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 10:18
Salut, Darksidious,

tu veux dire que l'on peut faire ca,

where Year(dat_debut) = ...........

Parce que je croyais qu'on ne pouvait mettre que le nom d'un champ dans cette clause.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 10:20
vicelow5901, essaies ca aussi,

Rcd.open sql, cnx, adOpenDynamic, adLockOptimistic
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
13 juin 2007 à 10:23
Pour répondre à nicko11
, le Year et le month servent à sélectionner que l'année ou le mois de mon champs date_debut ou date_fin (d'ailleur faut-il vraiment utilisé cela) et pour répondre à darksidious
, elle est vraiment bonne ma requête, je viens de vérifier et c'est bien un des champs qui était mal saisi mais je ne l'ai pas remarqué tout de suite car j'était certain que mes champs était bon, c'est un amis qui me la fait remarqué. Comme quoi il faut toujours vérifier les évidences en informatique! ;-)

Par contre, peut etre que vous pouvez m'aider encore une fois, je ne sait pas faire une recherche hebdomadair :-s.
0
vicelow5901 Messages postés 27 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 mars 2008
13 juin 2007 à 10:51
Merci pour tout, mes problèmes ont tous étaient résolu.

A bientot peut etre
0
Rejoignez-nous