Foxtable(狐表)用户栏目专家坐堂 → 在多用户环境下实现不重复编号


  共有20762人关注过本帖树形打印复制链接

主题:在多用户环境下实现不重复编号

帅哥哟,离线,有人找我吗?
baoxyang
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
在多用户环境下实现不重复编号  发帖心情 Post By:2009/4/5 16:46:00 [只看该作者]

使用外部数据表新增一行时,如何在多用户环境下实现不重复编号?如何设置及代码?

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2009/4/5 16:48:00 [只看该作者]

在多用户环境下实现不重复编号

普通用户可以忽略本节内容.

我们已经知道,内部表利用_Identify,外部表利用自动增量主键,可以实现不重复的编号,即使在网络环境下多人同时输入数据,编号也不会重复.但是这种自动编号只能是一个数字,无法实现复杂的含特殊信息的编号要求.如果自己编码来实现自动编号,在多人同时输入数据的时候,将会出现重复编号,很多专业程序员对此也常常感到束手无策.

 

示例一

要求编号的前两位表示年,接着两位表示月,随后是四位数字的顺序号.
例如:09120008,表示09年12月的第8条记录.
在多人同时输入数据的时候,相互并不知道其他人是否正在输入数据,已经输入了多少数据,那么如何各自获得不重复的正确编号呢.

我们可以在数据源中增加一个表,


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/4/5 16:57:00 [只看该作者]

我是初学者,这些我都看过,但没有实例,实际不会应用呀。我用的是外部表。请赐教如何编码或设置


 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/4/5 16:58:00 [只看该作者]

具体点?

 回到顶部
帅哥哟,离线,有人找我吗?
baoxyang
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3313 积分:23146 威望:0 精华:1 注册:2009/3/31 11:25:00
  发帖心情 Post By:2009/4/5 16:59:00 [只看该作者]

例如,我想实现PT+日期+流水号(4)?


 回到顶部
帅哥哟,离线,有人找我吗?
hty4000
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:227 积分:2826 威望:0 精华:0 注册:2008/9/1 15:41:00
  发帖心情 Post By:2009/9/1 22:51:00 [只看该作者]

我也想知道

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2009/9/2 14:05:00 [只看该作者]

以下是引用baoxyang在2009-4-5 16:59:00的发言:

例如,我想实现PT+日期+流水号(4)?

If e.DataCol.Name = "列名" Then  '要变化的列
    If e.Datarow.IsNull("列名")   Then '如果这个列是空值
        e.Datarow("编号列") = DBNull.Value  '编号列为空
    Else
              e.DataRow("编号列")  = "PT" & Format(e.DataRow("日期"),"yyMMdd")  & Format(e.DataTable.Compute("Count(日期)", "[日期] = #" & e.DataRow("日期")  & "# And [_identify] < 100" & e.DataRow("_Identify"))+1,"00")

       
       
    End if
End If

放在表事件datacolchanged中.


 回到顶部