webForumDet fria alternativet

Problem med DateDiff

7 svar · 256 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#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

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

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

Jesper TMedlem sedan nov. 20017 144 inlägg
#3

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

WebbisNetMedlem sedan feb. 20032 027 inlägg
#4

Jesper T skrev:

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

Det hände inget

WebbisNetMedlem 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

J.N.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

voigtann1Medlem 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%>
J.N.Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

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

130 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)