以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 编号重复 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=171460) |
-- 作者:cd_tdh -- 发布时间:2021/8/31 9:37:00 -- 编号重复 老师,我有一个表的编号代码如下,偶尔会出现重复,一直没找到问题所在,请老师看看哪儿有问题,代码在录入窗口的保存按钮中,其他窗口也是类似的编号但没有这样的情况。 Dim r As Row = Tables("报名登记表") .Current |
-- 作者:有点蓝 -- 发布时间:2021/8/31 9:49:00 -- 这种用法是无法保证不会重复的,除非是单机使用。多人使用,必须有专门的服务端进行控制,也就是要有一个统一生成编号的地方,比如:http://www.foxtable.com/webhelp/topics/3008.htm |
-- 作者:cd_tdh -- 发布时间:2021/8/31 9:51:00 -- 并发不大啊,我另外的表数据更多,并发更大,重来没出现重复过。 1、就这个表,同一个人录入时,连续两条都会重复; 2、不同的人录入时间虽然在同一天,但是时间间隔很大,也会出现重复; 就一直没找到问题所在。
[此贴子已经被作者于2021/8/31 9:54:25编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/8/31 9:57:00 -- 只要有并发,就有可能有问题的,比如2个人刚好在那个时间点生成编号。并发大,只是出问题的机会多而已 另外检查是不是短时间内重复点击按钮造成的,另外看看是不是生成编号后没有成功保存
|
-- 作者:cd_tdh -- 发布时间:2021/8/31 10:25:00 -- 窗口录入保存后都会关闭窗口,新增才会又从新打开录入窗口,没有保存成功的话,窗口应该不会关闭啊,我核实过,登记日期都是长时间格式,时间间隔都没有挨很近的情况。 |
-- 作者:有点蓝 -- 发布时间:2021/8/31 10:28:00 -- 那还是看2楼吧。总之这个方式没有办法保证不重复 |
-- 作者:cd_tdh -- 发布时间:2021/8/31 13:32:00 -- 感觉这句代码是不是有bug,我用这句代码出来的最大编号是30号的最大编号,不是今天的最大编号 max = DataTables("报名登记表").SQLCompute("Max(项目编码)","登记日期 >= \'" & fd & "\' And 登记日期 <= \'" & ld & "\' And [_Identify] <> " & r("_Identify")) \'取得该月的最大编号 改为这样就正常了: max = DataTables("报名登记表").SQLCompute("Max(项目编码)","登记日期 >= \'" & fd & "\' And 登记日期 <= \'" & ld.adddays(1) & "\' And [_Identify] <> " & r("_Identify")) \'取得该月的最大编号 红色位置不对 但是ld出来确实又是2021-08-31,搞不懂了 [此贴子已经被作者于2021/8/31 13:34:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/8/31 13:39:00 -- 登记日期有时分秒? max = DataTables("报名登记表").SQLCompute("Max(项目编码)","登记日期 >= \'" & fd & "\' And 登记日期 < \'" & ld.adddays(1) & "\' And [_Identify] <> " & r("_Identify")) |
-- 作者:cd_tdh -- 发布时间:2021/8/31 13:59:00 -- ,是的,登记日期有时分秒,我修改了试试用一段时间看看会不会有问题,谢谢老师! [此贴子已经被作者于2021/8/31 14:00:12编辑过]
|