Hvis jeg laver WHERE serienummer = 'Temp_Udlaan'' om til WHERE serienummer = ''44444''' (44444 er et felt i tabellen) så opdaterer den fint feltet, men ellers ikke !!!
jeg forstår ikke din brug af glypher ('), hvis e_udlaan_udlaan.text henviser til et editfelt, så skal du ikke have et ' foran.
En nemmere løsning er at gøre brug af parametere se nedenunder (taget fra et af mine egne programmer)
with skemadatamodule.dagbogquery do begin skemadatamodule.Database1.starttransaction; try sql.clear; SQL.Add('update intouch'); SQL.Add('set initialer = (:E_Udlaan_Udlaan)); sql.add('where serienummer =(:Temp_Udlaan)'); Params[0].AsString :=E_Udlaan_Udlaan.Text; params[1].asinteger :=Temp_Udlaan; ExecSQL; skemadatamodule.database1.commit; except skemadatamodule.Database1.Rollback; raise exception.create('Der er ikke valgt noget bibliotek, ændringen blev ikke udført'); end; commitupdates; end;
picard: Hvis jeg fjerner ' tegnene, så gi'r den rigtig nok ikke nogen fejl når jeg compiler koden, men når jeg eksekvererne den, så kommer denne besked:
General SQL error. Syntax error (missing operator) in query expression 'E_Udlaan_Udlaan.Text+'
Men jeg forstår ikke lige helt din kode !!!
Kan du ikke lige prøve og kommenterer og rette den lidt til så den passer mere til det jeg har lavet ???
OKAY jeg går udfra at Q_Udlaan_Udlaan er en tquery komponent !!!!!!!!!!! E_Udlaan_Udlaan.Text er et editfelt !!!!!!!!!!!! Temp_Udlaan er en eller anden variabel !!!!!!!!!!!
Hvis vi starter med at kigge på tquery komponenten (Q_Udlaan_Udlaan) så har den en property der hedder SQL i den skriver du følgende:
UPDATE intouch SET initialer =:E_Udlaan_Udlaan WHERE serienummer =:Temp_Udlaan så klikker du på OK!!
(semikolonnet foran E_Udlaan_Udlaan og Temp_Udlaan angiver at der er tale om parametre dvs nogle endnu ikke fastlagte værdier !!!!!)
Under querykomponentens properties finder du en der hedder "params" klik på den, der skulle nu komme et vindue frem med to felter: E_Udlaan_Udlaan og Temp_Udlaan luk vinduet igen.
Hvis det er en knap der skal kalde updaten til databasen skal du ind under dens klikevent (dobbelklik :-) )
her skriver du følgende with Q_Udlaan_Udlaan do begin try close; Params[0].AsString :=E_Udlaan_Udlaan.Text; //Her angiver du værdien til para. fra tidligere params[1].asinteger :=Temp_Udlaan; //temp_udlaan skal selføli' have en værdi ExecSQL; except raise exception.create('Opdateringen blev ikke fuldført'); end; end;
Dette skulle meget gerne virke, ellers må du jo skrive igen :) Held og lykke
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.