Utiliser qu'une partie d'une date dans une requête SQL [Résolu]

vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 09:01 - Dernière réponse : vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 13 juin 2007 à 10:04
3
Merci
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 ?

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 13 juin 2007 à 10:30
3
Merci
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'

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 09:15
0
Merci
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
Commenter la réponse de vicelow5901
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 09:23
0
Merci
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.
Commenter la réponse de vicelow5901
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 09:32
0
Merci
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
Commenter la réponse de vicelow5901
cs_Nicko11 1141 Messages postés mercredi 7 mars 2007Date d'inscription 19 septembre 2007 Dernière intervention - 13 juin 2007 à 10:03
0
Merci
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.
Commenter la réponse de cs_Nicko11
cs_Nicko11 1141 Messages postés mercredi 7 mars 2007Date d'inscription 19 septembre 2007 Dernière intervention - 13 juin 2007 à 10:18
0
Merci
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.
Commenter la réponse de cs_Nicko11
cs_Nicko11 1141 Messages postés mercredi 7 mars 2007Date d'inscription 19 septembre 2007 Dernière intervention - 13 juin 2007 à 10:20
0
Merci
vicelow5901, essaies ca aussi,

Rcd.open sql, cnx, adOpenDynamic, adLockOptimistic
Commenter la réponse de cs_Nicko11
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 10:23
0
Merci
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.
Commenter la réponse de vicelow5901
vicelow5901 27 Messages postés vendredi 27 octobre 2006Date d'inscription 7 mars 2008 Dernière intervention - 13 juin 2007 à 10:51
0
Merci
Merci pour tout, mes problèmes ont tous étaient résolu.

A bientot peut etre
Commenter la réponse de vicelow5901

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.