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 :

Problème de requète SQL dans Delphi


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseigant en EPS et responsable informatique d'un établissement scolaire à la retraite.
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseigant en EPS et responsable informatique d'un établissement scolaire à la retraite.
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Par défaut Problème de requète SQL dans Delphi
    Bonjour à tous,
    J'utilise Delphi 2007 en version architect avec Interbase

    Voici mon problème :
    La requète SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With F_Accueil.IBDataSet_Reservations do
         begin
          Close;
          SelectSQL.Clear;
          SelectSQL.Add('SELECT * FROM '+ xnom_table_reservation_interbase);
          SelectSQL.Add(' WHERE NDOSSIER LIKE' + quotedStr(xrecherche));
          SelectSQL.Add(' AND ' + '(ACTUALSTART>= '+ '''' +datetimetostr(date + ''')');
          active := true;
         end;
    me retourne à l'exécution le message d'erreur :
    Conversion error form string ''24/08/2011''

    Pour info ce qui m'intéresse c'est de récupérer tous les enregistrements ayant pour numero de dossier xrecherche et pour actualstart les date supérieur ou égal à aujourd'hui.

    Merci d'avance
    Claude Guez.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour,

    L'erreur vient d'ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       SelectSQL.Add(' AND ' + '(ACTUALSTART>= '+ '''' +datetimetostr(date + ''')');
    Il faudrait mettre plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       SelectSQL.Add(' AND ' + '(ACTUALSTART>= '+ '''' +datetimetostr(date)  + ''')');

  3. #3
    Membre Expert
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 157
    Par défaut
    Sous INTERBASE ce doit être la même chose que sous FIREBIRD, la date n'est pas (par défaut) sous ce format "''24/08/2011'' mais "2011-08-24".

    Utilise le CAST :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectSQL.Add(' AND ' + '(ACTUALSTART>= CAST('+ '''' +datetimetostr(date)  + ''' AS DATE))');
    attention, je me suis peut être un peu perdu dans les parenthèses

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 593
    Billets dans le blog
    65
    Par défaut
    Je confirme ce que dit Olivier pour ce qui est du format de la Date :
    soit à l'anglaise sous la forme mm/dd/yyyy
    soit à la française jj.mm.aaaa

    cependant une remarque pour éviter ce genre de problème , il vaut mieux utiliser un paramètre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With F_Accueil.IBDataSet_Reservations do
         begin
          Close;
          SelectSQL.Clear;
          SelectSQL.Add('SELECT * FROM '+ xnom_table_reservation_interbase);
          SelectSQL.Add(' WHERE NDOSSIER LIKE' + quotedStr(xrecherche));
          SelectSQL.Add(' AND  ACTUALSTART>= :D');
          SelectSQL.ParamByNBame('D').asDateTime:=Date;
          active := true;
         end;

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseigant en EPS et responsable informatique d'un établissement scolaire à la retraite.
    Inscrit en
    Octobre 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseigant en EPS et responsable informatique d'un établissement scolaire à la retraite.
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 78
    Par défaut
    Bonjour,

    Les gars vous êtes super !!! Cela marche très bien.
    J'ai eu un petit faible pour la solution de SergioMaster avec une petite modif :
    With F_Accueil.IBDataSet_Reservations do
    begin
    Close;
    SelectSQL.Clear;
    SelectSQL.Add('SELECT * FROM '+ xnom_table_reservation_interbase);
    SelectSQL.Add(' WHERE NDOSSIER LIKE' + quotedStr(xrecherche));
    SelectSQL.Add(' AND ACTUALSTART>= :C');
    F_Accueil.IBDataSet_Reservations.ParamByName('C').AsDateTime := Date;
    active := true;
    end;
    Ce forum est vraiment un outil formidable.

    Merci encore à vous trois.
    Claude Guez

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

Discussions similaires

  1. Problème avec requête SQL dans VBA
    Par Mimisio dans le forum VBA Access
    Réponses: 10
    Dernier message: 13/07/2007, 11h00
  2. [AJAX] requète sql dans js
    Par cheers94wow dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 13h24
  3. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08
  4. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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