Calcul d'age dans une requête à récupérer dans DataGridView

Signaler
Messages postés
99
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
25 juillet 2013
-
Messages postés
15403
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
-
J'ai élaboré une requête pour calculer l'ancienneté d'une catégorie de personnes, à récupérer dans DataGridView, mais malheureusement elle ne marche pas, aussi je souhaiterais que vous jetiez un coup d’œil afin de m'aider. Merci d'avance.

Voici ma requête:

            string sRechercheSQL = "SELECT DISTINCT Enseigner.code_enseignant, Personnels.nom_personnel, Personnels.prenom_personnel," + "\n" +
            "Diplomes.mne_diplome, Statuts.statut, DateDiff(yyyy,[date_operations],Now()) AS anciennete, Disciplines.mne_discipline," + "\n" +
            "Sum(Enseigner.nbre_heure) AS heure, Personnels.autorisation, Personnels.telephone, Fonctions.fonction, Annees_Scolaires.annee," + "\n" +
            "Disciplines.code_discipline, Fonctions.code_fonction" + "\n" +
            "FROM Personnels, Diplomes, Annees_Scolaires, Enseigner, Statuts, Disciplines, Fonctions" + "\n" +
            "WHERE Annees_Scolaires.code_annee Enseigner.code_annee AND Fonctions.code_fonction Personnels.code_fonction AND" + "\n" +
            "Diplomes.code_diplome Personnels.code_diplome AND  Disciplines.code_discipline Personnels.code_discipline AND" + "\n" +
            "Personnels.code_statut Statuts.code_statut AND Enseigner.code_enseignant Personnels.code_personnel AND Diplomes.mne_diplome<>'" + "NEANT" + "'" + "\n" +
            "AND Fonctions.fonction = '" + this.txtRecherche.Text + "'" + "\n" +
            "AND Annees_Scolaires.annee= '" + this.txtAnnee.Text + "'" + "\n" +
            "GROUP BY Diplomes.mne_diplome, Statuts.statut, DateDiff(" + "yyyy" + ",[date_operations],Now()), Disciplines.mne_discipline," + "\n" +
            "Personnels.autorisation, Personnels.telephone, Enseigner.code_enseignant, Personnels.nom_personnel, Personnels.prenom_personnel," + "\n" +
            "Disciplines.code_discipline, Fonctions.fonction, Fonctions.code_fonction, Annees_Scolaires.annee" + "\n" +
            "ORDER BY Personnels.nom_personnel, Personnels.prenom_personnel";


Je voudrais attirer votre attention sur la partie la plus importante:

DateDiff(yyyy,[date_operations],Now()) AS anciennete,


c'est cette partie qui fait échouer ma requête. Comment faire?

Merci.....

1 réponse

Messages postés
15403
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
20 janvier 2021
502
Salut, si tu n'as pas déjà trouvé une solution.

Je te propose de contourner ton problème.
Tu crées une classe qui correspond à ta table.
Tu charges tous tes enregistrements dans une List<T>.
Et avec Linq tu devrais arriver à faire ta requête.

Je n'y connais pas grand chose en base de données, mais je pense que anciennete étant une classe à toi ça ne sache pas faire le cast, alors qu'avec Linq tu pourras décrire les infos à transférer;