webForumDet fria alternativet
Logga in / Bli medlem

Problem med DateDiff

ASP

7 svar · 256 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Trådstart#1

Med denna kod vill jag radera alla som har varit inaktiva i mer än 89 dagar.

<%Days=DateDiff(d, Now, Datum)
If Days > 89 Then
objConn.Execute("DELETE FROM tblUsers")
End if%>

Datum är det datum då medlemmen senast var inloggad.

Felmeddelandet jag får är
Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'DateDiff'

/default.asp, line 24

Medlem sedan nov. 20017 144 inlägg
#2

testa : DateDiff("d", Now, Datum)

Medlem sedan nov. 20017 144 inlägg
#3

Tänk dock på att din Delete tar bort alla poster ur tabellen tblUsers

Medlem sedan feb. 20032 027 inlägg
#4

Jesper T skrev:

testa : DateDiff("d", Now, Datum)

Det hände inget

Medlem sedan feb. 20032 027 inlägg
#5

jag har ändrat till

<%
dbDate=mainRS("Datum")
Days=DateDiff("d", Date, dbDate )
do until mainRS.EOF
If Days > 89 Then
objConn.Execute("DELETE FROM tblUsers")
End if
mainRS.MoveNext
Loop%>

men den loopar ändå inte igenom alla poster och raderar inget från databasen. Jag har koden på defaultsidan så att den ska köras så fort nån loggar in

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Då är det endast två saker att göra:

1. Skriv ut vad Days egentligen är.
2. Kontrollera syntaxen, behövs inte de två extraargumenten?
http://www.devguru.com/Technologies/vbscript/quickref/datediff.html

Medlem sedan juni 20019 519 inlägg
#7

WebbisNet: Som Jepser T skriver nu gör du (när det börja fungera) OM "Days" är större än 89 då ska du rensa hela databasen i tblUsers

kan tänka mig din kod ska se ut något i stil med:


<%
set mainRS = objconn.execute("Select datum,id from tblUsers")

do until mainRS.eof
dbDate= cdate(mainRS("Datum"))
Days=DateDiff("d", Date, dbDate )
If Days > 89 Then
  objConn.Execute("DELETE FROM tblUsers where ID = " & mainRS("ID"))
End if
mainRS.MoveNext : Loop

din gamla kod gör den inte en krock där då du säger att do until manrs.eof och sen försöker du ändå ta ut ett manRS("datum") innan loopen börja?

dbDate= mainRS("Datum")
Days=DateDiff("d", Date, dbDate )
do until mainRS.EOF
If Days > 89 Then
objConn.Execute("DELETE FROM tblUsers")
End if
mainRS.MoveNext
Loop%>
Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

Varför inte plocka fram rätt poster direkt i sql:en?

256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)