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

cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 - 25 juil. 2013 à 09:11
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 - 4 août 2013 à 10:55
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

Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 656
4 août 2013 à 10:55
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;
0
Rejoignez-nous