Probleme de UPDATE ET INSERT

Résolu
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 8 mai 2006 à 13:35
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 8 mai 2006 à 21:19
Bonjour,

J'ai crée un programme de gestion, dans ce programme j'ai deux boutons ajouter et modifier, mais le probleme c'est que mes boutons fonctionnent pas il me marque une erreur sur les deux boutons lorsque je fais Executer(F9).

Erreur de syntaxe dans l'instruction UPDATE. (pour le bouton modifier).

Erreur de syntaxe dans l'instruction INSERT INTO. (pour le bouton Ajouter)
Ce que je comprends pas c'est que j'ai ecris presque le même code avec une autre Form ouil y avait un bouton Ajouter et modifier j'ai recopié exactement la même syntaxe mais en vain il y a toujours une erreur.

Voici le code en question où il y a erreur

procedure TPersonnel.BitBtn1Click(Sender: TObject);
begin
if (edit1.text='') or (edit2.text='') or (edit3.text='') or (edit4.text='')
or (edit6.text='') or (edit7.text='') or (edit8.text='') or (edit9.text='') or (edit10.text='') then
begin
messagedlg('Tous les champs ne sont pas remplis',mtWarning,[mbok],0);
end
else
with DataModule5.ADOQ_Personnel do
begin
SQL.Clear;
SQL.Add('INSERT INTO PERSONNEL');
SQL.Add('(JUSTIFICATION,NOM,PRENOM,ADRESSE,CODE_POSTAL,LOCALITE,DATE,MATRICULE,TELEPHONE)');
SQL.Add(format('values(''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'',''%s'')',
[edit1.Text,edit2.text,edit3.Text,edit4.text,edit6.text,edit7.text,edit8.text,edit9.text,edit10.text]));
ExecSQL;
begin
with DataModule5.ADOQ_Fonction do
begin
SQL.Clear;
SQL.Add('SELECT * FROM Personnel ORDER BY NOM');
Open;
edit1.text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
edit6.text:='';
edit7.text:='';
edit8.text:='';
edit9.text:='';
edit10.text:='';
end;
messagedlg('Ajout réussi',mtWarning,[mbok],0);
Personnel.Visible:=false;
Importation_Personnel.visible:=true;
end;
end;
end;


procedure TPersonnel.BitBtn2Click(Sender: TObject);
begin
with DataModule5.ADOQ_Personnel do
begin
SQL.Clear;
SQL.Add('UPDATE PERSONNEL set JUSTIFICATION=:Justification, NOM=:Nom, PRENOM=:Prenom, ADRESSE=:Adresse, CODE_POSTAL=:Code_Postal, LOCALITE=:Localite, DATE=:Date, MATRICULE=:Matricule, TELEPHONE=:Telephone');
SQL.Add('WHERE JUSTIFIC1ATION=:OldType and NOM=:OldType1 and PRENOM=:OldType2 and ADRESSE=:OldType3 and CODE_POSTAL=:OldType4 and LOCALITE=:OldType5 and DATE=:OldType6 and MATRICULE=:OldType7 and TELEPHONE=:OldType8');
Parameters.ParamByName('Justification').Value:=edit1.Text;
Parameters.ParamByName('OldType').Value:=OldType;
Parameters.ParamByName('Nom').Value:=edit2.Text;
Parameters.ParamByName('OldType1').Value:=OldType1;
Parameters.ParamByName('Prenom').Value:=edit3.Text;
Parameters.ParamByName('OldType2').Value:=OldType2;
Parameters.ParamByName('Adresse').Value:=edit4.Text;
Parameters.ParamByName('OldType3').Value:=OldType3;
Parameters.ParamByName('Code_Postal').Value:=edit6.Text;
Parameters.ParamByName('OldType4').Value:=OldType4;
Parameters.ParamByName('Localite').Value:=edit7.Text;
Parameters.ParamByName('OldType5').Value:=OldType5;
Parameters.ParamByName('Date').Value:=edit8.Text;
Parameters.ParamByName('OldType6').Value:=OldType6;
Parameters.ParamByName('Matricule').Value:=edit9.Text;
Parameters.ParamByName('OldType7').Value:=OldType7;
Parameters.ParamByName('Telephone').Value:=edit10.Text;
Parameters.ParamByName('OldType8').Value:=OldType8;
ExecSQL;


end;
end;

7 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 mai 2006 à 18:43
DATE est un mot réservé du langage SQL !!!!
Si tu veux l'utiliser malgré tout( quoique ça va te pourrir la vie) mets le entre guillemets doubles.
JUSTIFICATION,NOM,PRENOM,ADRESSE,CODE_POSTAL,


LOCALITE,DATE,MATRICULE,TELEPHONE)

Le mieux est de renommer ta colonne.

May Delphi be with you !

<HR color=#008000>


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006
8 mai 2006 à 21:19
Bonsoir,

Merci pour votre réponse effectivement l'erreur vient du champs DATE.

Grand merci pour votre réponse.

Amicalement.
3
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006
8 mai 2006 à 13:39
Merci de votre aide .
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
8 mai 2006 à 14:19
Ca ne répond pas à la question mais ça ne mange pas de pain :

Tu peux faire tenir tout ça :

edit1.text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
edit6.text:='';
edit7.text:='';
edit8.text:='';
edit9.text:='';
edit10.text:='';

en 1 instruction à savoir :

for i:=1 to 10 do
tedit(personnel.findcomponent('edit'+inttostr(i))).clear;

à condition de déclarer une variable integer nommée i et que ta form s'appelle personnel, sinon tu remplace personnel par le composant parent de tes TEdit...

Voilà ... c'était juste un petit conseil en passant... par plaisir d'aider...

De même pour le bloc :

Parameters.ParamByName('Justification').Value:=edit1.Text;
Parameters.ParamByName('OldType').Value:=OldType;
Parameters.ParamByName('Nom').Value:=edit2.Text;
Parameters.ParamByName('OldType1').Value:=OldType1;
Parameters.ParamByName('Prenom').Value:=edit3.Text;
Parameters.ParamByName('OldType2').Value:=OldType2;
Parameters.ParamByName('Adresse').Value:=edit4.Text;
Parameters.ParamByName('OldType3').Value:=OldType3;
Parameters.ParamByName('Code_Postal').Value:=edit6.Text;
Parameters.ParamByName('OldType4').Value:=OldType4;
Parameters.ParamByName('Localite').Value:=edit7.Text;
Parameters.ParamByName('OldType5').Value:=OldType5;
Parameters.ParamByName('Date').Value:=edit8.Text;
Parameters.ParamByName('OldType6').Value:=OldType6;
Parameters.ParamByName('Matricule').Value:=edit9.Text;
Parameters.ParamByName('OldType7').Value:=OldType7;
Parameters.ParamByName('Telephone').Value:=edit10.Text;
Parameters.ParamByName('OldType8').Value:=OldType8;

j'utiliserais un with parameters imbriqué à l'autre pour alléger l'écriture...

SISI231
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006
8 mai 2006 à 14:33
Merci pour ton information mais le problème est pas la c'est claire. Mais j'en prends quand même compte.

Merci d'avance
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
8 mai 2006 à 14:42
Je sais que le pb n'est pas là : c'était juste pour dire...

Un pb que je vois c'est qu'entre tes 2 SQL.Add il n'y a pas d'espace.

Exemple :

dans :

SQL.Add('UPDATE PERSONNEL set JUSTIFICATION=:Justification, NOM=:Nom, PRENOM=:Prenom, ADRESSE=:Adresse, CODE_POSTAL=:Code_Postal, LOCALITE=:Localite, DATE=:Date, MATRICULE=:Matricule, TELEPHONE=:Telephone');
SQL.Add('¤WHERE JUSTIFIC1ATION=:OldType and NOM=:OldType1 and PRENOM=:OldType2 and ADRESSE=:OldType3 and CODE_POSTAL=:OldType4 and LOCALITE=:OldType5 and DATE=:OldType6 and MATRICULE=:OldType7 and TELEPHONE=:OldType8');

A l'endroit du rond rouge je rajouterais un espace.

Cordialement.

SISI231
0
cs_cmoimeme Messages postés 28 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 3 septembre 2006
8 mai 2006 à 14:45
Bonjour bah le probleme ne vient pas de la vu que dans mon autre FORM, le code pour faire un UPDATE j'ai pas mis d'espace avant le WHERE.

Merci quand même pour ton aide.
0
Rejoignez-nous