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 :

Requête SQL sur un datetime


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 Requête SQL sur un datetime
    Bonjour,

    Durant la réalisation d'une application, je vais avoir besoin de comparer plusieurs dates entre elles.

    Dans ma base, j'ai deux champs de type datetime, DateDebut et DateFin que j'aimerai comparer de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var query = from t in db.TableDate
               where t.DateDebut <= "01/01/2000"
               where t.DateDebut >= "01/12/1999"
               select new Dates {Les champs que je veux récupérer}).ToList();
    Voilà en gros l'idée, j'aimerais pouvoir sélectionner les enregistrements que je souhaite entre les deux intervalles de dates que je définis dans ma requête, seulement, je ne vois pas vraiment comment faire, quelle syntaxe utiliser :/

    Avez-vous une idée pour pouvoir réaliser ce genre de requête ?

    Merci d'avance pour vos réponses

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 77
    Points
    77
    Par défaut
    Je te conseille de mettre tes dates dans des variables Datetime avant.
    Comme ca tu peus les modifier par code.

    Cordialement Anthride

  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
    Bonjour,

    Tout d'abord merci de ta réponse, j'ai donc réussi à sélectionner les enregistrements que je souhaitais récupérer dont le champ "DateDebut" est inférieur ou supérieur à une certaine dâte.

    Voici le code de mon action réalisant la récup' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public ActionResult PageLog(string CR, string Domaine, string Appli)
    {
        string GetCR = CR;
        string GetDomaine = Domaine;
        string GetAppli = Appli;
     
        var db = new TestOutilEntities();
        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, 20, 19, 52, 00, 00)
                         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();
     
         return View(query);
    }
    Je récupère bien ce que je veux sans problème mais maintenant j'ai une autre question.
    ------------------------

    Le truc c'est que je voudrais envoyer les variables suivantes : GetCR et GetAppli, en plus du résultat de ma requête, situées dans une autre action à ma vue et je ne vois pas vraiment comment faire.

    En gros, même si je sais que ce que je vais mettre est totalement faux mais c'est pour montrer grossièrement ce que je veux, je voudrais faire un truc dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                return View(query, GetCR, GetAppli);
    Voici l'action qui m'intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
            public ActionResult PageDomaine(string CR, string Appli)
            {
                string GetCR = CR;
                string GetAppli = Appli;
     
                var db = new TestOutilEntities();
                var query = (from d in db.Domaine
                             where d.Appli == GetAppli
                             where d.CR == GetCR
                             select new Domaines { CR = d.CR, Appli = d.Appli, CreditMMCR = (int)d.CreditMMCR, FacturationMMFC = (int)d.FacturationMMFC, ServiceMMSE = (int)d.ServiceMMSE }).ToList();
     
                return View(query);
            }
            }
    J'espère que j'ai été assez clair

    Merci d'avance pour vos réponses

  4. #4
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Pour passer plusieurs variables à une vue, tu dois passer par une classe qu'on appelle ViewModel.

    Voici un exemple :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class DomaineViewModel
    {
    	public TypeDeQuery Requete;
    	public string Appli;
    	public string CR;
    }

    Et tu le passe à la vue :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var viewModel = new DomaineViewModel();
    viewModel.Requete = query;
    viewModel.Appli = GetAppli;
    viewModel.CR = GetCR;
     
    return View(viewModel);

  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
    Merci beaucoup pour ta réponse, ça fonctionne sans problème maintenant

    Edit : Ayant résolu la plupart de mes soucis de DateTime dans ce sujet et un autre ( http://www.developpez.net/forums/d12...leme-datetime/ ), je poste ici ce qui me pose actuellement quelques soucis.

    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 pour votre aide

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2006, 18h35
  2. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 10h59
  3. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 16h32
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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