webForumDet fria alternativet

problem med if sats

24 svar · 425 visningar · startad av Boorg

BoorgMedlem sedan okt. 2004409 inlägg
#1

Har ett problem... Får fram fel värde i en if sats

	If Tot > Request.QueryString("k") Then
	Se = "<A>Det är fullbokat</A>"
	ElseIf Re("eID") = Request.QueryString("eID") And Re("mID") = Session("ED") then
	Se = "<A Href='badmin.asp?b=2emre&eID=" & Re("ID") & "'>Anmäl dig</A>"
	Else
	Se = "<A>Du är redan anmäld</A>"
	End If

Så som det ser ut nu får jag fram Värdet ur den sista Else raden. Men jag ska enligt hur värdena är få fram den mittersta...

är det något fel i denna koden eller.

Mvh Jesper

LarsGMedlem sedan dec. 200012 464 inlägg
#2
If clng(Tot) > clng(Request.QueryString("k")) Then
    Se = "<A>Det är fullbokat</A>"
ElseIf Re("eID") = Request.QueryString("eID") And Re("mID") = Session("ED") then
    Se = "<A Href='badmin.asp?b=2emre&eID=" & Re("ID") & "'>Anmäl dig</A>"
Else
    Se = "<A>Du är redan anmäld</A>"
End If
BoorgMedlem sedan okt. 2004409 inlägg
#3

nej.. det hjälpte inte :/
Det är så här att den lever sitt egete liv.. ifall man bokar sig så är bokningsknappen kvar.. men efter en stund så kanske den försvinner... och ibland såt det inget...
kan ge hela koden...

   Texter = "SELECT * FROM em_regg order by ID DESC"
   Re.Open Texter, Con, 3, 3 

	Dim Se, Tot
	Do Until Re.EOF	
 	If Re.EOF Then
	Exit Do
	End If 

	If Re("eID") = Request.QueryString("eID") then
	Tot = Tot + 1
	End If

	If clng(Tot) > clng(Request.QueryString("k")) Then
	Se = "<A>Det är fullbokat</A>"
	ElseIf Re("eID") = Request.QueryString("eID") And Re("mID") = Session("ED") then
	Se = "<A>Du är redan anmäld</A>"
	Else
	Se = "<A Href='?b=2emre&eID=" & Request.QueryString("eID") & "'>Anmäl dig</A>"
	End If

	Re.MoveNext
	Loop

       <% =se %>

Någon som ser något problem

@ndersMedlem sedan juni 200032 969 inlägg
#4

Du måste se till att du alltid jämför med rätt subtyper. En sträng med innehållet 12 är inte samma sak som talet 12.

	ElseIf Clng(Re("eID")) = Clng(Request.QueryString("eID")) And Clng(Re("mID")) = Clng(Session("ED")) then

Du får alltså se till att subtypskonvertera i alla dina jämförelser.

BoorgMedlem sedan okt. 2004409 inlägg
#5

Okej...
om man inte anger clng så blir det inget värde utan bara en siffra?

Men tror det eller ej.. det funkar inte ändå x(

Har testat o skriva ut all data samtidigt.. funkar perfekt.. får att dom värdena som ska vara för dom olika satserna men det funkar inte ändå..

Har bytt ut Se till Response.Write... tänkte det va det som hakade upp sig på något vis.. men icke..

@ndersMedlem sedan juni 200032 969 inlägg
#6

Hur ser koden ut nu då, när du lagt in dina subtypskonverteringar i alla jämförelser?

Okej...
om man inte anger clng så blir det inget värde utan bara en siffra?

Jag förstår inte riktigt vad du menar. Det är alltid ett värde, men inte ett värde av samma typ, om du inte ser till värdena är av samma typ.

BoorgMedlem sedan okt. 2004409 inlägg
#7

Jag förstår vad du menar...

Så ser den ut nu

<%	Do Until Re.EOF	
 	If Re.EOF Then
	Exit Do
	End If 

	If clng(Tot) > clng(Ree("Max")) Then
	Response.Write "<A>Det är fullbokat</A>"
	ElseIf Clng(Re("eID")) = clng(Request.QueryString("eID")) And Clng(Re("mID")) = Clng(Session("ED")) Then
	Response.Write "<A>Du är redan anmäld</A>"
	Else
	Response.Write "<A Href='badmin.asp?b=2emre&eID=" & Re("ID") & "'>Anmäl dig</A>"
	End If

	Re.MoveNext
	Loop %>

Det märkliga är ett jag får inte en enda av satserna att funkar.. inte ens den sista Else som borde funka i alla väder :/

@ndersMedlem sedan juni 200032 969 inlägg
#8

Och på vilket sätt fungerar det alltså inte nu? Vilka värden har fälten / variablerna nu när du testar?

jonneMedlem sedan jan. 20011 154 inlägg
#9

Skriv ut alla värdena först och se vad de innehåller innan du börjar jämföra så du verkligen vet att du har värden och rätt värden i alla variablar

BoorgMedlem sedan okt. 2004409 inlägg
#10

Hmmm konsigt...
nu händer det inget!
får inte fram ett enda värde när jag kör denna

<%	Do Until Re.EOF	
 	If Re.EOF Then
	Exit Do
	End If 

	Response.Write Tot & " Tot, " & Ree("Max") & " Max, " & Re("eID") & " eID, " & Re("mID") & " mID, "  & Session("Ed") & " ED"

	Re.MoveNext
	Loop %>

:/

jonneMedlem sedan jan. 20011 154 inlägg
#11

Säker på att recordsetet innehåller något så du verkligen kommer in i loopen och inte kastas ut?

@ndersMedlem sedan juni 200032 969 inlägg
#12
   Texte = "SELECT * FROM em order by ID = " & Request.QueryString("eID") & " "

Det var mig en konstig SQL-fråga. Ska det inte vara WHERE ID =... ?

BoorgMedlem sedan okt. 2004409 inlägg
#13

Ja dom värdena som jag hämtar finns...

men om dom inte finns.. så ska den juh köra en sista Else satsen? eller hur...

@ndersMedlem sedan juni 200032 969 inlägg
#14

Boorg skrev:

men om dom inte finns.. så ska den juh köra en sista Else satsen? eller hur...

Nej, det ska den inte. Om du indenterar din kod ordentligt så ser du nog det. Dina if-satser ligger ju bara i loopen. Är recordsetet EOF så är du inte inne i loopen.

BoorgMedlem sedan okt. 2004409 inlägg
#15

@nders:
jo det kanske det skall vara...
men problemet finns fortfarande kvar..

funderar på om det finns något som blockar Loopen från att börja.. det är det enda jag kan komma på.. men ser inget ppoblem :/

BoorgMedlem sedan okt. 2004409 inlägg
#16

just det ja.. men det finns värden där... har lagt in två värden på två ID...

så jag tycker att den fortfarande borde skruva ut det i den Write grejjen jag gjorde...

@ndersMedlem sedan juni 200032 969 inlägg
#17

Du har ju redan gått igenom loopen en gång, vilket innebär att markören står sist, dvs EOF.

Du måste flytta upp den igen.

Re.MoveFirst
BoorgMedlem sedan okt. 2004409 inlägg
#18

Du menar att byta ut den mot movenext?

@ndersMedlem sedan juni 200032 969 inlägg
#19

Nej, innan du kör igång den andra Re-loopen måste du flytta upp markören med MoveFirst.

BoorgMedlem sedan okt. 2004409 inlägg
#20

okej...
men problemet kvarstår... Detta är grymt konstigt.. för det funkade igår från och till igår.. men som sagt den levde sitt eget liv...

nu är koden...

<%	Do Until Re.EOF	
 	If Re.EOF And Ree.EOF And Ra.EOF Then
	Exit Do
	End If 

	Response.Write Tot & " Tot, " & Ree("Max") & " Max, " & Re("eID") & " eID, " & Re("mID") & " mID, "  & Ra("ID") & " ED"

	Ra.MoveFirst
	Re.MoveFirst
	Ree.MoveFirst
	Ra.MoveNext
	Re.MoveNext
	Ree.MoveNext
	Loop %>
268 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
143 ms — hämta forumlista (db)
123 ms — hämta statistik (db)
142 ms — hämta tråd, inlägg och bilagor (db)