Toon posts:

[delphi/mysql] update query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil in een delphi programma met een mysql database een update query uitvoeren, maar ik krijg steeds een foutmelding.
Ik gebruik de volgende code :
code:
1
2
3
4
5
6
7
q1.Sql.clear;
q1.Sql.Add('UPDATE kantinedienst');
q1.Sql.Add('SET kantinedienstNaam = '''+new_naam.Text+'''');
q1.Sql.Add('SET type = '''+new_type.Text+'''');
q1.Sql.Add('WHERE kantinedienstID = ('''+change_kid.Text+''')');
q1.execsql;
showmessage('Kantinedienst is gewijzigd');


Iemand suggesties hoe dit te moeten veranderen?

  • Eskimootje
  • Registratie: Maart 2002
  • Nu online
Welke foutmelding krijg je dan?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

volgens mij kan je execsql alleen doen met select?
maar het is voor mij al zolang geleden dat ik met delphi gewerkt hebt, dus zeker weten doe ik het niet

[ Voor 54% gewijzigd door Erkens op 28-05-2003 17:37 ]


  • Helox-in-a-box
  • Registratie: Augustus 2000
  • Laatst online: 22-08 22:05
is je SQL query wel goed? moet volgens mij een komma na de eerste 'SET kantinedienstNaam'

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Lezen
Dan even herformuleren onder de stippellijn ;)
 

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
De foutmelding gaat om een SQL syntax fout in de buurt van 'SET type = '''+new_type.Text+'''');q1.Sql.Add('WHERE kantinedienstID = ('''+change_kid.Text+''')');

maar ik zou niet weten wat hier fout is.

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-08 19:22
@Erkens: De functie Open is er voor select statements en ExecSQL voor de query's waar je geen result van terug krijgt.

[ Voor 7% gewijzigd door Sybr_E-N op 28-05-2003 17:43 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Sybr_E-N schreef op 28 May 2003 @ 17:42:
De functie Open is er voor select statements en ExecSQL voor de query's waar je geen result van terug krijgt.
ok, dat was het dus, ik wist dat er een verschil was :)

  • Just_a_Gamer
  • Registratie: November 2001
  • Laatst online: 22-08 22:10
Verwijderd schreef op 28 May 2003 @ 17:34:
Ik wil in een delphi programma met een mysql database een update query uitvoeren, maar ik krijg steeds een foutmelding.
Ik gebruik de volgende code :
code:
1
2
3
4
5
6
7
q1.Sql.clear;
q1.Sql.Add('UPDATE kantinedienst');
q1.Sql.Add('SET kantinedienstNaam = '''+new_naam.Text+'''');
q1.Sql.Add('SET type = '''+new_type.Text+'''');
q1.Sql.Add('WHERE kantinedienstID = ('''+change_kid.Text+''')');
q1.execsql;
showmessage('Kantinedienst is gewijzigd');


Iemand suggesties hoe dit te moeten veranderen?
ExecSQL is wel goed. Voor select statements moet je Open of active is true zetten. Als je UPDATE, INSERT of DELETE doet dan moet je ExecSQL gebruiken.

Ik heb zo'n vermoden dat die ( ) bij je where statement onnodig is. En als kantinedienstID een integer is dan hoeft er geen quotes omheen.

[edit] je had al de foutmelding gegeven tijdens mijn posting ;)

[ Voor 17% gewijzigd door Just_a_Gamer op 28-05-2003 17:45 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Het heeft te maken met spaties vermoed ik

Als je eens kijkt hoe jouw sql - statement eruit ziet, denk ik dat je zoiets zal krijgen:
code:
1
UPDATE kantinedienstSET kantinedienstnaam='....' ...

Zoals je ziet is die SET aan die kantinedienst geplakt. Zorg er eens voor dat er een spatie tussen komt. (Dit is ook het geval bij de WHERE).
Ow, ik zie ondertussen dat het al opgelost was. :D
Blijkbaar zorgt die Add er dus wel voor dat er spaties tussen komen. Die komma moet er idd ook staan.

Trouwens, waarom maak je geen gebruik van parameters? Zo veel veiliger en makkelijker.
code:
1
2
3
4
q1.SQL.Text := 'UPDATE klantendienst SET kantinenaam = :p_naam WHERE ID = :p_ID';
q1.ParamByName ('p_naam').AsString := new_naam.Text;
q1.ParamByName ('p_ID').AsInteger := StrToInt(id.Text);
q1.ExecSQL();


En zoals Just a Gamer al zegt, rond numerieke waardes mag je geen quotes zetten, maar als je parameters gebruikt ben je van dat ganse gedoe al af.

[ Voor 20% gewijzigd door whoami op 28-05-2003 21:07 ]

https://fgheysels.github.io/


  • cimbom
  • Registratie: Juni 2001
  • Laatst online: 26-04-2024

cimbom

Just Kidding

q1.Sql.Add('SET kantinedienstNaam = '''+new_naam.Text+'''');
q1.Sql.Add('SET type = '''+new_type.Text+'''');
die tweede set mag weg denk ik.. en wel met komma's scheiden set kantinedienstnaam ='bdfdfd' , type ='dfgdg'
Pagina: 1