R
RN1
Sometimes I find that though I am comparing 2 integers, the result
turns out to be unexpected.
For e.g. an ASP page encapsulates recordset paging.
<%
Dim iPage,iPageCounter
iPage=Request.QueryString("Page")
If(iPage="") Then
iPage=1
End If
Dim objConn
Set objConn=Server.CreateObject("ADODB.CONNECTION")
objConn.Open ........
Dim strSQL
strSQL="SELECT * FROM MyTable"
Dim objRS
Set objRS=Server.CreateObject("ADODB.RECORDSET")
objRS.PageSize=15
objRS.Open strSQL,objConn,adOpenKeyset
objRS.AbsolutePage=CInt(iPage)
'display records here
'pagination
For iPageCounter=1 To objRS.PageCount
If(iPageCounter=CInt(iPage)) Then
Response.Write("[" & iPageCounter & "]")
Else
Response.Write("<a href='ThisPage.asp?Page=" &
iPageCounter & "'>" & iPageCounter & "</a>")
End If
Next
%>
Assuming that there are 225 records, the For....Next loop will display
1, 2, 3, 4.........14, 15 as page numbers.
The If condition within the For....Next loop ensures that the page
which the user is currently viewing isn't displayed as a hyperlink.
For e.g. if a user is viewing page #4, then 4 is not rendered as a
hyperlink; rather it is rendered as plain text BUT if the variable
iPage in the If condition within the For....Next loop is not
explicitly cast into an integer using CInt i.e. the If condition looks
like this
If(iPageCounter=iPage) Then
then the page the user is currently viewing remains a hyperlink
instead of plain text. Why?
For e.g. when the user is viewing page #4, the value of the variable
iPage is 4 which means that within the For...Next loop, when
iPageCounter is 4, then the If condition evaluates to true since iPage
is 4 & so is iPageCounter. Then why does 4 get rendered as a hyperlink
instead of plain text?
turns out to be unexpected.
For e.g. an ASP page encapsulates recordset paging.
<%
Dim iPage,iPageCounter
iPage=Request.QueryString("Page")
If(iPage="") Then
iPage=1
End If
Dim objConn
Set objConn=Server.CreateObject("ADODB.CONNECTION")
objConn.Open ........
Dim strSQL
strSQL="SELECT * FROM MyTable"
Dim objRS
Set objRS=Server.CreateObject("ADODB.RECORDSET")
objRS.PageSize=15
objRS.Open strSQL,objConn,adOpenKeyset
objRS.AbsolutePage=CInt(iPage)
'display records here
'pagination
For iPageCounter=1 To objRS.PageCount
If(iPageCounter=CInt(iPage)) Then
Response.Write("[" & iPageCounter & "]")
Else
Response.Write("<a href='ThisPage.asp?Page=" &
iPageCounter & "'>" & iPageCounter & "</a>")
End If
Next
%>
Assuming that there are 225 records, the For....Next loop will display
1, 2, 3, 4.........14, 15 as page numbers.
The If condition within the For....Next loop ensures that the page
which the user is currently viewing isn't displayed as a hyperlink.
For e.g. if a user is viewing page #4, then 4 is not rendered as a
hyperlink; rather it is rendered as plain text BUT if the variable
iPage in the If condition within the For....Next loop is not
explicitly cast into an integer using CInt i.e. the If condition looks
like this
If(iPageCounter=iPage) Then
then the page the user is currently viewing remains a hyperlink
instead of plain text. Why?
For e.g. when the user is viewing page #4, the value of the variable
iPage is 4 which means that within the For...Next loop, when
iPageCounter is 4, then the If condition evaluates to true since iPage
is 4 & so is iPageCounter. Then why does 4 get rendered as a hyperlink
instead of plain text?