/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
asp SQL gem 3 dage gamle og slet resten af~
Fra : søren


Dato : 14-02-05 15:57

Hejsa
Jeg har brug for hjælp til at finde ud af
hvordan man kan slette alle poster efter de er 3 dage gamle og
bagud....
Jeg har en log hvor jeg gerne vil beholde 3 dage gamle poster.
Resten skal slettes af ældre dato.

Så fra dags dato i databasen og 3 dage tilbage skal der ikke
røres ved og så væk med resten.

Jeg ved ikke om jeg kan bruge nået af dette her:
Det er sikkert sat forkert sammen men håber der er nogen som kan
hjælpe mig tak.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("mindatabase.mdb")
Conn.Open DSN

strSQL = "DELETE * FROM mintabelher WHERE datediff('d', now,
Mitfelther som er Dato) > 3"

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
NoMoreSpam (14-02-2005)
Kommentar
Fra : NoMoreSpam


Dato : 14-02-05 16:53

"søren"
> Hejsa
> Jeg har brug for hjælp til at finde ud af
> hvordan man kan slette alle poster efter de er 3 dage gamle og
> bagud....
> Jeg har en log hvor jeg gerne vil beholde 3 dage gamle poster.
> Resten skal slettes af ældre dato.
>
> Så fra dags dato i databasen og 3 dage tilbage skal der ikke
> røres ved og så væk med resten.

> strSQL = "DELETE * FROM mintabelher WHERE datediff('d', now,
> Mitfelther som er Dato) > 3"
> Conn.Execute(strSQL)

Hej Søren
Du har fat i den rigtige ende, din SQL sætning er rigtig, men hvordan
ved du hvad der står i datofeltet ?? Det gør du ved at lave et recordset
og gennemløbe recordsettet i en løkke.

Dim rst
Set rst = Server.CreateObject("ADODB.Recordset")
strSQL1 = "SELECT MitDatoFelt FROM tblMinTabel; "
rst.Open strSQL1, conn
if rst.bof and rst.eof then
'
else
do until rst.eof
strSQL2 = "DELETE * FROM mintabelher WHERE datediff('d', now,
Mitfelther som er Dato) > 3"
Conn.Execute(strSQL2)
rst.movenext
loop
end if
rst.close
set rst = nothing

Det skal selvfølgelig skrives ind i den kode du har i forvejen.

--
Med venlig hilsen
Tom Jensen

Læs mere om databaser og asp her:
http://www.FFSoft.dk







søren (14-02-2005)
Kommentar
Fra : søren


Dato : 14-02-05 18:32

okay nu har jeg prøvet følgende:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../db/log.mdb")
Conn.Open DSN

Dim rst
Set rst = Server.CreateObject("ADODB.Recordset")
strSQL1 = "SELECT Dato FROM logusers; "
rst.Open strSQL1, conn
if rst.bof and rst.eof then

else

do until rst.eof
strSQL2 = "DELETE * FROM logusers WHERE datediff('d', now, Dato) > 3"
Conn.Execute(strSQL2)
rst.movenext
loop
end if
rst.close

set rst = nothing
Conn.Close
Set Conn = Nothing
%>

Er det korrekt? jeg har testet det af men det ser ikke ud til at slette
nået i databasen når en asp side bliver opdateret/besøgt. Det skulle meget
gerne kører af sig selv og checke om der er nået ældre end 3 dage og så
slette det af sig selv.

Der er godt nok ikke nogen fejlmeddelse når jeg besøger siden, så langt så
godt.

I tabel feltet: Dato har jeg det stående således datoerne:
13-02-2005 16:56:34

hvis det har nogen betydning på om det sletter eller ej.

håber stadig du kan hjælpe.






NoMoreSpam wrote in dk.edb.internet.webdesign.serverside.asp:
> "søren"
> > Hejsa
> > Jeg har brug for hjælp til at finde ud af
> > hvordan man kan slette alle poster efter de er 3 dage gamle og
> > bagud....
> > Jeg har en log hvor jeg gerne vil beholde 3 dage gamle poster.
> > Resten skal slettes af ældre dato.
> >
> > Så fra dags dato i databasen og 3 dage tilbage skal der ikke
> > røres ved og så væk med resten.
>
> > strSQL = "DELETE * FROM mintabelher WHERE datediff('d', now,
> > Mitfelther som er Dato) > 3"
> > Conn.Execute(strSQL)
>
> Hej Søren
> Du har fat i den rigtige ende, din SQL sætning er rigtig, men hvordan
> ved du hvad der står i datofeltet ?? Det gør du ved at lave et recordset
> og gennemløbe recordsettet i en løkke.
>
> Dim rst
> Set rst = Server.CreateObject("ADODB.Recordset")
> strSQL1 = "SELECT MitDatoFelt FROM tblMinTabel; "
> rst.Open strSQL1, conn
> if rst.bof and rst.eof then
> '
> else
> do until rst.eof
> strSQL2 = "DELETE * FROM mintabelher WHERE datediff('d', now,
> Mitfelther som er Dato) > 3"
> Conn.Execute(strSQL2)
> rst.movenext
> loop
> end if
> rst.close
> set rst = nothing
>
> Det skal selvfølgelig skrives ind i den kode du har i forvejen.
>
> --
> Med venlig hilsen
> Tom Jensen
>
> Læs mere om databaser og asp her:
> http://www.FFSoft.dk
>
>
>
>
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lars Hoffmann (14-02-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 14-02-05 18:43

NoMoreSpam wrote:
> Hej Søren
> Du har fat i den rigtige ende, din SQL sætning er rigtig, men hvordan
> ved du hvad der står i datofeltet ?? Det gør du ved at lave et recordset
> og gennemløbe recordsettet i en løkke.

Nej, hvad snakker du om der skal ikke gennemløbes noget recordset for at
udføre en delete. En delete kommando udføres ikke blot på en enkelt post, men
på hele tabellen.
Med venlig hilsen
Lars Hoffmann

Lars Hoffmann (14-02-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 14-02-05 18:44

søren wrote:

> strSQL = "DELETE * FROM mintabelher WHERE datediff('d', now,
> Mitfelther som er Dato) > 3"

Det ser helt rigtigt ud, måske lige ændre "now" til "now()", har du prøvet at
køre koden?

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste