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
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
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]
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
Tu l'a définie comment ta requête ?
En Vb ou VBscript, c'est comme ça :
Je ne connais pas Delphi tu peux me dire comment tu fais en Delphi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Requete = "SELECT [Year], [Month] FROM [Table]"
@+
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??
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 !
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/ * * * * *
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!!!
Par exemple:
Il m'indique l'erreur (INVALID USE OF KEYWORD: ,IMPUT)
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
Maintenant si je retire le insert into et que je garde le select:
Alors que ici j'ai entouré le mots clé YEAR de guillemets et si je les retire il m'indique une erreur, normal !!!
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
Pourquoi dans le insert into cela ne marche pas????
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??
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 !
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
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/ * * * * *
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager