OVH Cloud OVH Cloud

erreur Syntaxe SQL

7 réponses
Avatar
Pascal
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une erreur de
syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal

7 réponses

Avatar
Daniel Carollo
Bonjour Pascal!

Une chose va clocher pour sur: l'espace dans le nom de la table. Il faut le
mettre entre crochets dans la commande SQL, ou mieux: remplacer l'espace par
un tiret ou tout autre caractere.
Une autre chose risque de clocher: le code ci-dessous ne fonctionnera que si
les valeurs passees sont numeriques. Pour des donnees d'autres types, il
faudra mettre des separateurs appropries autour des valeurs (guillemets pour
des chaines de caracteres, dieses pour les dates, entre autres).

Enfin, sur le principe: creer une table pour chaque routine de nettoyage me
semble aussi far que felu, j'aurais plutot le reflexe de tout mettre dans
une seule table, avec une colonne de date/heure pour pouvoir separer le
nettoyage effectue a un instant T.
Vous ne nous montrez pas le reste du code, mais il y a fort a parier que si
cette creation de table se trouve dans une boucle, vous ayez plus d'une
table creee "au meme moment" (une a 8:12:58 et une a 8:12:59, meme s'il n'y
a que quelques millisecondes entre les deux)

De plus, il vous faudra faire une routine de nettoyage qui nettoye les
tables de routine de nettoyage... ;-)

Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:%
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une erreur
de

syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal




Avatar
Pascal
merci daniel de toutes ces précisions et de la rapidité de votre
réponse,mais effectivement vous n'avez pas vu le code
vous me dites : une chose va clocher pour sur, il faut le mettre entre
crochets, je pensais que cela n'était pas nécessaire et s'appliquait au
CREATE TABLE
pouvez-vous me dire alors pourquoi ce code fonctionne parfaitement
StrSql = " INSERT INTO T_" & MaxConcordance & "Numéro " & _
"(N°,col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(0) & "," & t1(1) & "," & t1(2) & "," &
t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"
mais pas : StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & ","
& _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

1) les valeurs ne sont QUE numériques
2) je dois dans ce cas: créer une autre table de résultat et ne peut en
aucun cas l'ajouter à la table en cours ces données sont retraitée par la
suite d'une autre manière.
3) enfin, faire un SAVE date/heure dans 1 boucle?????? , je ne me savais pas
très intelligent mais là c'est le summum Dte est pris bien évidemment au
début du code (1 seule fois)
4) Il n'y a aucune raison logique de faire un nettoyage du nettoyage du
nettoyage, cela ferait beaucoup de nettoyeurs et mes moyens sont limités

Pascal



"Daniel Carollo" a écrit dans le
message de news:OYKFT$
Bonjour Pascal!

Une chose va clocher pour sur: l'espace dans le nom de la table. Il faut
le

mettre entre crochets dans la commande SQL, ou mieux: remplacer l'espace
par

un tiret ou tout autre caractere.
Une autre chose risque de clocher: le code ci-dessous ne fonctionnera que
si

les valeurs passees sont numeriques. Pour des donnees d'autres types, il
faudra mettre des separateurs appropries autour des valeurs (guillemets
pour

des chaines de caracteres, dieses pour les dates, entre autres).

Enfin, sur le principe: creer une table pour chaque routine de nettoyage
me

semble aussi far que felu, j'aurais plutot le reflexe de tout mettre dans
une seule table, avec une colonne de date/heure pour pouvoir separer le
nettoyage effectue a un instant T.
Vous ne nous montrez pas le reste du code, mais il y a fort a parier que
si

cette creation de table se trouve dans une boucle, vous ayez plus d'une
table creee "au meme moment" (une a 8:12:58 et une a 8:12:59, meme s'il
n'y

a que quelques millisecondes entre les deux)

De plus, il vous faudra faire une routine de nettoyage qui nettoye les
tables de routine de nettoyage... ;-)

Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:%
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une
erreur


de
syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal








Avatar
Pascal
re daniel,
veuillez m'excuser mais ou voyez-vous un espace dans le nom de la table?
merci de m'éclairer, peut-être avec piles un peu plus "forte"

Pascal

"Daniel Carollo" a écrit dans le
message de news:OYKFT$
Bonjour Pascal!

Une chose va clocher pour sur: l'espace dans le nom de la table. Il faut
le

mettre entre crochets dans la commande SQL, ou mieux: remplacer l'espace
par

un tiret ou tout autre caractere.
Une autre chose risque de clocher: le code ci-dessous ne fonctionnera que
si

les valeurs passees sont numeriques. Pour des donnees d'autres types, il
faudra mettre des separateurs appropries autour des valeurs (guillemets
pour

des chaines de caracteres, dieses pour les dates, entre autres).

Enfin, sur le principe: creer une table pour chaque routine de nettoyage
me

semble aussi far que felu, j'aurais plutot le reflexe de tout mettre dans
une seule table, avec une colonne de date/heure pour pouvoir separer le
nettoyage effectue a un instant T.
Vous ne nous montrez pas le reste du code, mais il y a fort a parier que
si

cette creation de table se trouve dans une boucle, vous ayez plus d'une
table creee "au meme moment" (une a 8:12:58 et une a 8:12:59, meme s'il
n'y

a que quelques millisecondes entre les deux)

De plus, il vous faudra faire une routine de nettoyage qui nettoye les
tables de routine de nettoyage... ;-)

Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:%
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une
erreur


de
syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal








Avatar
Pascal
ah oui,!
je dis toujours à chacun son intelligence vous parliez de l'espace dans DTE
sorry il m'avait échappé!
Pascal

"Pascal" a écrit dans le message de
news:
re daniel,
veuillez m'excuser mais ou voyez-vous un espace dans le nom de la table?
merci de m'éclairer, peut-être avec piles un peu plus "forte"

Pascal

"Daniel Carollo" a écrit dans
le

message de news:OYKFT$
Bonjour Pascal!

Une chose va clocher pour sur: l'espace dans le nom de la table. Il faut
le

mettre entre crochets dans la commande SQL, ou mieux: remplacer l'espace
par

un tiret ou tout autre caractere.
Une autre chose risque de clocher: le code ci-dessous ne fonctionnera
que


si
les valeurs passees sont numeriques. Pour des donnees d'autres types, il
faudra mettre des separateurs appropries autour des valeurs (guillemets
pour

des chaines de caracteres, dieses pour les dates, entre autres).

Enfin, sur le principe: creer une table pour chaque routine de nettoyage
me

semble aussi far que felu, j'aurais plutot le reflexe de tout mettre
dans


une seule table, avec une colonne de date/heure pour pouvoir separer le
nettoyage effectue a un instant T.
Vous ne nous montrez pas le reste du code, mais il y a fort a parier que
si

cette creation de table se trouve dans une boucle, vous ayez plus d'une
table creee "au meme moment" (une a 8:12:58 et une a 8:12:59, meme s'il
n'y

a que quelques millisecondes entre les deux)

De plus, il vous faudra faire une routine de nettoyage qui nettoye les
tables de routine de nettoyage... ;-)

Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:%
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une
erreur


de
syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal












Avatar
Philippe [MS]
Bonjour,

Pour des valeurs numériques, c'est normal de ne rien mettre.

Le plus simple consiste à créer sa chaîne SQL et à l'afficher avant
exécution. Si elle semble correcte, pas de problème pour l'exécuter sinon
faire les corrections nécessairtes.

Exemple :
INSERT INTO MaTable(ValEntier, ValText) VALUES(10, 'Mon text')
On voit bien que le numérique ne nécessite pas de caractère < ' > alors que
pour le texte, c'est nécessaire.

Phil.

"Pascal" wrote in message
news:#Qy#
merci daniel de toutes ces précisions et de la rapidité de votre
réponse,mais effectivement vous n'avez pas vu le code
vous me dites : une chose va clocher pour sur, il faut le mettre entre
crochets, je pensais que cela n'était pas nécessaire et s'appliquait au
CREATE TABLE
pouvez-vous me dire alors pourquoi ce code fonctionne parfaitement
StrSql = " INSERT INTO T_" & MaxConcordance & "Numéro " & _
"(N°,col1,col2,col3,col4,col5,col6) VALUES " &
_

"(" & t1(0) & "," & t1(1) & "," & t1(2) & ","
&

t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"
mais pas : StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " &
_

"(" & t1(1) & "," & t1(2) & "," & t1(3) &
","

& _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

1) les valeurs ne sont QUE numériques
2) je dois dans ce cas: créer une autre table de résultat et ne peut en
aucun cas l'ajouter à la table en cours ces données sont retraitée par
la

suite d'une autre manière.
3) enfin, faire un SAVE date/heure dans 1 boucle?????? , je ne me savais
pas

très intelligent mais là c'est le summum Dte est pris bien évidemment au
début du code (1 seule fois)
4) Il n'y a aucune raison logique de faire un nettoyage du nettoyage du
nettoyage, cela ferait beaucoup de nettoyeurs et mes moyens sont limités

Pascal



"Daniel Carollo" a écrit dans
le

message de news:OYKFT$
Bonjour Pascal!

Une chose va clocher pour sur: l'espace dans le nom de la table. Il faut
le

mettre entre crochets dans la commande SQL, ou mieux: remplacer l'espace
par

un tiret ou tout autre caractere.
Une autre chose risque de clocher: le code ci-dessous ne fonctionnera
que


si
les valeurs passees sont numeriques. Pour des donnees d'autres types, il
faudra mettre des separateurs appropries autour des valeurs (guillemets
pour

des chaines de caracteres, dieses pour les dates, entre autres).

Enfin, sur le principe: creer une table pour chaque routine de nettoyage
me

semble aussi far que felu, j'aurais plutot le reflexe de tout mettre
dans


une seule table, avec une colonne de date/heure pour pouvoir separer le
nettoyage effectue a un instant T.
Vous ne nous montrez pas le reste du code, mais il y a fort a parier que
si

cette creation de table se trouve dans une boucle, vous ayez plus d'une
table creee "au meme moment" (une a 8:12:58 et une a 8:12:59, meme s'il
n'y

a que quelques millisecondes entre les deux)

De plus, il vous faudra faire une routine de nettoyage qui nettoye les
tables de routine de nettoyage... ;-)

Bonne continuation,

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:%
bonsoir,
qqn peut-il me dire ce qui cloche dans ce code et qui provoque une
erreur


de
syntaxe (3314)

sachant que Dte= Date & " " & Hour(Time) & ":" & Minute(Time)
StrSql = " INSERT INTO RésultatRoutineNettoyage" & Dte & _
"(col1,col2,col3,col4,col5,col6) VALUES " & _
"(" & t1(1) & "," & t1(2) & "," & t1(3) & "," & _
t1(4) & "," & t1(5) & "," & t1(6) & ");"

merci de votre aide

Pascal












Avatar
Daniel Carollo
Boneoir Pascal!

Tout est bien qui finit bien, alors...

Il n'en reste pas moins que je reste toujours de l'avis que de creer une
table differente pour chaque operation de nettoyage est une aberration. Vous
dites que c'est necessaire parceque les "données sont retraitée par la suite
d'une autre manière."

Cela veut dire que le procesuss de traitement qui suit travaille toujours
sur un objet different.

La table concernee ne contient qu'une ligne!

Quelle est l'utilite d'avoir une base de donnees relationnelle dans ce cas?

Si le processus suivant est capable d'aller chercher un enregistrement dans
une table dont le nom change tout le temps, il devrait etre aussi capable
d'aller chercher un enregistrement dans une table dont le nom reste fixe.

Je suis desole d'apparaitre inflexible et tetu sur ce sujet, mais chaque
fois que j'ai vu des aberrations semblable (une table par an, ou encore une
par mois, un champ par jour du mois et ce genre d'elucubrations), cela a
invariablement pose des problemes par la suite.

Bonne continuation.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:
ah oui,!
je dis toujours à chacun son intelligence vous parliez de l'espace dans
DTE

sorry il m'avait échappé!
Pascal

"Pascal" a écrit dans le message de
news:
re daniel,
veuillez m'excuser mais ou voyez-vous un espace dans le nom de la table?
merci de m'éclairer, peut-être avec piles un peu plus "forte"

Pascal




Avatar
Pascal
rebonsoir daniel,
effectivement tout est bien qui fini bien!
Pour vous expliquer le processus je devrais vous écrire plusieurs pages et
ce n'est pas le sujet!
sachez cependant que je pars de plusieurs millions de valeurs numériques, la
routine de nettoyage n'est effectué QU'UNE SEULE FOIS mais le nom +
date+heure permet de se rappeller quant elle à été crée

la table ne contient certainement pas une ligne sinon je ne verrai pas
l'intérêt de la chose!

<<> Si le processus suivant est capable d'aller chercher un enregistrement
dans
une table dont le nom change tout le temps, il devrait etre aussi capable
d'aller chercher un enregistrement dans une table dont le nom reste
fixe.>>>


Certainement mais dans ce cas de figure n'est pas interressant et ne
convient pas à cet application

<<<ce genre d'elucubrations), cela a invariablement pose des problemes par
la suite>>
NON NON et NON vous parlez en rêgle générale, vous ne pouvez juger puisque
vous ne connaissez pas les tenants et aboutissants, mais rassurez-vous cela
fonctionne très bien et vous remercie encore pour votre interventions.

bien à vous
Pascal


"Daniel Carollo" a écrit dans le
message de news:eDPq$
Boneoir Pascal!

Tout est bien qui finit bien, alors...

Il n'en reste pas moins que je reste toujours de l'avis que de creer une
table differente pour chaque operation de nettoyage est une aberration.
Vous

dites que c'est necessaire parceque les "données sont retraitée par la
suite

d'une autre manière."

Cela veut dire que le procesuss de traitement qui suit travaille toujours
sur un objet different.

La table concernee ne contient qu'une ligne!

Quelle est l'utilite d'avoir une base de donnees relationnelle dans ce
cas?


Si le processus suivant est capable d'aller chercher un enregistrement
dans

une table dont le nom change tout le temps, il devrait etre aussi capable
d'aller chercher un enregistrement dans une table dont le nom reste fixe.

Je suis desole d'apparaitre inflexible et tetu sur ce sujet, mais chaque
fois que j'ai vu des aberrations semblable (une table par an, ou encore
une

par mois, un champ par jour du mois et ce genre d'elucubrations), cela a
invariablement pose des problemes par la suite.

Bonne continuation.

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Pascal" wrote in message
news:
ah oui,!
je dis toujours à chacun son intelligence vous parliez de l'espace dans
DTE

sorry il m'avait échappé!
Pascal

"Pascal" a écrit dans le message de
news:
re daniel,
veuillez m'excuser mais ou voyez-vous un espace dans le nom de la
table?



merci de m'éclairer, peut-être avec piles un peu plus "forte"

Pascal