IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Problème avec Datetime :/ [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Informatique en Alternance
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Informatique en Alternance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 38
    Points
    38
    Par défaut Problème avec Datetime :/
    Bonjour,

    Je pensais en avoir quasiment fini avec ce fameux Datetime mais j'ai encoure un soucis, je souhaiterais lors d'une requête faire un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     var query = (from l in db.Log
                             where l.CR == GetCR
                             where l.NomDomaine == GetDomaine
                             where l.Appli == GetAppli
                             where l.DateDebut == new DateTime(2012, 08)
                             select new Logs { CR = l.CR, Appli = l.Appli, Job_MVS = l.Job_MVS, NomDomaine = l.NomDomaine, Type_Job = l.Type_Job, Description = l.Description, DateDebut = (DateTime)l.DateDebut, DateFin = (DateTime)l.DateFin }).ToList();
    A la clause where :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut == new DateTime(2012, 08)
    Je souhaiterais récupérer que les enregistrements d'Aout 2012.
    J'ai essayé de lui mettre différentes valeurs pour les jours mais sans succès.

    J'ai toujours le moyen de lui demander de me prendre les enregistrements entre le 01 Aout et le 31 mais je souhaiterais le faire en un seul where.

    Est-ce que c'est possible ? Et si oui, comment faire ?

    Merci d'avance pour vos réponses.

  2. #2
    Invité
    Invité(e)
    Par défaut

    Et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut.Year == 2012 && l.DateDebut.Month == 8

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Informatique en Alternance
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Informatique en Alternance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par h2s84 Voir le message

    Et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut.Year == 2012 && l.DateDebut.Month == 8
    Ca ne marche pas :/
    Il me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'System.Nullable<System.DateTime>' does not contain a definition for 'Month' and no extension method 'Month' accepting a first argument of type 'System.Nullable<System.DateTime>' could be found (are you missing a using directive or an assembly reference?)
    En tout cas, merci pour ton aide ^^

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bah Tu es sûr que tu utilises le DateTime pour DateDabut ?

    Edit :

    Il faut plutôt faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut.HasValue && l.DateDebut.Value.Year == 2012 && l.DateDebut.Value.Month == 8

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Informatique en Alternance
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Informatique en Alternance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Bah Tu es sûr que tu utilises le DateTime pour DateDabut ?

    Edit :

    Il faut plutôt faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut.HasValue && l.DateDebut.Value.Year == 2012 && l.DateDebut.Value.Month == 8
    Nickel, ça marche parfaitement.

    Merci beaucoup pour ton aide, je pensais pas que c'était si "simple" :p

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Informatique en Alternance
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Informatique en Alternance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Je reviens encore une fois vers vous car j'en ai toujours pas fini avec ce fichu date time :p

    L'histoire de sélection des mois et des années est reglé mais maintenant ce que je voudrais faire c'est sélectionner mes enregistrements où l'année de DateDebut est inférieure d'un an à l'année actuelle.

    J'ai essayé quelques bouts de code de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     where l.DateDebut.HasValue && l.DateDebut.Value.Year.Equals(DateTime.Now.Year) && l.DateDebut.Value.Year.Equals(DateTime.Now.AddYears(-1))
    La première partie marche sans problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    where l.DateDebut.HasValue && l.DateDebut.Value.Year.Equals(DateTime.Now.Year)
    Mais le soucis se pose à la deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    && l.DateDebut.Value.Year.Equals(DateTime.Now.AddYears(-1))
    Mais à chaque fois j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LINQ to Entities does not recognize the method 'System.DateTime AddYears(Int32)' method, and this method cannot be translated into a store expression.
    J'ai vu sur un forum qu'il suffisait de faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime start = now.AddYears(-startAge);
    Puis de mettre la variable start dans mon where mais sans succes.

    Avez-vous une idée ?

    ---------------------------------------

    J'ai aussi un autre soucis que j'ai signalé dans un autre de mes topics mais je vais quand même en refaire part ici vu que l'autre, c'est un peu le bordel dans ma demande :p

    Voilà le topo, je souhaiterais avoir une DropDownList qui serait alimentée par ma base de données et qui permettrait de sélectionner les Mois et les Années des enregistrements à afficher.
    En gros je souhaiterais avoir une DropDownList de ce type (je ne peux pas upload d'image au boulot donc ça va être à la main :/ ) :
    • Novembre 2012
    • Octobre 2012
    • Septembre 2012
    • Aout 2012
    • Juillet 2012
    • etc.


    Comment lui dire que lorsque je sélectionnerais par exemple "Juillet 2012" d'aller récupérer tous les enregistrements où DateDebut contient 2012/07 ? Le problème n'est pas vraiment la requête mais plus la transition entre la valeur affichée à l'écran et la vraie valeur retournée à ma requête.

    De plus, il faudrait qu'elle soit alimentée par rapport à mon champ DateDebut et ce que je voudrais, c'est que tous les nouveaux mois, le mois le plus ancien (ici Juillet 2012) disparaisse et que le nouveau apparaisse.

    Mais ce point-là doit être reglé plus ou moins de la même façon que mon premier problème de soustraction des années, enfin je suppose.

    Là aussi, avez-vous une idée ?

    Je sèche complètement sur ce dernier point, je n'ai jamais alimenté de DropDownList avec une base de données.

    J'espère que j'ai été assez clair, sinon je me ferais un plaisir de répondre à vos questions.

    Merci d'avance pour vos réponses

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour ta première question (en prenant le temps de déchiffrer le message d'erreur tu sauras pourquoi ) tu ne respectes pas la définition de la méthode AddYears elle attend un Int32 et pas un type DateTime (DateTime.Now.AddYears renvoie un DateTyme pas un Int32).
    Tu dois remplacer :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    && l.DateDebut.Value.Year.Equals(DateTime.Now.AddYears(-1))
    par
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    && l.DateDebut.Value.Year.Equals(DateTime.Now.Year - 1)
    Pour le deuxième problème, vu que tu as déjà posé la question dans un autre thread alors améliore la en éditant le post et mets STP cette discussion à

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Informatique en Alternance
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Informatique en Alternance
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Pour ta première question (en prenant le temps de déchiffrer le message d'erreur tu sauras pourquoi ) tu ne respectes pas la définition de la méthode AddYears elle attend un Int32 et pas un type DateTime (DateTime.Now.AddYears renvoie un DateTyme pas un Int32).
    Tu dois remplacer :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    && l.DateDebut.Value.Year.Equals(DateTime.Now.AddYears(-1))
    par
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    && l.DateDebut.Value.Year.Equals(DateTime.Now.Year - 1)
    Pour le deuxième problème, vu que tu as déjà posé la question dans un autre thread alors améliore la en éditant le post et mets STP cette discussion à
    Ah oui en effet, j'ai lu un peu trop rapidement le message d'erreur

    Merci beaucoup pour ta réponse, ça marche parfaitement maintenant

    Et concernant mon deuxième prob', j'vais éditer mon autre topic et mettre en "Résolu" celui-ci.

    Encore merci pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec datetime local
    Par alexj78 dans le forum Langage
    Réponses: 7
    Dernier message: 19/08/2014, 11h05
  2. Problème avec datetime local
    Par alexj78 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 19/08/2014, 10h25
  3. Problème avec dateTime
    Par ralf91 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 29/06/2011, 14h40
  4. Problème avec convert datetime
    Par sane79 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/07/2007, 10h43
  5. problême avec datetime
    Par Xanime dans le forum Services Web
    Réponses: 1
    Dernier message: 13/06/2007, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo