Avatar billede wolfgang Praktikant
17. maj 2004 - 11:22 Der er 17 kommentarer og
1 løsning

Slet alle poster der er ældre end 48 timer

Hej med Jer,

Jeg har et spørgsmål om hvorledes jeg kan finde og slette alle poster der er oprettet der er ældre end 48 timer eller derover.

Som jeg ser det skal jeg bruge et SQL udtræk til at finde de relevante poster, for derefter at slette dem.

Jeg har i min DB en felt der holder dato for oprettelse af hver eneste post.

Et sidespørgsmål er, hvordan vil det være bedst at køre denne rutine?

Jeg håber I kan/vil hjælpe.

MVH
Wolfgang
Avatar billede fennec Nybegynder
17. maj 2004 - 11:25 #1
conn.Execute("delete from DinTabel where DatoFelt<'"& dateadd("t",-48,now()) &"'")
Avatar billede fennec Nybegynder
17. maj 2004 - 11:26 #2
en lille fejl. Det skal være h og ikke t

conn.Execute("delete from DinTabel where DatoFelt<'"& dateadd("h",-48,now()) &"'")
Avatar billede wolfgang Praktikant
17. maj 2004 - 11:34 #3
Hej Fennec,

Jeg er desværre kommet til at give dig en forkert oplysning :(
Jeg har følgende felter i DB'en.

Feltnavn  Eks. på Data
RegDate = 13-05-2004
RegTime = 13:52:51

Håber at du vil rette din kode til.

MVH
Wolfgang
Avatar billede fennec Nybegynder
17. maj 2004 - 11:47 #4
Hvilken datatype er RegDate og RegTime. Tekst eller dato???
Avatar billede wolfgang Praktikant
17. maj 2004 - 11:49 #5
Dato.
Henholdsvis med Std. værdien Date() og Time ()
Avatar billede fennec Nybegynder
17. maj 2004 - 11:54 #6
Hvad jeg lige kan regne nu, så burde denne gøre det:

conn.Execute("delete from DinTabel where RegDate<'"& dateadd("d",-2,date()) &"'" and RegTime <'"& right(dateadd("h",-48,now()),8) &"')
Avatar billede fennec Nybegynder
17. maj 2004 - 11:55 #7
hvis du bruger Access skal du bruge # istedet for '.
Avatar billede wolfgang Praktikant
17. maj 2004 - 12:10 #8
Hej Fennec, Jeg klart at jeg er kommet videre men...

Hvordan får loopet DB'en igennem op mod det script du har leveret ?

Håber ikke du er ved at træt af mig :D


MVH
wolfgang
Avatar billede fennec Nybegynder
17. maj 2004 - 12:16 #9
Det er helt i orden.... Jeg er her for at hjælpe, og hvis man ikke spørger lærer men ikke ;o)

Scriptet skulle gerne selv slette alle poster som er ældre end 48 timer. Så det er ikke nødvendig at loope.
Avatar billede wolfgang Praktikant
17. maj 2004 - 12:26 #10
Mjallow,

Min SQL Streng ser nu således ud:
Conn.Execute("DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND RegDate<#"& dateadd("d",-2,date()) &"# AND RegTime <#"& right(dateadd("h",-48,now()),8) &"#")

Den har dog ikke nogen indvirkning på mit indhold i DB'en.
Avatar billede fennec Nybegynder
17. maj 2004 - 12:33 #11
og titlen er også præcis 'Under oprettelse'???

prøv lige at skrive SQL'en ud. Og fortæl mig hvad den siger.

response.write "SQL-sætning: " & "DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND RegDate<#"& dateadd("d",-2,date()) &"# AND RegTime <#"& right(dateadd("h",-48,now()),8) &"#"
Conn.Execute("DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND RegDate<#"& dateadd("d",-2,date()) &"# AND RegTime <#"& right(dateadd("h",-48,now()),8) &"#")
Avatar billede wolfgang Praktikant
17. maj 2004 - 12:35 #12
Resultat:
SQL-sætning: DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND RegDate<#15-05-2004# AND RegTime <#12:37:54#
Avatar billede wolfgang Praktikant
17. maj 2004 - 12:36 #13
Jeg har naturligvis dobbelt tjecket at DB'en har indhold :D

Den burde fjerne 4 poster.
Avatar billede fennec Nybegynder
17. maj 2004 - 12:42 #14
Hvad er RegDate og RegTime på de 4 poster. Tror jeg kan se fejlen, men vil lige være sikker.....
Avatar billede wolfgang Praktikant
17. maj 2004 - 12:45 #15
Avatar billede fennec Nybegynder
17. maj 2004 - 13:01 #16
Det er fordi dato og tid ikke står i samme felt. Vi har 2 muligeder.

1. glemme tidspunktet og bare slette dem der er ældre på datoen
Conn.Execute("DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND RegDate<#"& dateadd("d",-2,date()) &"#")

2. Lave et felt på databasen som indeholder dato og tid. Hvis jeg husker ret er det også now() på Access.
Conn.Execute("DELETE FROM tbl_Projects WHERE Title = 'Under oprettelse' AND nyDatoFelt<#"& dateadd("h",-48,now()) &"#")
Avatar billede wolfgang Praktikant
17. maj 2004 - 13:08 #17
YES...

Jo tror jeg nøjes med #1.
Det virker 100%.

Tusind tak for hjælpen, det skal ikke glemmes.

MVH
Wolfgang
Avatar billede fennec Nybegynder
17. maj 2004 - 13:13 #18
no prob :o)
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