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

Langage SQL Discussion :

Year (mot réservé)


Sujet :

Langage SQL

  1. #1
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [RESOLU]Year (mot réservé)
    Je programme en delphi
    avec des bases non modifiables.

    Le problème est que dans mes tables j'ai des champs
    YEAR , MONTH.

    Comment puis-je sélectionner ses colonnes dans une requete
    sans obtenir d'erreur (Mot RESERVE)

    Merci à tous

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 33
    Points : 44
    Points
    44
    Par défaut
    Salut

    Il me semble que tu peux faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT [Year], [Month] FROM [Table]
    @+

  3. #3
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Cela ne marche pas, j'ai tjs une erreur de " Invalid use of keyword"

    Si qq à une autre solution, elle est la bienvenue.

    Le language sql utilisé est celui compatible avec DELPHI.

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 33
    Points : 44
    Points
    44
    Par défaut
    Tu l'a définie comment ta requête ?

    En Vb ou VBscript, c'est comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Requete = "SELECT [Year], [Month] FROM [Table]"
    Je ne connais pas Delphi tu peux me dire comment tu fais en Delphi ?

    @+

  5. #5
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Non avec les crochet cela ne donne rien.

    On m'a renseigner sur les guillemets.

    Ca marche plus ou moins.

    Voila qd je fais un bete select ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query5.SQL.Add('Select "YEAR" from ' +  fichier21 + ' WHERE DBK=  "'+  edit1.text   + '" AND FYEAR= "' + Maskedit2.text + '" AND DOCNO= ' + edit2.Text + ' ');

    mais que je fais avec un insert into tjs l'erreur sur le mot réservé YEAR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     query2.SQL.Add('INSERT INTO ' + fichier21 + ' (DBK,FYEAR,DOCNO,"year") ' +                  ' SELECT '+al+'DBK ,'+al+'FYEAR,'+al+'DOCNO,"'+al+'YEAR"'+
    ' from ":alias2:'+fichier11+'" df WHERE DBK=  "' +  edit1.text+
     '" AND FYEAR= "' + Maskedit2.text + '" AND DOCNO= ' + edit2.Text);

    quelqu'un sait m'expliquer pourquoi??

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Fin de 2e ligne, tu as : '+al+'YEAR"'

    T'es sûr de ne pas te gauffrer avec les cotes et guillemets ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    La norme SQL précise que lorsque l'on veut utiliser un mot réservé du SQL comme identifiant (de colonne, de table...) ce qui n'est JAMAIS une bonne idée... il faut entourer ce mot de guillemets.

    Exemple :
    SELECT "SELECT"
    FROM "FROM"
    WHERE "TABLE" = 123

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La norme sql avec delphi est ANSI-92 SQL,est- ce que cela peut changer qq chose.

    Le plus bizarre c'est que un select tout ce qu'il y a de plus simple marche avec les guillemets mais avec un insert into.

    Ca ne vas pas????

    Je suis perdu!!!

  9. #9
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO dfIDOCT
    (DBK,FYEAR,DOCNO,"YEAR",IMPUT) 
    SELECT df.dfIDOCT.DBK,df.dfIDOCT.FYEAR,
    df.dfIDOCT.DOCNO,"df.dfIDOCT.YEAR",df.dfIDOCT.IMPUT
    from ":alias2:dfIDOCT" df
    WHERE DBK=  "FAC" AND FYEAR= "2002" AND DOCNO=  20020009
    Il m'indique l'erreur (INVALID USE OF KEYWORD: ,IMPUT)


    Maintenant si je retire le insert into et que je garde le select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT df.dfIDOCT.DBK,df.dfIDOCT.FYEAR,
    df.dfIDOCT.DOCNO,"df.dfIDOCT.YEAR",df.dfIDOCT.IMPUT
    from ":alias2:dfIDOCT" df
    WHERE DBK=  "FAC" AND FYEAR= "2002" AND DOCNO=  20020009
    Alors que ici j'ai entouré le mots clé YEAR de guillemets et si je les retire il m'indique une erreur, normal !!!

    Pourquoi dans le insert into cela ne marche pas????

  10. #10
    Fir
    Fir est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    On ma conseiller de ne pas mettre les champs de la tables sources.

    Qand je fais de cette façon il me met comme erreur:
    INVALID PARAMETER

    BDE ERROR:9986 [$27] [$2]


    Voila ma requête

    Code:
    INSERT INTO dfIHDDOC
    SELECT df.dfIHDDOC.DBK,df.dfIHDDOC.FYEAR,
    df.dfIHDDOC.DOCNO,"df.dfIHDDOC.YEAR",
    "df.dfIHDDOC.MONTH",df.dfIHDDOC.DBKTYPE,
    df.dfIHDDOC.DOCDATE,df.dfIHDDOC.DUECAT,
    df.dfIHDDOC.DUEDATE,df.dfIHDDOC.DELIVDELAY,
    df.dfIHDDOC.DELIVDATE,df.dfIHDDOC.DELIVCON,
    df.dfIHDDOC.CPID,df.dfIHDDOC.CPTYPE,
    df.dfIHDDOC.DELIVID,df.dfIHDDOC.DELIVN1,
    df.dfIHDDOC.DELIVN2,df.dfIHDDOC.DELIVA1,
    df.dfIHDDOC.DELIVA2,df.dfIHDDOC.DELIVCP,
    df.dfIHDDOC.DELIVLOCAL,df.dfIHDDOC.INTREM,
    df.dfIHDDOC.EXTREM,df.dfIHDDOC.REMARK,
    df.dfIHDDOC.LAYOUT,df.dfIHDDOC.LAYSEND,
    df.dfIHDDOC.LAYPICK,df.dfIHDDOC.NBPRINT,
    df.dfIHDDOC.NBSEND,df.dfIHDDOC.NBPICK,
    df.dfIHDDOC.PRCODE,df.dfIHDDOC.LANCOD,
    df.dfIHDDOC.PRCDISC,df.dfIHDDOC.DISCOUNTCAT,
    df.dfIHDDOC.PRCCDTDISC,df.dfIHDDOC.DATEDISC,
    df.dfIHDDOC.PAYDISCDEL,df.dfIHDDOC.PAYMODE,
    df.dfIHDDOC.CURRENCY,df.dfIHDDOC.CURRATE,
    df.dfIHDDOC.STATUS,df.dfIHDDOC.GLOSSARY,
    df.dfIHDDOC.REPRESENT,df.dfIHDDOC.VCS,
    df.dfIHDDOC.VATINCLUDED,df.dfIHDDOC.CERTIFIED,
    df.dfIHDDOC.ISDOCPRINT,df.dfIHDDOC.TOTLINE,
    df.dfIHDDOC.CURRTOTLINE,df.dfIHDDOC.BASEVATAMN,
    df.dfIHDDOC.CURRBASEVATAMN,df.dfIHDDOC.VATAMN,
    df.dfIHDDOC.CURRVATAMN,df.dfIHDDOC.DISCAMN,
    df.dfIHDDOC.CURRDISCAMN,df.dfIHDDOC.CDTDISCAMN,
    df.dfIHDDOC.CURRCDTDISCAMN,df.dfIHDDOC.PAYAMN,
    df.dfIHDDOC.CURRPAYAMN,df.dfIHDDOC.BASECURREURO,
    df.dfIHDDOC.ISBLOCKED,df.dfIHDDOC.LINKNO,
    df.dfIHDDOC.ISCLOSED,df.dfIHDDOC.LANGUAGE,
    df.dfIHDDOC.IODBK,df.dfIHDDOC.IOFYEAR,
    df.dfIHDDOC.IODOCNO,df.dfIHDDOC.MODIFYDATE,
    df.dfIHDDOC.CREATEDATE,df.dfIHDDOC.AUTHOR,
    df.dfIHDDOC.SUBSCRID,df.dfIHDDOC.LAYORDER,
    df.dfIHDDOC.NBORDER,df.dfIHDDOC.WAREHOUSE,
    df.dfIHDDOC.TRSPCHARGEAMN
    from ":alias2:dfIHDDOC" df
    WHERE DBK= "FAC" AND FYEAR= "2002" AND DOCNO= 20020009


    Que puis - faire??

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 770
    Points : 52 726
    Points
    52 726
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO dfIHDDOC 
    SELECT DBK, FYEAR, DOCNO, "YEAR", "MONTH", DBKTYPE, 
           DOCDATE, DUECAT, DUEDATE, DELIVDELAY, 
    ...
    from   :alias2:dfIHDDOC
    WHERE  DBK = 'FAC' AND FYEAR = '2002' AND DOCNO = 20020009
    Il ne faut pas utiliser de guillemets pour les chaines de caractères mais des apostrophe. Les guillemets sont réservés pour les noms des objets qui sont des mots clef SQL !
    De plus répéter df.dfIHDDOC. n'a aucun sens ! c'est soit df, soit dfIHDDOC mias pas les deux.

    Un bon cours de SQL me parait nécessaire. Mon bouquin comme mon site sont la pour ça !

    A +


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. Mot réservé et requête SQL
    Par akli_agha dans le forum Bases de données
    Réponses: 13
    Dernier message: 28/02/2008, 17h20
  2. java, mots réservés.
    Par Empty_body dans le forum JDBC
    Réponses: 3
    Dernier message: 15/12/2006, 16h39
  3. [ANTLR]gérer des mots réservés
    Par anitshka dans le forum EDI et Outils pour Java
    Réponses: 9
    Dernier message: 18/08/2006, 16h29
  4. Question sur l'utilisation du mot réservé static
    Par flash2590 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 00h20
  5. [MySQL] mot réservé dans un nom de champ
    Par dreamwanderer dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/12/2005, 20h54

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