以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问什么代码会导致行重复多存了一行?完全一样复制多了一个行,导致数据重复,好奇怪啊  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130440)

--  作者:chen37280600
--  发布时间:2019/1/22 10:38:00
--  请问什么代码会导致行重复多存了一行?完全一样复制多了一个行,导致数据重复,好奇怪啊

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


1张主表+2张子表的架构。1年内出现10多次这样的情况。从一开始以为是重复派编号(http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=127231&replyID=&skin=1
到后来发现是重复保存导致的,贴出BeforeSaveDataRow的代码。如果要更多代码,请客服联系我。我已经做了好多好多项目,也就这个模块会出现重复,太奇怪了。


CarFixAddTime的获取方法:向服务器通过  Select GetDate() 获取,在DataRowAdding事件里


BeforeSaveDataRow:
\'-----必填检测-----
If e.DataRow.IsNull("CompanyID") OrElse e.DataRow.IsNull("CarFixID")  Then \'判断是否不符合验证要求
    e.Cancel = True \'取消存盘
    Return
End If
\'-----必填检测-----



e.DataRow("CarFixLastEditUser") = PublicMHUserID
e.DataRow("CarFixLastEditTime")= Functions.Execute("SqlDate")

\'数值列若为空自动填0---
Dim dls As new  List (of String )
dls.Add("CarFixItemCost")
dls.Add("CarFixTotalPrice")
dls.Add("CarFixLossPrice")
dls.Add("CarFixCommission")
dls.Add("CarFixTax")
dls.Add("CarFixWorkCost")
dls.Add("CarFixPayCash")
dls.Add("CarFixPayBank")
dls.Add("CarFixPayAli")
dls.Add("CarFixPayWechat")

For Each d As String In dls
    If e.DataRow.IsNull(d) Then
        e.DataRow(d) =0
    End If
Next
\'数值列若为空自动填0---

Functions.Execute("EndMyEdit",e.DataRow)



[此贴子已经被作者于2019/1/22 10:42:34编辑过]

--  作者:有点甜
--  发布时间:2019/1/22 10:51:00
--  

 

重复的数据,每一列的数据都相同?如果是这样,而发生的几率又不大的话,你写sql代码,定期删除重复数据,即可。

 

这个问题,很难发现错误的。因为不知道什么时候产生,无法测试。

 

 


--  作者:chen37280600
--  发布时间:2019/1/22 10:59:00
--  回复:(有点甜)?重复的数据,每一列的数据都...
确实是每一列都相同。明摆就是新建后,第一次保存时产生的重复。后续再修改也不会再产生重复了。
由于CarFixAddTime是新建时自动获取且不允许修改,这个字段重复,而其他能被修改的字段没出现重复,更加让我确定是这个情况。
[此贴子已经被作者于2019/1/22 10:59:52编辑过]

--  作者:chen37280600
--  发布时间:2019/1/22 11:05:00
--  回复:(有点甜) 重复的数据,每一列的数据都...
其实最关键在于我并没有这样重复新建行,并且遍历重复赋值的代码。但是它居然可以获取到上一行的全部数据,感觉是狐表的底层触发的问题
--  作者:有点甜
--  发布时间:2019/1/22 11:13:00
--  

DataRowAdding事件写到DataRowAdded去试试。

 

这个问题无法测试和处理的,因为不明确,只能变通的处理。


--  作者:chen37280600
--  发布时间:2019/1/22 11:34:00
--  回复:(有点甜)DataRowAdding事件写到DataRowAdded去...
好吧,我先试试,看下能不能解决问题
--  作者:873773115
--  发布时间:2020/3/2 11:43:00
--  
这个问题解决了吗?  我的是有一两个模块   自动出现重复  在系统操作的时候一切正常,只要一保存,后台就出现一模一样的两份数据    其他模块就没有这个问题   快愁死了
--  作者:有点蓝
--  发布时间:2020/3/2 11:52:00
--  
以下是引用873773115在2020/3/2 11:43:00的发言:
这个问题解决了吗?  我的是有一两个模块   自动出现重复  在系统操作的时候一切正常,只要一保存,后台就出现一模一样的两份数据    其他模块就没有这个问题   快愁死了

贴出具体代码,或者上传实例说明