注册 登录
编程论坛 ASP技术论坛

高手救我:怎样判断是否最后一条记录???急!!!

happyhu 发布于 2005-10-13 22:40, 4990 次点击
我想判断是否是最后一条记录该怎么办???

if 最后一条 then
response.write"111"
else
response.write"222"
end if

清高手指点,谢谢!!!!!!!
16 回复
#2
盖茨他爹2005-10-13 22:52
if rs.eof then
#3
happyhu2005-10-13 22:57
rs,eof不是最后一天记录吧
我试过,不行.
#4
盖茨他爹2005-10-13 23:20
把你的整个循环语句贴上来
#5
盖茨他爹2005-10-13 23:25
给你看个例子。
set rs1=conn.execute("select * from table")
set rs2=conn.execute("select count(*) from table")
dim i
i=0
do while not rs2.eof
i=i+1
if i=rs1(0) then
    response.write("111")
else
    response.write("222")
end if
rs1.movenext
loop
#6
happyhu2005-10-14 08:07
我看不大明白,还有没有更好的办法?请大家指教,谢谢!!!
#7
hxfly2005-10-14 08:21
EOF是搜索得到的最后一条记录

你可以把先把你的搜索结果全部输出
然后在把RS.EOF输出
看看是不是最后一条一样
#8
happyhu2005-10-14 08:48
那就麻烦了,我只想加一条判断语句,不用输出:
set rs = server.CreateObject ("adodb.recordset")
sql = "select * from dw where dwname='"&request("dwname")&"'"
rs.Open sql,conn,1,1
if  是最后一条 then
。。。
else
。。。
end if

大家还有没有好办法,请指教,谢谢!!!

[此贴子已经被作者于2005-10-14 8:51:33编辑过]


#9
hxfly2005-10-14 09:02
if re.eof then Response.write(rs("id"))


如果没有得到你想要的结果
就是你的SQL语句的问题


还有就是按照你的主键降序排列
这样返回的第一条就是按照升序排列的最后一条(默认的是升序)
这样你就直接输出rs("dwname")就可以了
#10
happyhu2005-10-14 10:15
我不是要输出最后一条记录 只是判断是否是最后一条记录 if 是最后一条 then 。。。 else 。。。 end if
#11
yms1232005-10-14 16:01
rs.EOF的确是记录集对象判断最后一条记录的属性,BOF是判断是否是第一条记录的属性。
(P.S:EOF或者BOF都是真和假的逻辑值,EOF为真只有在当前记录集已经是最后一条记录,如果执行记录集对象的MoveNext方法EOF就为真。BOF则反之如果当前纪录集已经是第一条记录,继续执行记录集对象的MovePrevious方法BOF就会为真)
按照楼主的意思是判断当前读出的数据也就是sql = "select * from dw where dwname='"&request("dwname")&"'"
返回的结果是不是最后一条记录。

那如果这样的话之前必须得出判断最后一条记录的判断依据应该这么写
Dim LastKey
set rs = server.CreateObject ("adodb.recordset")
rs.open "select * from dw",conn,1,1
rs,MoveLast
LastKey=rs.Fields(1).Value
rs.Close
sql = "select * from dw where dwname='"&request("dwname")&"'"
rs.Open sql,conn,1,1
if  rs.Fields(1).Value=LastKey then
。。。
else
。。。
end if
不过我写的代码也有两处关键问题
首先这句的作用是得到标示LastKey=rs.Fields(1).Value最后一条记录的关键字,这个地方跟数据库的设置有关。也就是数据库中表的主键(P.S:主键是数据库中保证每条记录不重复的字段的,也就是说比如学生信息表中找一名叫“张三”的学生。可叫“张三”的学生有10位,这时就无法区分到底是哪个学生了。如果加了一个主键学号进行区分,那么找一个学号是3,姓名叫“张三”的学生就肯定只有一个学生符合这个要求了。)
用主键作为判断依据,来判断当前得到的是不是最后一条。
#12
happyhu2005-10-14 21:51
谢谢大家!如果哪位还有好办法请继续跟贴,多多益善,谢谢!!!
#13
rainic2005-10-15 08:16
set rs = server.CreateObject ("adodb.recordset")
rs.open "select * from dw",conn,1,1
if not rs.eof then
    rs.movenext
    if rs.eof then
        rs.moveprevious
        response.write("这是最后一条记录")
        '...
    else
        response.write("这不是最后一条记录")
        '...
end if
rs.close
#14
fcnh19832005-10-15 08:47

if not eof then

{
rs.movelast   移到最后一条记录!!!!!!!!!!!!
............................

}

[此贴子已经被作者于2005-10-15 8:48:42编辑过]


#15
皮蛋粥2005-10-16 19:52
最后一条再 movenext 才是 eof 吧!?最后一条本身不是 eof

笨办法就是你用一个变量 Rdcount 先用 recordcount 属性保存记录数,循环的时候用一个变量 CurrentRd 保存当前记录的序号,每 movenext 一次就加 1,这样当 CurrentRd=Rdcount 就是最后一条了。
#16
z38984492008-10-20 14:16
看这段
i=0
do while not rs.eof
i=i+1
if i=rs.recordcount then
...
else
...
end if
#17
sunfishy2008-10-20 14:43
认同#15的方法..
dim i
dim ii
i=1
do while not rs.eof
.
.
rs.movenext
ii=i+1         '移到下一条记录的时候+1

if ii=rs.recordcount then        'i总和等于总记录数.
response.write "最后一条记录"
else
response.write "不是最后一条记录"
end if

loop
1