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

Bases de données Delphi Discussion :

Prob sql et date


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut Prob sql et date
    Bonjour a tous,

    Voila, j'ai un soucis avec une requete sql et une date.

    Dans ma table "seance" j'ai créé un champs SEA_DATE (type Date).

    Dans ma Form delphi j'ai inséré un monthcalendar. J'aimerais qd je clic sur une date modifié ma dbgrid via une requete sql. Mais j'ai des soucis avec la conversation du monthcalendar (en JJ/MM/AAAA) pour arriver à un truc du style JJ/MM/AAA HH:MM) j'ai tenté un decodedate mais je n'y arrive pas. Voici un aperçu de ce que j'ai:


    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
     
    procedure TFseance.MCClick(Sender: TObject);
    var valdate : Tdatetime;
    begin
    MC.Date := valdate;
    gesbdd.Ges_bdd.CDS_seance.ApplyUpdates(-1);
    gesbdd.Ges_bdd.CDS_seance.Close;
    gesbdd.Ges_bdd.SQLQ_seance.Close;
    gesbdd.Ges_bdd.SQLQ_seance.SQL.Clear;
    gesbdd.Ges_bdd.SQLQ_seance.SQL.Add('select a.sea_date from seance a where a.sea_date <= ' + datetostr(valdate) + ' and a.sea_date + 1 > '+ datetostr(valdate) + ' order by a.sea_date');
    gesbdd.Ges_bdd.SQLQ_seance.Open;
    gesbdd.Ges_bdd.CDS_seance.Open;
    gesbdd.Ges_bdd.CDS_seance.Refresh;
    showmessage(datetostr(valdate));
    end;
    J'ai donc tenté de decodé la date mais sans succés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Jour, Mois, Annees, heure, minute, seconde : word;
    begin
    valdate := MC.date;
    decodedate(valdate, jour, mois, Annees, heure, minute, seconde);
    Apparament je met trop de parametre, donc comment faire ???

    QQun à une idée,

    Merci d'avance,


    ++

    Chtiga

  2. #2
    Membre émérite Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Par défaut
    Salut!

    Les paramètres sont tes amis .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with gesbdd.Ges_bdd.SQLQ_seance do
    begin
      SQL.Add('select a.sea_date from seance a');
      SQL.Add('where a.sea_date <= :ParamDate and a.sea_date + 1 > :ParamDate');
      SQL.Add('order by a.sea_date');
      SQL.ParamByName('ParamDate').AsDateTime := valdate;
    end;
    Si tu es en ADO, la méthode ParamByName est dans l'objet Parameters de la requête.

    Bon dev!

  3. #3
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    conversation du monthcalendar (en JJ/MM/AAAA) pour arriver à un truc du style JJ/MM/AAA HH:MM)
    Je risque un truc :
    As-tu essayé DateTimeToStr à la place de Date ToStr ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut
    Bonsoir,

    Merci pour les réponses (rapides et efficaces)

    Effectivement utiliser les parametres, ca permet deja d'avoir un code plus clair et moins a taper

    Sinon j'ai mis a jour mon code comme suit :

    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
      valdate := MC.Date;
      showmessage(datetostr(valdate));
      gesbdd.Ges_bdd.CDS_seance.ApplyUpdates(-1);                                                            //
      gesbdd.Ges_bdd.CDS_seance.Close;
      with ges_bdd.SQLQ_seance do
      begin
      Close;
      SQL.Clear;
      SQL.Add('select a.sea_date from seance a');
      SQL.Add('where a.sea_date <= :paramdate and a.sea_date + 1 > :paramdate');
      SQL.Add('order by a.sea_date');
      ParamByName('paramdate').AsDateTime := valdate;
      Open;
      end;
      gesbdd.Ges_bdd.CDS_seance.Open;
      gesbdd.Ges_bdd.CDS_seance.Refresh;
    Ma date est bien prise en compte dans mon showmessage mais j'ai un erreur:

    Edatabase error unasigned code '.

    J'ai tenté au pas a pas mais je trouve pas ...

    Pour Od.dev : j'ai tenté mais ca me l'as pas pris en compte, dommage l'idée était bonne

    Merci d'avance

    ++

    Chtiga

  5. #5
    Membre chevronné
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Par défaut
    bonjour

    il me semble que MonthCalendar ne retourne qu'un TDate.
    Description Aide Delphi6
    TDate représente un type spécial de valeur TDateTime sans partie décimale. Une valeur TDate représente le nombre de jours qui se sont écoulés depuis le 30 décembre 1899.
    pour avoir une information de date-heure il faut sans doute utiliser un DateTimePicker, qui possède en plus des options de formatage.

    à plus

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 4
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Les deux marchent (datetimepicker et Monthcalendar) le probleme venait de mon parambyname, c'était pas asdatetime mais asdate tout court, on s'y perd lol

    Merci encore

    ++

    Tonio

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

Discussions similaires

  1. SQL/VBA Date Format
    Par LeScandinave dans le forum Access
    Réponses: 20
    Dernier message: 05/10/2005, 08h34
  2. PL/SQL TROUVER DATES DE PÂQUES, ASCENSION et PENTECôTE
    Par mimi_été dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/10/2004, 15h40
  3. Prob SQL dynamique
    Par anthony8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/09/2004, 09h53
  4. Instruction SQL et Date
    Par Didier100 dans le forum Bases de données
    Réponses: 11
    Dernier message: 19/07/2004, 18h20
  5. [VB.NET] Requete sql et date
    Par mic56 dans le forum Accès aux données
    Réponses: 11
    Dernier message: 03/06/2004, 10h39

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