Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 如何在任意位置插入记录?
  • 用交叉表来反映帐龄的2种方..
  • OrdinalPositi..
  • 利用ADOX获取Acces..
  • 如何解决导出DBF时“字段..
  • access实现自动编号从..

最新文章

  • Access用代码创建表
  • access表的设计技巧
  • access实现自动编号从..
  • Access2010出现“..
  • 使用输入掩码控制数据输入格..
  • 索引和主键的异同

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 数据表 > 表设计
表设计

自动编号的字段在删除记录后编号不连续



问题:

 
自动编号的字段在删除记录后编号不连续
比如原来有10条记录,删除其中第2条,序号2就变空号了
当表中某条记录被删除后,如何使后续的记录自动重新编号?

回答:

  关于自动编号和压缩数据库 
你必须理解,自动编号(长整型)的目的不是为了使记录号连续,其用途有2个
1、标识记录的唯一性
2、标识记录的生成顺序
基于上述原因,你想使用自动编号字段来表示连续的记录号本身这个思路就是错误的。

 

如何表示连续的记录号有以下几个办法:
1、再建立一个专门用来存放记录号的字段,比如 RecordNo
    添加记录时可以用 MAX(recordNO)+1 的方法。
    当要删除某条记录时,比如这条记录的recordNo=6,我们用

    

delete from table where recordNo=6

 

    来做。这样就会产生空号,然后再用

    

update table set recordno=recordno-1 where recordno>6

 

    即可

 

2、在表中不存放记录号的数据,用sql查询自动生成

 

select [id],a,b,c,(select count(*) from table table2 where table2.[id]<=table1.[id]) as recordno from table table1 order by [id]

 

    其中 [id] 字段为自动编号字段

 

 

 


问题:
 

  access2000中 有一自动编号的字段ID,ID 已有值分别为1,2,3,4,5,6,7,将6,7删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:
1,新ID 为6,7,8,9
2,新ID 为8,9

 

在ID为1,2,3,4,5,6,7的情况下,将4,5删除后,再压缩数据库,再新加记录,在不同的电脑上会出现不同的情况如下:
3,新ID为4,5,然后是6(出错,因为是主键不能重复)
4,新ID为8,9。。。
请问哪中情况是正常的,其他不正常的原因是什么。谢谢!!

 

 

回答:
 

  你说的几种情况全部属于正常

 

1、自动编号是由 JET  引擎来设置的
2、自动编号 会自动被作为主键,而且有不重复索引
3、你可以不要将自动编号作为主键以及不要建立索引,将索引改为无
4、自动编号的起始值和步进值都是可以用程序等方法更改的,不是固定的
5、虽然你更改了起始值和步进值,但是如果新生成的值违反了“主键”或者“索引”的约束会产生错误
6、默认情况下,即使删除了记录,这条记录的自动编号也不会恢复。

以下是对情况的分析
1、你使用了比如压缩修复、UPDATE、ALTER TABLE 等方法更改了初始值
2、默认情况下就是这样
3、因为使用了压缩修复等方法,导致初始值重新从4开始,但是增加到6的时候,原来记录里面已经存在6这个编号了,违反了主键约束,所以产生错误
4、默认情况下就是这样。


发布人:cg1『文章…-Access911  
分享到:
点击次数:  更新时间:2005-02-04 16:39:02  【打印此页】  【关闭】
上一条:用ADO列出某个表的所有字段、索引  下一条:如何设计数据库结构



相关文章

  • • Access用代码创建表
  • • access表的设计技巧
  • • access实现自动编号从1开始排序且不中断
  • • Access2010出现“错误一对多” 调试解决办法
  • • 使用输入掩码控制数据输入格式
  • • 索引和主键的异同
  • • “排队不长,只是很粗”——浅谈化宽为长
  • • Access数据表能做什么

热门文章

  • [2008-12-29] 使用 Access 2000 中的 TableDef 对象 Attributes 属性access数据库
  • [2013-10-15] Access光标在文本框的右边access数据库
  • [2005-02-04] 自动编号字段的值能不从 1 开始吗?access数据库
  • [2008-11-21] 解决Access中分组报表的问题access数据库
  • [2004-06-14] access中数据表的自动重新联接access数据库
  • [2008-11-10] 用Access轻松打印带相片的证件access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn