Office中国论坛/Access中国论坛

标题: 多用户使用情况下,如何避免ID重复? [打印本页]

作者: stvent    时间: 2014-6-14 14:46
标题: 多用户使用情况下,如何避免ID重复?
本帖最后由 stvent 于 2014-6-14 14:49 编辑

我现有一数据库,一张正式表A,一张临时表B,数据登陆记录登陆人员,窗体数据录入都是绑定B表,然后,按保存的时候,按登陆人员区分把B表上的数据插入到A表,然后清空对应用户的B表数据,以这种方式实现按钮保存数据,现在问题在于,我在B表新增记录的时候,是取A表上ID列最大值+1的,但在多用户使用的情况下(B表数据未插入到A表),有可能多个人员在B表上取得相同的ID,这样就对保存数据产生ID重复,而不允许插入的问题,所以,请各位大新们,有什么方法可以避免多用户同时操作数据库时,在未插入数据到A表时,取得的ID不相同?


A表,ID不允许重复
B表(A表的临时表),ID生产是取A表ID的最大值+1,在窗体点击保存后,才会将登陆用户相关的数据插入到A表,并清空B表上该用户的记录,如未进行保存,另一用户录入数据,取得ID值会相同


如何避免或设计表格???求助


作者: wuaza    时间: 2014-6-15 10:36
将“id取A表ID的最大值+1”放在窗体的更新后事件中试试。
作者: stvent    时间: 2014-6-15 16:54
wuaza 发表于 2014-6-15 10:36
将“id取A表ID的最大值+1”放在窗体的更新后事件中试试。

我现在用A表与B表作一个ID联合查询,然后再Dmax,解决了问题,但不知道是否笨方法
作者: roych    时间: 2014-6-17 13:00
stvent 发表于 2014-6-15 16:54
我现在用A表与B表作一个ID联合查询,然后再Dmax,解决了问题,但不知道是否笨方法

数据少的时候没什么,数据多的时候还是用ADO比DMax好一些。
作者: layaman_999    时间: 2014-6-18 00:17
很简单,真很简单
先取得表A-ID(max+1)的值:NewID
然后:insert into 表A(id, 字段1, 字段2...) select (" & NewID
& ", 字段1, 字段2...)  from 表B where 表B.ID = " & ME!ID
然后:delete 表B where 表B.ID = " & ME!ID

作者: stvent    时间: 2014-6-18 21:15
layaman_999 发表于 2014-6-18 00:17
很简单,真很简单
先取得表A-ID(max+1)的值:NewID
然后:insert into 表A(id, 字段1, 字段2...) select ( ...

强!~




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3