Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共7 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
baoxyang 发表于:2009/4/5 16:46:00
使用外部数据表新增一行时,如何在多用户环境下实现不重复编号?如何设置及代码?
2楼
czy 发表于:2009/4/5 16:48:00

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

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

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

 

示例一

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

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

3楼
baoxyang 发表于:2009/4/5 16:57:00

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

4楼
baoxyang 发表于:2009/4/5 16:58:00
具体点?
5楼
baoxyang 发表于:2009/4/5 16:59:00

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

6楼
hty4000 发表于:2009/9/1 22:51:00
我也想知道
7楼
blackzhu 发表于: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中.

共7 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03613 s, 2 queries.