写了一个小程序来解决"自动编号"类型因删除数据所造成的"断点"
程序主要是把"自动编号"重新排列
抛砖引玉
只给出思想及演示,没有做代码优化,希望大家相互交流
以下是代码
相关程序在上面的下载里面有,可以下载后自己测试
<%
'此程序由hxfly制作,版权为www.bc-cn.net和hxfly所有,请保留版权信息
'程序提供ACCESS“自动编号”类型重编号的思想,请根据自己的需要对变量进行更改
'程序提供演示,一旦执行,数据库内部数据将重新排列,如需查看效果,请在运行程序前把数据库另存
'相互交流,互相提高,如有ASP相关问题,欢迎到https://bbs.bc-cn.net(编程中国)论坛提问
 strconn="driver={microsoft access driver (*.mdb)};uid=admin;pwd=china;dbq="&server.mappath("data/hxfly.mdb")
 '建立数据库连接,数据库密码是china
 set conn=server.createobject("adodb.connection")
 conn.open strconn
 i=1
 '定义重排列的索引
 sql="select * from test order by id asc"
 set rs=conn.execute(sql)
 do while not rs.eof
  
  if(rs("id")=i) then
    '如果数据的id与i相同,没有从编号的必要
   Response.Write("数据"&rs("id")&"没有被更新的必要<p>")
   i=i+1
    'i自加
   rs.movenext
    '移动到下一条记录
   else
    '如果所选择的数据的id与i不相等   
   id=rs("id")
   a=rs("a")
   b=rs("b")
   c=rs("c")
   d=rs("d")
   e=rs("e")
   f=rs("f")
   g=rs("g")   
    '对这条数据内的数据进行复制,这里根据自己的需要把原来字段的数据保存
   
   sql2="insert into test (id,a,b,c,d,e,f,g) values("&i&",'"&a&"','"&b&"','"&c&"','"&d&"','"&e&"','"&f&"','"&g&"')"
    '这里根据自己的需要把字段的数据更新
   conn.execute(sql2)
    '插入新数据,用i的值代替原来的id值
   sql1="delete from test where id="&id
   conn.execute(sql1)
   Response.Write("数据"&id&"被更新为第"&i&"条,原第"&id&"条数据被删除<p>")
    '并把原来的行清除
   i=i+1
    'i自加
   rs.movenext
    '循环到下一行
  end if  
 loop
 '结束循环
 
 '验证效果可以从数据库的字段a来判断,原数据库的字段a值与id值相同,更新后的不同
 '使用的时候把演示字段用的a,b,c,d,e,f,g全部换成自己数据库对应的字段(如更换不全,会造成数据丢失或者运行失败)
 '程序提供解决这类问题的思路,如为此给您的数据带来任何损失,作者不负任何责任。使用前请先备份您的数据库!
%>
 



											

	    

	
											
										
					
	