webForumDet fria alternativet

Varför funkar inte detta?

ASP

7 svar · 324 visningar · startad av Meng

Medlem sedan feb. 2003549 inlägg
Frågan#1

Ända sen jag bytte från textfält i databasen till tal fält så har jag fått en massa problem som jag inte kan förstå varför de inte fungerar..

T ex: Varför funkar inte detta?

If RecSet("gruppevalg") = RS("id") AND RecSet("gruppevalg") = Request.QueryString("visaid") Then

gruppevalg = 39
id = 39
visaid = 39

Tar jag bort querystringen så fungerar det.. men den behöver jag ju

Medlem sedan juli 200498 inlägg
#2

Hej,

om du testar att typa om det till tal då?

Clng(Request.Querystring("visaid")) eller Cint(Request.Querystring("visaid"))

För en Querystring är alltid typad som en sträng eller variant(?)

/m

Medlem sedan feb. 20011 198 inlägg
#3

Det kan vara olika datatyper.
39 <> "39".

/red försent.. så går det när man skriver med en hand..

Medlem sedan feb. 2003549 inlägg
#4

Både Cint och Clng fungerar men jag förstår inte varför, hur ska jag nästa gång kunna se ifall ett värde är "39" eller 39 ?

Tack för hjälpen btw :birp

Medlem sedan feb. 2003549 inlägg
#5

Varför funkar inte detta då? är samma fel eller det finns kanske ett bättre sätt att räkna posterna.. ?

<%Set cn = Server.CreateObject("ADODB.Connection")

	Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/afd.mdb")
				set GF = cn.execute("SELECT count(*) as antal FROM filer WHERE gruppevalg = '39'")
					Response.Write GF("antal")
					GF.Close
					Set GF = nothing
	cn.close
Set cn=nothing%>
Medlem sedan juni 200032 967 inlägg
#6

Du ska ju inte ha apostrofer runt värden om fälttypen är tal.

Medlem sedan feb. 2003549 inlägg
#7

Jo jag märkte det. Tack för hjälpen..

Medlem sedan juni 2004533 inlägg
#8

Meng skrev:

Både Cint och Clng fungerar men jag förstår inte varför, hur ska jag nästa gång kunna se ifall ett värde är "39" eller 39 ?

Du får hålla reda på var värde kommer ifrån. Ett värde ifrån Request.Form eller Request.Querystring är till exempel alltid en sträng.

Att använda prefix på variablerna, och se till att variablerna alltid innehåller den datatyp de ska, är en bra hjälp för att kunna undvika typblandningsfel.

Exempel:

lngVisaId = CLng(Request.Querystring("visaid"))

Detta skyddar även mot en mindre känd form av SQL injections:
http://www.aspsidan.se/default.asp?page=readArticle&menu=2&aId=334

261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)