标题:[原创]ACCESS"自动编号"类型重新编号的解决方法
只看楼主
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
结帖率:75%
 问题点数:0 回复次数:25 
[原创]ACCESS"自动编号"类型重新编号的解决方法

BYurqqDu.rar (348.59 KB) [原创]ACCESS"自动编号"类型重新编号的解决方法





写了一个小程序来解决"自动编号"类型因删除数据所造成的"断点"
程序主要是把"自动编号"重新排列

抛砖引玉
只给出思想及演示,没有做代码优化,希望大家相互交流



以下是代码
相关程序在上面的下载里面有,可以下载后自己测试


<%
'此程序由hxfly制作,版权为www.bc-cn.net和hxfly所有,请保留版权信息
'程序提供ACCESS“自动编号”类型重编号的思想,请根据自己的需要对变量进行更改
'程序提供演示,一旦执行,数据库内部数据将重新排列,如需查看效果,请在运行程序前把数据库另存
'相互交流,互相提高,如有ASP相关问题,欢迎到http://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全部换成自己数据库对应的字段(如更换不全,会造成数据丢失或者运行失败)
'程序提供解决这类问题的思路,如为此给您的数据带来任何损失,作者不负任何责任。使用前请先备份您的数据库!
%>


搜索更多相关主题的帖子: ACCESS 类型 自动 
2005-11-03 14:14
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
得分:0 
支持
2005-11-03 14:15
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
ACCESS的自动编号类型是不能强行更新的
但是在插入数据的时候却可以赋值

主要根据这个来做的程序
思路是先根据连续变量i判断哪些些需要更新
哪些不需要更新

需要更新的行先把它的数据复制出来
然后插入数据的时候用一个连续变量 i来做它的ID
继续循环

这样到最后原来的id全部变成连续的i了

2005-11-03 14:27
suyongtao
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:33
帖 子:8674
专家分:127
注 册:2004-11-6
得分:0 

我以前也想弄这一个这个东东.因为access自动编号类型数据事太多,又不得不用..
现在有了这个东东..就方便多了..
版主就是厉害,,


面朝大海,春暖花开!
2005-11-03 14:33
84056686
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2005-10-11
得分:0 
厉害


吃不到葡萄说葡萄酸。 吃到了葡萄知道葡萄真是很酸! ——(wolf)
2005-11-03 14:49
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 
我一般都是把编号字段删除 再建一个自动编号字段 这样就重新编号了
2005-11-03 15:55
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 

2005-11-03 16:17
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
得分:0 
我怎么下不了啊

中国人的财富网:http://www..cn/
2005-11-03 18:39
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
得分:0 

上面的功能是不是,插入到以前如果ID被删了的空位


中国人的财富网:http://www..cn/
2005-11-03 18:40
风雨中
Rank: 1
等 级:新手上路
帖 子:213
专家分:0
注 册:2005-10-6
得分:0 
老大不愧为老大,这个东西特有用.

因为我笨,所以我在不断的努力;因为我穷,所以我没有读过太多的书;因为我对自己期望很高,所以我只能不断的追求,用行动去实现自己的价值。
2005-11-03 21:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-32447-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.100803 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved