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

 Delphi Discussion :

Problème de syntaxe sous Delphi


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Par défaut Problème de syntaxe sous Delphi
    bonjour à tous,

    Je cherche à afficher dans un DBLookupComboBoxDateExa seulement les dates de l'année en cours dans ce cas que les dates de 2008, j'utilise ce code mais ça m'affiche une erreure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with DataModuleGojuryu.ADOSESSIONEXAMEN do begin
        close;
        SQL.text := 'SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE) LIKE '+QuotedStr(FBouttonsEle.DBLookupComboBoxDateExa.text+'%');
        OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
      end;
    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Citation Envoyé par And_res Voir le message
    mais ça m'affiche une erreure.
    Erreur confidentielle ?

  3. #3
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Je vois, je vois, je vois, je vois , je vois

    une alternative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      with DataModuleGojuryu.ADOSESSIONEXAMEN do begin
        close;
        SQL.text := 'SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE (EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)) AND LIKE '+QuotedStr(FBouttonsEle.DBLookupComboBoxDateExa.text+'%');
        OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
      end;
    ou une autre alternative

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        with DataModuleGojuryu.ADOSESSIONEXAMEN do begin
        close;
        SQL.text := 'SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE (EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)) OR LIKE '+QuotedStr(FBouttonsEle.DBLookupComboBoxDateExa.text+'%');
        OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
      end;

  4. #4
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Et enfin apparaît l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      with DataModuleGojuryu.ADOSESSIONEXAMEN do begin
        close;
        SQL.text := 'SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE (EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)) OR LIKE '+QuotedStr(FBouttonsEle.DBLookupComboBoxDateExa.text+'%');
        try
          OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
        except
          on e:exception do
          begin
            ShowMessage('Regarde humain : le sql suivant ' + slinebreak +  SQL.text +  slinebreak +  'entraîne l''erreur suivante ' + slinebreak +  e.message);
          end;
        end;
      end;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Par défaut
    j'ai cette erreure qui s'affiche 'Incorrect syntax near the keyword 'FROM'', je sais pas si c'est une erreure qui vient de la requête.???

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 093
    Par défaut
    Delphi ne génère pas de code interprété, donc si tu as une erreur de syntaxe au RunTime, c'est forcément, un code interprété, dans ton cas le SQL ...

    As-tu testé la requête directement dans un outil SQL adpaté à ta base, d'ailleurs, en dehors de Delphi ? Cela devrait être un réflexe !
    Es-tu sur que le ' est géré correctement ? un " serait peut-être plus pratique en Delphi

    le type de base est aussi confidentiel ? Oracle ? Sql Server ? MySQL ? InterBase ? les composants ? on devine ADO ... ?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    with DataModuleGojuryu.ADOSESSIONEXAMEN do 
    begin 
        close;
        SQL.text := Format('SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE (EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)) OR LIKE "%s%%"', [FBouttonsEle.DBLookupComboBoxDateExa.text]);
        try
          OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
        except
          on e:exception do
          begin
            ShowMessage('Regarde humain : le sql suivant ' + slinebreak +  SQL.text +  slinebreak +  'entraîne l''erreur suivante ' + slinebreak +  e.message);
          end;
        end;
      end;
    ou mieux, les Paramètres !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with DataModuleGojuryu.ADOSESSIONEXAMEN do 
    begin 
        close;
        SQL.text := 'SELECT DAT_SESS_EXA FROM dbo.SESSION_EXAMEN WHERE (EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)) OR LIKE :param';
        DataModuleGojuryu.ADOSESSIONEXAMEN.Parameters.ParamByName('param').AsString := FBouttonsEle.DBLookupComboBoxDateExa.text + '%';
        try
          OuvertureQuery(DataModuleGojuryu.ADOSESSIONEXAMEN);
        except
          on e:exception do
          begin
            ShowMessage('Regarde humain : le sql suivant ' + slinebreak +  SQL.text +  slinebreak +  'entraîne l''erreur suivante ' + slinebreak +  e.message);
          end;
        end;
      end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Retir le dbo. qui est un alias de table à utiliser sur les champs en cas de requête multi-table.

    Pourquoi utilises-tu le DBLookupComboBoxDateExa dans ta requête? C'est lui qui sera rempli avec les dates trouvées! Il sera plutôt à prendre en compte dans une deuxième requête Maître-détail pour afficher les examens du jour sélectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL.text := 'SELECT DAT_SESS_EXA FROM SESSION_EXAMEN WHERE EXTRACT(YEAR FROM DATE_SESS_EXA) = EXTRACT(YEAR FROM CURRENT_DATE)';
    Il ne faut en tout cas pas utilisé de ". Le double guillemet interprète la valeur comme le nom d'un champ. Il est principalement utilisé lorsque le nom du champ correspond à un mot réservé. ex. un champ Description appelé "DESC".

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Par défaut
    Merci pour vos réponses,

    Mais je suis toujours confronté à cette erreur, je me demande si sql server 2005 connais le FROM , ma date_sess_exa est en type CHAR.

    'Incorrect syntax near the keyword 'FROM

  9. #9
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Sans être un spécialiste de SQL serveur 2005 je peux te dire que oui l'instruction FROM est connu.

    Commence par faire ta requête avec outil SQL adpaté à ta base
    une requête simple

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM SESSION_EXAMEN
    Es-tu sur que SESSION_EXAMEN est bien une table de ta base ?

  10. #10
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    Salut And_res
    j'ai eu à traité un problème similaire mais sous "JAVA". et je vous rappel que le SQL Server 2005 utilise ce type de syntaxe :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select table_name.colomn_name from database_name.table_name

    j'espère avoir aidé

Discussions similaires

  1. problème gestion réseau sous delphi
    Par rerou dans le forum Web & réseau
    Réponses: 9
    Dernier message: 10/08/2011, 16h15
  2. Problème de requête sous Delphi
    Par chahinerue6 dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/05/2010, 07h44
  3. [Rave] Problème avec DataMemo sous Delphi 2006
    Par bhtechnologies dans le forum Composants VCL
    Réponses: 12
    Dernier message: 30/07/2009, 15h53
  4. Problème base ACCESS sous DELPHI
    Par colorid dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/02/2006, 15h24
  5. Problème avec EInOutError sous delphi 2005
    Par Teb dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2005, 11h48

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