Erreur syntaxe INSERT INTO [Résolu]

Signaler
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007
-
Guenky
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007
-
Salut! A chaque fois que j'exécute mon application, j'ai le message 'Erreur de syntaxe dans l'instruction INSERT INTO'...Je ne sais vraiment pas où se trouve l'erreur...

implementation

uses MenuAdmin;

{$R *.dfm}

procedure TUpDateCal.AjoutClick(Sender: TObject);
var Date : string;
begin
    AddDate.Active:=True;
    AddDate.SQL.Clear;
    if (EditDate.Text='') or (EditHeure.Text='') or (EditEpreuve.Text='')
    then Showmessage('La fiche n''a pas été correctement remplie.')
    else
    begin
      Date:=String(MenuGestion.DatedeChampionnat.Keyvalue);
      AddDate.SQL.Add('INSERT INTO CalTable(DateChampionnat,Date,Heure,TypeRencontre) VALUES ("'+Date+'","'+EditDate.Text+'","'+EditHeure.Text+'","'+EditEpreuve.Text+'");');
      AddDate.ExecSQL;
    end;
end;

end.

Merci

19 réponses

Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

Maintenant ça marche...Mais j'ai écrit ça...:

AddDate.SQL.Add('INSERT INTO CalTable VALUES ("'+Date+'","'+EditDate.Text+'","'+EditHeure.Text+'","'+EditEpreuve.Text+'");');
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
Salut,

Dans ces cas là, il peut être judicieux de faire un ShowMessage de ce que tu mets dans ton Add.
Messages postés
120
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
15 novembre 2007
1
salut,

Sans doute une valeur non reconnue dans la liste des valeurs de champs.
Les champs utilisés dans ta table sont de quel type?

Et encore une fois, je conseille l'utilisation de requètes paramétrées pour éviter tout problème de passage de date ou de texte comportant des ' ou des "
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

Je vais essayer en param mais par rapport au showmessage...J'ai aucun pb de syntaxe...Du moins que je connaisse...et tous les champs sont des textes...
Messages postés
120
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
15 novembre 2007
1
est-ce que tu pourrais mettre ici un copier-coller de ce que tu affiches avec ShowMessage ?
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
3
Bonjour,
Le    AddDate.Active:=True; n'est pas nécessaire,
Mais plutôt     AddDate.Active:=False; par précaution ...

Dom
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
3
Peut être même que c'est de là que vient ton erreur car tu ouvres la requête alors qu'elle est peut être vide ...?

Dom
Messages postés
296
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
18 décembre 2014
2
Bonjour,

Et la syntaxe des dates. Je ne sais pas quel moteur SQL tu utilises mais moi j'utilise Mysql et les dates doivent être écrite année-mois-jour et les heures heure:minutes:secondes.

C'est peut-être une piste. Sinon, Il faut que tu execute ta commande SQL avec un outils d'execution de commande SQl et là, tu comprendra mieux.

Bon courage

Oniria
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

 Bah je pense que c'est c'que je fais avec ExecSQL nan???...
Franchement je suis passé en param et j'ai revu l'expression mais rien...Ma base de données est sous Access
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
3
As-tu mis  AddDate.Active:=False; ?

Dom
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

heu ouais il est à false mais quand je veux le passer à true il me sort la même erreur!
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
3
si tu le mets à True, c'est que tu veux qu'il execute la requete dedans ... si il n'y en a pas : erreur ...

Dom
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

De toute façon ça marche toujours pas...Et je vois toujours pas l'erreur surtout que j'ai fais une requête du même type dans une autre unité et qu'elle marche...
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
Je plussois jelume : svp montre nous ce que tu obtiens avec le ShowMessage.
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

g un affichage très étrange:   ,_A
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

Heu nan...J'avais utilisé la mauvaise fonction...
Donc comme affichage j'ai:
INSERT INTO CalTable(DateChampionnat,Date,Heure,TypeRencontre) VALUES ("18/10/2006","a","a","a");
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
Tu peux essayer de suivre la piste de Oniria :
Essaye d'écrire correctement ce que tu met dans tes date et dans ton heure.

qqch comme ça :

AddDate.SQL.Add('INSERT INTO
CalTable(DateChampionnat,Date,Heure,TypeRencontre) VALUES
("18-10-2007","18-10-2007","11:11:11.222'","Blah Blah");');
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
10
J'ai foiré au moins un guillemet...
Et visiblement y a pas besoin des milliseconde
(Gaffe au paramètre régionaux aussi...)
AddDate.SQL.Add('INSERT INTO
CalTable(DateChampionnat,Date,Heure,TypeRencontre) VALUES
("18-10-2007","18-10-2007","11:11:11","Blah Blah");');
Messages postés
44
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
9 août 2007

Même avec ça j'ai une erreur...C'est désespérant...