webForumDet fria alternativet

Inkompatibla typer: 'CInt'

ASP

3 svar · 390 visningar · startad av Ghost of North

Medlem sedan sep. 200057 inlägg
Frågan#1

Hjälp nån...?

Körningsfel i Microsoft VBScript fel '800a000d'
Inkompatibla typer: 'CInt'
/gastbok/guest.asp, rad 210

<%
End Sub

Sub Show
NumPerPage=INT(objRec2("NumPerPage"))
If Request.QueryString("page") = "" Then
	iPageCurrent = 1
Else
	[b]iPageCurrent = CInt(Request.QueryString("page"))  ***raden i fråga[/b]
End If
Set objRec = Server.CreateObject ("ADODB.Recordset")
StrSql = "SELECT * FROM Messages ORDER BY ID DESC;"
objRec.PageSize = NumPerPage
objRec.CacheSize = NumPerPage
objRec.Open StrSql,objConn,3,1,&H0001
iPages = objRec.PageCount
TotalRows = objRec.RecordCount 
If iPageCurrent > iPages Then iPageCurrent = iPages
If iPageCurrent < 1 Then iPageCurrent = 1
If iPages = 0 Then
Response.Write "Inga poster i dagboken!"
Else
ObjRec.AbsolutePage = iPageCurrent
%>

<%
If iPageCurrent <> 1 Then
	Response.Write("<a href=./guest.asp?page=" & iPageCurrent - 1 & """>Föregående</a> - ")
Else
	Response.Write "Föregående - "
End If
For I = 1 To iPages
If I = iPageCurrent Then
	Response.Write "<b>" & I & "</b> "
	Else
		Response.Write "<a href=./guest.asp?page=" & I & ">" & I & "</a> "
	End If
	Next
	Response.Write "&nbsp;"
	Else
		Response.Write "&nbsp;"
	End If 
End If
If iPageCurrent <> iPages Then
	Response.Write(" - <a href=./guest.asp?page=" & iPageCurrent + 1 & """>Nästa</a></font>")
Else
	Response.Write " - Nästa</font>"
End If

objRec.Close
Set objRec = Nothing
End Sub

Set objConn = Server.CreateObject ("ADODB.Connection")
objConn.Open StrConn
Set objRec2 = Server.CreateObject ("ADODB.Recordset")
ConfigSql = "SELECT * FROM Admin;"
objRec2.Open ConfigSql,objConn,0,1,&H0001
%>

Det som inte funkar är föregående/nästa. Att byta via sifferlänkarna går bra.
Vad innebär eg. CInt?

------------------

With resurrection comes new hope, for the future has yet to be created

Medlem sedan juli 20003 825 inlägg
#2

CInt

index.asp?ID=23

Om du skickar detta så uppfattas ID ha ett textvärdet 23 och det vill du inte, du vill att det ska vara siffran 23.

För att göra denna konvertering kan man använda CInt:

myID = cInt(request("ID"))

are you with??

---
Av någon konstig anledning fungerar: "SELECT * FROM [news] WHERE ID =" & request("ID")

Men om du ska fråga så fungerar det inte, typ...

IF request("ID") <= mySQL("x_ID") THEN...

Lite för svårt att förstå kanske, men kort sagt, i det sista fallet uppfattas 23 som TEXT och det vill man inte, då använder man cInt!

------------------
"Never underestimate your opponents." - Name the movie.

Medlem sedan sep. 200057 inlägg
#3

Men då fattar jag den biten :D

Orsaken till att ditt andra exempel kräver CInt är nog att du där försöker jämföra värden. I det första fallet ska det ju bara stå likadant.

Löste mitt kodproblem oxå. Hade ett par extra haröron på en helt annan rad än 210... :q

------------------

With resurrection comes new hope, for the future has yet to be created

Medlem sedan juni 200032 967 inlägg
#4

Av någon konstig anledning fungerar: "SELECT * FROM [news] WHERE ID =" & request("ID")

jag tycker inte att det är någon konsting anledning.

i vbscript är alla variabler av datatypen variant, och av en eller annan subtyp (integer (heltal), sträng, osv).

när du skapar en sql-fråga i asp är den av subtypen sträng ('sql-sträng', som så många säger), och vad helst du puttar på den strängen (konkatenering) förblir slutresultatet en variant av subtypen sträng.

det är väl inte så konstigt? förstods förklaringen?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

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