·溢出错误该如何解决?

zzm420 2004-12-03 10:05:24
用表单传递值即:<input type="text" name="pagen">
获取即:If cint(request("pagen")) > cint(rs.recordcount/2) Then
pagenow=1
end if
---------------------------
以上语句出现的问题是:当pagen的值过大时会给出“溢出错误”的提示!这个问题该如何解决?
...全文
133 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zzm420 2004-12-10
·好了!
我技术上的问题通过理解[风之石]给出的几个函数已经解决了,但是这个问题还是希望有人回答的:

·这个函数到目前为止已经算是很人性华了,但是由于我当时没有表明这个函数的主要用途所以让它有点走题了!(怪我...^_^)
介于以上的函数我想问一下作者,FormatNumber()这个函数也是会四舍五入小数的但是它也和其它的类似函数一样当小数部分小于0.5时它就截掉,否则四舍五入到前一位;有没有只要有小数的部分的就可以往前位进1的函数?
回复
zzm420 2004-12-10
·这个函数到目前为止已经算是很人性华了,但是由于我当时没有表明这个函数的主要用途所以让它有点走题了!(怪我...^_^)
介于以上的函数我想问一下作者,FormatNumber()这个函数也是会四舍五入小数的但是它也和其它的类似函数一样当小数部分小于0.5时它就截掉,否则四舍五入到前一位;有没有只要有小数的部分的就可以往前位进1的函数?

·其实这个函数用于格式华数据分页的跳转值,设想:
如果提交的值是字符串那它不做任何动作,否则就执行验证提交的值是否小于1,如果小于1那么它就等于1;如果它大于数据页的总数那么它就等于数据页的总数,其实这才是我的主要目的;由此可见走题很远,不过这几个函数的写法的确让我学到了新编写思路。
----------------------------感谢[风之石]的时时关照 ^_^ !
回复
dh20156 2004-12-09
TRY:
<% private function checknum(a,b)
If IsNumeric(a) And IsNumeric(b) then
If FormatNumber(a,0)>FormatNumber(b,0) then
checknum=1
else
checknum=0
end if
end if
end function %>

<%=checknum(1.1,1)%>
回复
zzm420 2004-12-09
·经过反复调试和改进:

Function BigCint(ByVal num)
If IsNumeric(num) Then
BigCint=1-1+num
Else
BigCint=0
End If
End Function

(罕疯)的这个方法最能让我接受! 但是当值的位数大于1000000000时,溢出错误还是会出现的。
回复
dh20156 2004-12-09
忘了,再FORMATNUMBER一下,去掉小数部分
回复
dh20156 2004-12-09
你这样不经过判断的就用cint当然有溢出的危险了。
你先判断它们是否都为数字然后每个*1再比较
回复
zzm420 2004-12-09
·我也用clng试过了,但是还是不行!
回复
dh20156 2004-12-09
来,这个可以:
<% private function checknum(a,b)
If IsNumeric(a) And IsNumeric(b) then
If FormatNumber(a,0)>FormatNumber(b,0) then
If b<=0 then
checknum=0
else
checknum=FormatNumber(b,0)
end if
else If a<1 then
checknum=1
else
checknum=FormatNumber(a,0)
end if
end if
else
checknum=1
end if
end function %>

<%=checknum(3,a)%>
回复
zzm420 2004-12-09
·这个函数的确可以解决溢出的问题但是,我的目的是pagen不能大于Rcount否则等于Rcount,也不能小于Rcount的下限否则等于Rcount的下限或者等于1!
Function IsNumber(pagen,Rcount)
If IsNumeric(pagen) and IsNumeric(Rcount) Then

If FormatNumber(pagen,0) > FormatNumber(Rcount,0) Then
IsNumber=FormatNumber(Rcount,0)
Else
If FormatNumber(pagen,0) < 0 then ×
IsNumber=1 ×
End if ×
IsNumber=FormatNumber(pagen,0)
End If

End if
End Function
--------------------------------
当我将函数改为此状时标“×”的地方报错:类型不匹配...!
该如何判断FormatNumber(pagen,0)的大小呢?
回复
cheng17 2004-12-04
前段时间也是数据溢出,用了CLNG就好OK了
回复
zzm420 2004-12-04
·第一次我发问结果没试就散分了!
其实答案是不对的,我试试了这个次也是...
回复
supere 2004-12-03
try

If clng(request("pagen")) > cint(rs.recordcount/2) Then
回复
Camelot 2004-12-03
汗,看错了,你把cint换成clng就好,这个可以允许比较大的值
回复
阿泰 2004-12-03
不是问过一次了吗?
1:
If int(request("pagen")) > int(rs.recordcount/2) Then
pagenow=1
end if

不行的话用
2:If Clng(request("pagen")) > Clng(rs.recordcount/2) Then
pagenow=1
end if
回复
lienzhu 2004-12-03
换成
int 或 cdbl
回复
Camelot 2004-12-03
Function BigCint(ByVal num)
If IsNumeric(num) Then
BigCint=1-1+num
Else
BigCint=0
End If
End Function

用上面的函数,不要问为什么1-1+的,就是这样



┏━━━.:可爱的分割线:.━━━━━━━━━━━━━━━━━
┃                                
┃在线的RSS订阅系统(Blog、新闻、技术):http://www.gbmad.net/rss/
┃无论你在哪,只要能上网就能订阅查看你喜欢的聚合         
┃                                
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━
回复
阿泰 2004-12-03
不是问过一次了吗?
1:
If int(request("pagen")) > int(rs.recordcount/2) Then
pagenow=1
end if

不行的话用
2:If Clng(request("pagen")) > Clng(rs.recordcount/2) Then
pagenow=1
end if
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2004-12-03 10:05
社区公告
暂无公告