webForumDet fria alternativet

blir then även om det gått mer än 2 timmar

ASP

17 svar · 301 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1
                If datediff("h",date, cdate(krypinwhen)) < 2 Then 

                RecSet.Addnew
	
	RecSet("krypingastid") = session("id")
	RecSet("sort") = "krypin"
	RecSet("krypinagare") = ""&medlem&""
	RecSet("krypinwhen") = Now
	RecSet("krypingastnamn") = session("username")
	
	RecSet.Update	
	RecSet.Close

                End If

Det blir ändå Then fast att det har gått mer än två timmar. krypinwhen innehåller tex 2002-03-28 12:15.

Om jag skriver ut datediff("h",date, cdate(krypinwhen)) så får jag -896256 och då är krypinwhen = 2002-03-29 12:12:05

Vet någon vad felet kan vara?

Medlem sedan dec. 200012 464 inlägg
#2
If datediff("h", cdate(krypinwhen),date()) < 2 Then
Medlem sedan feb. 20011 498 inlägg
#3

Skrev fel i förra inlägget kom jag på, alltså det blir else fast att det har gått mer än två timmar, med din kod LarsG så blir det också else fast om det har gått mer än två timmar, varför?

Medlem sedan dec. 200012 464 inlägg
#4

Om du vill att villkoret skall vara sant om krypinwhen är mer än 2 timmar gammalt så får du vända på jämförelsen

If datediff("h", cdate(krypinwhen),date()) > 2 Then
Medlem sedan feb. 20011 498 inlägg
#5

Men då blir det then även om det har gått MINDRE än två timmar, alltså det blir then hela tiden.

Medlem sedan dec. 200012 464 inlägg
#6

Nej, det tror jag inte på.

Har du rätt ordning på parametrarna till datediff? Date skall vara sist.

Medlem sedan feb. 20011 498 inlägg
#7

Ursprungligen av LarsG
Har du rätt ordning på parametrarna till datediff? Date skall vara sist.

Parametrar? Vart?

Medlem sedan dec. 200012 464 inlägg
#8

Vad är det som är oklart?

Hur ser dín kod ut nu?

Medlem sedan feb. 20011 498 inlägg
#9
	If datediff("h", cdate(krypinwhen),date()) < 2 Then 

	RecSet.Addnew
	
	RecSet("krypingastid") = session("id")
	RecSet("sort") = "krypin"
	RecSet("krypinagare") = ""&medlem&""
	RecSet("krypinwhen") = Now
	RecSet("krypingastnamn") = session("username")
	
	
	RecSet.Update	
	RecSet.Close

                End If
Medlem sedan mars 20015 287 inlägg
#10

Och krypinwhen innehåller verkligen ett "giltigt datum"?

Medlem sedan feb. 20011 498 inlägg
#11

Den innehåller tex 2002-03-29 23:59

Medlem sedan mars 20015 287 inlägg
#12

Kanske är bäst om du visar mer kod från sidan...

Medlem sedan feb. 20011 498 inlägg
#13

SQL3 = "Select * From statistik where krypinagare = '"&medlem & "' AND krypingastnamn = '"&session("username")&"' order by id desc"
RecSet.Open SQL3, Connect, adOpenStatic, adLockOptimistic

If datediff("h", cdate(krypinwhen),date()) \< 2 Then 

RecSet.Addnew

RecSet("krypingastid") = session("id")
RecSet("sort") = "krypin"
RecSet("krypinagare") = ""&medlem&""
RecSet("krypinwhen") = Now
RecSet("krypingastnamn") = session("username")


RecSet.Update	
RecSet.Close

Else

Response.Write datediff("h",date, cdate(krypinwhen))

End If
Medlem sedan mars 20015 287 inlägg
#14

Inte för att jag kan speciellt mycket om datediff mm.
Men hur som helst tycker jag det verkar som att det som händer är att när du jämför tas BARA hänsyn till klockslaget, timmarna, så om det gått typ 25 timmar så verkar det bara vara en timme.

Kan den teorin stämma?

Medlem sedan feb. 20011 498 inlägg
#15

Har gjort om koden lite:

	SQL3 = "Select * From statistik where krypinagare = '"&medlem & "' AND krypingastnamn = '"&session("username")&"' order by id desc"
	RecSet.Open SQL3, Connect, adOpenStatic, adLockOptimistic 

	If datediff("h", (krypinwhen),now()) > 2 Then 

	RecSet.Addnew
	
	RecSet("krypingastid") = session("id")
	RecSet("sort") = "krypin"
	RecSet("krypinagare") = ""&medlem&""
	RecSet("krypinwhen") = Now
	RecSet("krypingastnamn") = session("username")
	
	
	RecSet.Update	
	RecSet.Close

	Else
	
	Response.Write datediff("h", (krypinwhen),now()) 

	End If

Alltså det blir alltid then även om datediff är mindre 2 och om jag byter > till < så blir det alltid Else även om datediff är större än 2.

Om jag skriver ut Response.Write datediff("h", (krypinwhen),now()) så skriver den 896324

vad är det för fel??

Medlem sedan feb. 20011 498 inlägg
#16

Har löst problemet.

Medlem sedan mars 20015 287 inlägg
#17

...och felet samt lösningen var?

Medlem sedan feb. 20011 498 inlägg
#18

Att jag hade glömt att göra krypinwhen till en variabel innan if-satsen.

Alltså

krypinwhen = RecSet("krypinwhen")

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)