以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]DataRowAdded代码问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=172217)

--  作者:张松波
--  发布时间:2021/9/29 23:22:00
--  [求助]DataRowAdded代码问题
老师有个疑问请教一下,案例如下:
创建了一个外部表,表名为:A,表A里有一列名称ID的列(意图为自增列增量为1,从1开始)
我在表A的DataRowAdded事件里写了如下代码
e.DataRow("ID") = e.DataTable.SQLCompute("Max(ID)") + 1
然后再在Tables(“A”)里 Addnew(),然后执行 CurrentTable.Current.DataRow.Save() 而且确保没有漏保存。

现在问题出现了:
ID是在增加的,但是中间却有重复的值。按道理不应该啊。

--  作者:有点蓝
--  发布时间:2021/9/30 8:46:00
--  
如果并发情况下,可能会出现重复的。

还不如直接到数据库设置为自增的:http://www.foxtable.com/webhelp/topics/1807.htm

--  作者:张松波
--  发布时间:2021/9/30 10:35:00
--  
老师  没有并发就是我一个人在测试,连续加个好几条数据就会有重复的了,所以难道是SQLCOMPUTE有错误?
我做了个ID列  是用来排序的按照创建顺序先后排序,现在改成用table的_indentify列排序了,没有问题,就是怕我要是自增人员编号的时候 怕也这样就麻烦了(全部人员信息加载到datatable里测试过没有问题),用SQLLOAD分页加载我再测试一下。
[此贴子已经被作者于2021/9/30 10:37:58编辑过]

--  作者:有点蓝
--  发布时间:2021/9/30 10:47:00
--  
SQLCompute只获取后台的数据,如果有重复,肯定是没有保存

DataRowAdded事件
e.DataRow("ID") = e.DataTable.SQLCompute("Max(ID)") + 1
e.DataRow.save