紧急求助:怎样取表中最后一个id值?(id类型为int)

youxian519 2003-11-28 09:17:05
我想让id自动递增,但想在程序里实现,而不想直接把它设成自动编号类型,我这样写:
Set rs=Conn.Execute("select * from MyTable order by id")
if rs.bof and rs.eof then
id=1
else
rs.MoveLast
id=rs(id)+1
end if
运行提示出错:行集不支持反向提取
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
viking 2003-11-28
  • 打赏
  • 举报
回复


我觉得你考虑的还算周全,必须考虑记录集为空的情况,否则当没有记录时会出错。

你可以综合楼上 zhanghao5188(linux) 的方法,如这样写:

Set rs=Conn.Execute("select top 1 id from mytable order by id desc")

if rs.bof and rs.eof then
id=1
else
id=rs(id)+1
end if


我选择 zhanghao5188(linux) 的方法是考虑这样写 SQL 的执行效率可能会高一些,不过我曾经在几百万条记录下测试,也差不了太多。不过尽量选择更简单有效的方法吧。

关于你的错误信息是由于你打开记录集的方法错误引起的。

set rs=conn.execute(sql)

这样的记录集在反向移动的时候可能会出错误

如果你想在以后的编程中使用记录集的反向移动,最好这样

rs.open sql,conn,1,3 '后面的参数注意一些,应该仔细看看,现在地参数还可以修改数据,单纯的查询并不需要。

youxian519 2003-11-28
  • 打赏
  • 举报
回复
我用了softrookie(编程新生)和zhanghao5188(linux)的方法在查询分析器里运行都正常,可在程序里取出来表示的时候id=rs("id")出错
另外我用的是sybase数据库
WOLF7571 2003-11-28
  • 打赏
  • 举报
回复
同意 zhanghao5188(linux)的方法
peytonzwt 2003-11-28
  • 打赏
  • 举报
回复
你用的是什么数据库,如果是sqlserver可以用这两种方法的。
zhanghao5188 2003-11-28
  • 打赏
  • 举报
回复
sql="select top 1 id from mytable order by id desc "
softrookie 2003-11-28
  • 打赏
  • 举报
回复
没有必要这么复杂
select max(id) from mytable

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧