ASP中rs.AbsolutePosition的值为-1的问题解决方法
-
问题描述
最近在开发ASP项目时发现,当do while not rs.eof时,rs.AbsolutePosition的值全部是-1。
这根你的conn到底是1,1还是3,3没有任何关系。
最终查明原因是在数据库的类型问题上。Access就没有这个问题,SQL就会出现这个问题,有人说是微软BUG,无从查证。所以要么换数据库类型为Access,可是我们必须用SQL数据库怎么办?
案例分析
do while not rs.eof
rsponse.write "当前记录是第"&rs.AbsolutePosition&"条"
if rs.AbsolutePosition=rs.RecordCount then
rsponse.write "当前记录是最后一条"
end if
rs.movenext
loop
上面这个循环输出在SQL数据库中,我们会发现rs.AbsolutePosition的值永远是-1
当我们有时候要做页面导航循环特效或底部导航循环特效,判断记录是否为最后一条数据时,怎么办?比如:【关于我们 | 帮助教程 | 版权声明】当我们想判断“版权声明”这条记录是否为最后一条,如果为最后一条就不添加“ | ”分隔符,所以我们需要通过另一种方法解决。
实现方法
i=1 '--首先定义一个i值为1,这样的话在下面做循环输出记录时,第一条就是i=1了。
do while not rs.eof
rsponse.write "当前记录是第"&i&"条"
if i=rs.RecordCount then
rsponse.write "当前记录是最后一条"
end if
i=i+1 '--每次i的值都+1,这样下一条数据就是2。所以我们抛弃了用rs.AbsolutePosition方法获取当前记录集是提几条的判断方法。改为用每次循环i+1的方式类判断记录是第几条!
rs.movenext
loop
问题总结
这是精英网技术人员在开发时遇到的一个问题,通过以上解决方案我们可以看出,未必有时候必须使用ASP的自带方法来实现和解决问题,我们遇到问题的时候可以动用思维通过其他途径来实现。