Avatar billede bris Nybegynder
08. maj 2002 - 17:05 Der er 11 kommentarer

jet sql - Update!

Min delphi streng:

streng:='UPDATE gamle SET Dato = '+chr(39)+DateTimeToStr(tiden)+chr(39)+', Timestamp = '+chr(39)+inttostr(unix)+chr(39)+' WHERE ID = '+chr(39)+inttostr(temp1)+chr(39);

Sådan ser den ud:

UPDATE gmale SET Dato = '08-05-2000 17:01:43', Timestamp = '62' where ID = '2'

Hvad er der galt?
Avatar billede hermandsen Juniormester
08. maj 2002 - 17:16 #1
I stedet for Chr(39) kan du skrive ''''... Bare lige for en god ordens skyld! ;) Eller, hvis det er nemmere: #39
Avatar billede hermandsen Juniormester
08. maj 2002 - 17:18 #2
Hvad er der galt med den? Er det fordi den mangler det sidste, eller hvad? Forklar dig lige lidt nærmere!
Avatar billede bris Nybegynder
08. maj 2002 - 17:50 #3
Den skriver at syntaksen er forkert.. Det har fungeret med chr(39) før, så den tror jeg, at jeg holder mig til..
Avatar billede hermandsen Juniormester
08. maj 2002 - 17:56 #4
Så det er din SQL-streng der er noget galt med, eller hva'? Sorry... Der har jeg sgu ingen erfaring! :/
Avatar billede bris Nybegynder
08. maj 2002 - 18:26 #5
Måske kan du svare mig på en ting så.. Hvor skal der pinger omkring, og hvor skal der ikke..
Avatar billede hermandsen Juniormester
08. maj 2002 - 19:07 #6
pinger?!?
Avatar billede benson Nybegynder
08. maj 2002 - 20:51 #7
Du skriver "Den skriver at syntaksen er forkert.. Det har fungeret med chr(39) før, så den tror jeg, at jeg holder mig til.."

Hvad er ændret siden "før"?

Jeg er vant til at sætte ......WHERE-sætningen i ()

Er di sikker på at der skal anvendes ' og ikke "
Avatar billede jarihj Nybegynder
09. maj 2002 - 02:34 #8
Det kommer lidt an på hvilken database du kører. MSSQL plejer at acceptere begge dele, men hvis du er i tvivl brug så ' det er min erfaring. Men jeg har også dårlige er faringer med at give en sql server en datetime, da plejer jeg hellere at give den et float/real det virker bedre. Med en datetime streng er man afhængig af databasens datoformat.

feks:
sql:=format('update gamle set dato=%s where id>10',[floattostr(dato)]);

Dette plejer at virke, men du er lig nødt til at tage højde for om de db og delphi har samme 0-dag. Det har MSSQL 2000 og Delphi ikke (2 dages forskel)
Avatar billede nih Novice
12. maj 2002 - 13:07 #9
Du skal ikke bruge ' ved numeriske felter:

UPDATE gmale SET Dato = '08-05-2000 17:01:43', Timestamp = 62 where ID = 2

Hvis du har Access instaleret kan du oprette en foresp. og kopiere SQL'en ind og afprøve den.
mht. dato bør du anvende formattet yyyy-mm-dd i SQL strengen, ellers risikerer du at updatere med forkert dato (5.aug eller 8.maj)
Niels
Avatar billede nih Novice
12. maj 2002 - 13:08 #10
svar :o)
Avatar billede bris Nybegynder
12. maj 2002 - 18:20 #11
Det er helt klart min fejl.. Jeg oprettede spørgsmålet under en anden gruppe, fordi der ikke var nogen der svarede..
Grunden til det ikke virkede var, at Timestamp er et reserveret ord, og skulle derfor skrives [timestamp] når man lavede strengen..
Men ellers tak for hjælpen!!..
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester