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 SQL


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème de syntaxe SQL
    Voila lorsque je lance mon programme , g une erreur qui dit erreur de syntaxe
    étant débutant, je ne vois pas l'erreur

    l'erreur se situe dans la partie ci dessous

    numerofeuillederoute c'est 'un autonumérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    begin
     ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select [numero de ligne],[Nombre de rotation],[numero de feuille de route] from rotation '
                         +'where [numero de feuille de route]='+TFdRnumerofeuillederoute.AsString;
     ADOQuery1.Active:=true;
    end;

    merci
    a+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2008
    Messages : 108
    Points : 61
    Points
    61
    Par défaut
    As tu essayé entre tes mots de saisir des underscores? ('_')?

    Je suis débutant également, mais moi c'est ce que j'aurais fait.

    numero_de_ligne par exemple

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut et Bienvenue sur Developpez.com,

    En ce qui concerne ton soucis, je dois dire que je n'ai jamais vu de requêtes SQL avec des crochets ...

    Je tenterai plus une chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
     ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select "numero de ligne","Nombre de rotation","numero de feuille de route" from rotation '
                         +'where "numero de feuille de route"='+TFdRnumerofeuillederoute.AsString;
     ADOQuery1.Active:=true;
    end;
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
     ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select `numero de ligne`,`Nombre de rotation`,`numero de feuille de route` from rotation '
                         +'where `numero de feuille de route`='+TFdRnumerofeuillederoute.AsString;
     ADOQuery1.Active:=true;
    end;
    C'est une supposition que je n'ai pas testé ... mais je dirai à première vue que ça vient de la.

    Comme le dit breizh44, je n'utilise pas d'espace dans le nom de mes tables ... Je mets plutôt des underscores et si besoin est, je les renomme lors de ma requête ...

    A+

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    La notation avec crochet appartient à la syntaxe SQL Server pour traiter le cas de noms de champs/tables/etc... avec des espaces. Maintenant reste à savoir quelle base de donnée Bibendum84 utilise néanmoins si avec les crochets ça ne marche pas alors l'une ou l'autre des syntaxes de Ero-Sennins devraient elles.

    Néanmoins attention, si le champ [numero de feuille de route] est de type chaîne dans la BDD alors il faut entourer la valeur avec des '' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'where [numero de feuille de route]='''+TFdRnumerofeuillederoute.AsString + '''';

  5. #5
    Membre habitué Avatar de hlmhv
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 212
    Points : 165
    Points
    165
    Par défaut
    Je suis tout-à-fait d'accord avec Monseigneur le Modérateur...

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    personnellement j'ai pris l'habitude d'utiliser 'QuotedStr'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    + 'where [numero de feuille de route]= ' + QuotedStr(TFdRnumerofeuillederoute.AsString);
    à+

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    merci pour vos réponses
    mais ça ne fonctionne toujours pas

    en fait dans l'erreur de syntaxe , c'est mis (opérateur absent)

    a+

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Quel est le type de ton champ [numero de feuille de route] ?
    Qu'est-ce que TFdRnumerofeuillederoute, un champ également ? De quel type ?

    As-tu vérifier en mode débogage que TFdRnumerofeuillederoute contenait une valeur ?
    Voilà quelques pistes.

    Dernière question: quel est ton SBGD ? Access peut-être...

    @+ Claudius

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    re

    numero de feuille de route c un numérique
    et celui dans Tfdr c un autonumérique

    en fait j'utilise ce code pour faire du maitre/details entre numero de feuille de route de la table rotation et numero feuille de route de la table fdr
    car je ne sais pour quel raison (datasource fieldsource) ne fonctionne

    la table maitre c'est Fdr et donc avec ce code j'arrive a faire ce que je veux

    mais si je rajoute un numéro de feuille de route dans la table fdr , c'est a ce moment la que j'ai l'erreur

    oui j'utilise access

    j'espere avoir été plus clair (même si j'ai des doutes )

    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 TForm1.DsFdRDataChange(Sender: TObject; Field: TField);
    begin
     ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select [numero de ligne],[Nombre de rotation],[numero de feuille de route] from rotation '
                         +'where [numero de feuille de route]='+TFdRnumerofeuillederoute.AsString;
     ADOQuery1.Active:=true;
    end;
     
    procedure TForm1.ADOQuery1AfterInsert(DataSet: TDataSet);
    begin
      ADOQuery1.FieldByName('numero de feuille de route').AsInteger:=TFdRnumerofeuillederoute.AsInteger;
    end;
     
    end.

    merci
    a+

  10. #10
    Membre actif Avatar de liazidf
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2002
    Messages : 281
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par Bibendum84 Voir le message
    re

    numero de feuille de route c un numérique
    et celui dans Tfdr c un autonumérique

    en fait j'utilise ce code pour faire du maitre/details entre numero de feuille de route de la table rotation et numero feuille de route de la table fdr
    car je ne sais pour quel raison (datasource fieldsource) ne fonctionne

    la table maitre c'est Fdr et donc avec ce code j'arrive a faire ce que je veux

    mais si je rajoute un numéro de feuille de route dans la table fdr , c'est a ce moment la que j'ai l'erreur

    oui j'utilise access

    j'espere avoir été plus clair (même si j'ai des doutes )

    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 TForm1.DsFdRDataChange(Sender: TObject; Field: TField);
    begin
     ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select [numero de ligne],[Nombre de rotation],[numero de feuille de route] from rotation '
                         +'where [numero de feuille de route]='+TFdRnumerofeuillederoute.AsString;
     ADOQuery1.Active:=true;
    end;
     
    procedure TForm1.ADOQuery1AfterInsert(DataSet: TDataSet);
    begin
      ADOQuery1.FieldByName('numero de feuille de route').AsInteger:=TFdRnumerofeuillederoute.AsInteger;
    end;
     
    end.

    merci
    a+

    bonsoir,
    je crois que la propriété .TEXT du Query, en lecture uniquement, utiliser de préference pour inserer votre sql.

  11. #11
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Citation Envoyé par liazidf Voir le message
    bonsoir,
    je crois que la propriété .TEXT du Query, en lecture uniquement, utiliser de préference pour inserer votre sql.
    la réponse est non, le propriété est en lecture/écriture le problème ne vient pas de la.
    peut importe le type de ton champs il est préférable de passer par un parmetre qui se chargera de faire la conversion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ADOQuery1.Active:=false;
     ADOQuery1.SQL.Text:='select [numero de ligne],[Nombre de rotation],[numero de feuille de route] from rotation '
                         +'where [numero de feuille de route]= :NumFeuilleRoute';
    ADOQuery1.Patrameteres.ParamByName('NumFeuilleRoute').Value :=TFdRnumerofeuillederoute.Value;
     
     ADOQuery1.Active:=true;;
    ps: les espaces c'est a évité dans les non de champs
    SQL différent d'un SGBD a un autre les crochet ne son pas supporté par certain.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    bonjour,

    merci a tous pour votre aide.

    la réponse de aityahia est bonne , ça fonctionne

    merci beaucoup
    bonne soirée

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

Discussions similaires

  1. Problème avec syntaxe SQL
    Par Jean-Luc80 dans le forum VB.NET
    Réponses: 5
    Dernier message: 22/09/2013, 21h40
  2. [MySQL] Problème de syntaxe SQL (UPDATE)
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/06/2011, 18h27
  3. Problème de syntaxe SQL
    Par fastpulse dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/11/2007, 12h17
  4. Problème de Syntaxe SQL (Update Table)
    Par Thibaut_Dupont dans le forum Access
    Réponses: 15
    Dernier message: 17/07/2006, 16h32
  5. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07

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