自动填补缺号!有点难哦!!

woshiswg 2009-08-03 09:00:17
asp+access建站
数据库中有序号字段(数值型),通过表单添加纪录时,新增记录序号等于原有记录中最大序号+1,问题:当删除某条记录号,序号中间就有缺号(不允许重新编号),此时添加记录如何先补上缺号。只有当没有缺号后,新增记录序号再等于原有记录中最大序号+1。好难,请高手指点一下,谢谢了!!
<%
set rs = server.CreateObject ("adodb.recordset")
sql = "select * from tzsh"
rs.Open sql,conn1,1,3
rs.AddNew
If RS.RecordCount=0 Then
rs("序号") = 1
else
if not rs.eof then
a=0
b=0
for i=1 to rs.recorcount
b=b+rs("序号")
a = a + i'
if a <b then
newID=i
exit for
end if
rs.movenext
next
else
newID=1
end if
rs("序号")=newID
else
rs("序号") = Conn1.Execute("Select max(序号)+1 from tzsh")(0)
end if
rs("项目名称") = Request("xmmc")
rs.Update
%>
报意外错误,在这句 b=b+rs("序号")'取两个相邻记录和
好像是表达式有问题。请高手指点!!谢了先。
...全文
98 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
三楼の郎 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 woshiswg 的回复:]
但id是一般都是自增字段啊。
[/Quote]
自增字段木有戏,自增字段是由数据库自己管理的跟你代码没关系
ZSJ_COOL 2009-08-29
  • 打赏
  • 举报
回复
hehe
woshiswg 2009-08-29
  • 打赏
  • 举报
回复
但id是一般都是自增字段啊。
babycry627 2009-08-29
  • 打赏
  • 举报
回复
自增字段不能修改的啊
toury 2009-08-13
  • 打赏
  • 举报
回复
没测试,不知道可不可以

<%
'找空缺ID
set rs = server.CreateObject ("adodb.recordset")
sql = "select * from tzsh order by id"
rs.Open sql,conn1,1,1
if rs.eof then
newID = 1
else
for i=1 to rs.recorcount
if i<clng(rs("序号")) then
newID=i
exit for
end if
rs.movenext
next
end if
rs.close
set rs=nothing

'添加新记录
sql="INSERT INTO tzsh (ID,项目名称) VALUES('"&newID&"','"&Request("xmmc")&"')"
conn.execute(sql)
conn.close
set conn=nothing
%>


前提是id不是自增字段
woshiswg 2009-08-13
  • 打赏
  • 举报
回复
好像没有答案了,难道要版主出手吗?
ilxl520 2009-08-05
  • 打赏
  • 举报
回复
子增列是不能修改的
woshiswg 2009-08-04
  • 打赏
  • 举报
回复
这个问题是不是太难。请高手指点一下了!!
renzaijiang 2009-08-04
  • 打赏
  • 举报
回复
update yourTable set abosoluteid=dcount('[id]','yourTable','[id] <=' & [id])
写错了

dcount 就是计算机行号的 函数 abosoluteid id 分别为 行号 id号
renzaijiang 2009-08-04
  • 打赏
  • 举报
回复
access 的做法
update yourTable set abosoluteid=dcount('[id]','absoluteid','[id]<=' & [id])

飘尧 2009-08-04
  • 打赏
  • 举报
回复
一般数据表中存在两个编号字段,一个是加一增长的物理ID另一个是另外编号规则的逻辑ID.当物理ID存在缺号后一般不会影响应用。如果两个ID合成一个字段且不允许有缺号时处理起来比较麻烦。楼主的写法中用到了RS.RecordCount,实际使用中有时候不会得到正确的记录条数。可以考虑建一个附表,记录主表中缺号值,当delete记录时更新附表,保存delete的id值。当新纪录执行插入主表时先查一下附表是否存在缺号值,存在的话插入的id值就是附表中保存的值,插入记录完成后再更新附表使缺号值为空。
woshiswg 2009-08-03
  • 打赏
  • 举报
回复
不懂,比较菜,能直接修改一下我提供的代码吗?
qlhycf 2009-08-03
  • 打赏
  • 举报
回复
自增的填不上

--------------------------
asp&.net交流:87469636
haiyun365 2009-08-03
  • 打赏
  • 举报
回复
当删除某条记录号 假设此号为 15

1 、delete from tb where id=15
2、update tb set id=id-1 where id>15
然后就自动编号了 id 不能为自动增长 应该单独列一个数据列

28,406

社区成员

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

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