以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 帮忙看看这会有什么错误 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=78391) |
-- 作者:newsun2k -- 发布时间:2015/12/8 14:28:00 -- 帮忙看看这会有什么错误 我在窗口中用ListView 来显示筛选后的数据,用户选择、保存后,会调用addSubmitFileLog,生成一个日志。 大多数情况下,没有问题。 偶尔会发生,明明ListView 中只有一条数据,addSubmitFileLog被执行2遍。 为了解决这个问题,我增加了一个INSERT调试的函数。记录当时的执行情况。 发现出错时,都被执行了两遍。 调试表中的数据 1 主动提交_签名 A001 1 新增 2 主动提交_签名 A001 2 新增 3 addSubmitFileLog A001 4 主动提交_签名 A001 1 新增 5 主动提交_签名 A001 2 新增 6 addSubmitFileLog A001 请袍哥帮忙看看啊,可能的错误出在哪里 执行的代码: Dim lvw As WinForm.ListView = e.Form.Controls("ListView1") For Each vr As WinForm.ListViewRow In lvw.CheckedRows Dim dr As DataRow = DataTables("主动提交").SQLFind("[编码] = \'" & vr("编码") & "\'") Functions.Execute("INSERT调试","主动提交_签名",vr("名称"),"1","新增") ‘向调试表中加一行 vr.CellUseRowStyle = False If dr Is Nothing Then vr("状态") = "确认失败,[主动提交]中无对应的记录!" vr.Cells("状态").backColor = Color.red Continue For Else dr("提交状态") = "TJZT02" dr.save vr("状态") = "确认成功" vr.Cells("状态").backColor = Color.white Functions.Execute("INSERT调试","主动提交_签名",vr("名称"),"2","新增") ‘向调试表中加一行 Functions.Execute("addSubmitFileLog",xxx,xxx) ’重复执行出现在这里 End If Next 数据加载的代码: lvw.Rows.Clear() \'清除原来的行 lvw.CheckBoxes = True lvw.GridLines = True \'显示网格线 Dim c As WinForm.ListViewColumn c = lvw.Columns.Add() c.Name = "名称" \'指定列名 c.Text = "名称" \'指定标题,这里标题和列名相同 c.Width = 500 \'指定列宽 c = lvw.Columns.Add() c.Name = "路径" \'指定列名 c.Text = "路径" \'指定标题,这里标题和列名相同 c.Width = 150 \'指定列宽 c = lvw.Columns.Add() c.Name = "状态" \'指定列名 c.Text = "状态" \'指定标题,这里标题和列名相同 c.Width = 100 \'指定列宽 c = lvw.Columns.Add() c.Name = "编码" \'指定列名 c.Text = "编码" \'指定标题,这里标题和列名相同 c.Width = 200 \'指定列宽 Dim drs As List(Of DataRow) drs = DataTables("主动提交").Select("[提交状态] = \'TJZT01\'") For Each dr As DataRow In drs Dim r As WinForm.ListViewRow = lvw.Rows.Add() \'增加一行 r("名称") = dr("提交文件") r("路径") = dr("文件当前路径") r("编码") = dr("编码") Next lvw.ResumeRedraw() \'恢复绘制 |
-- 作者:大红袍 -- 发布时间:2015/12/8 14:37:00 -- For Each vr As WinForm.ListViewRow In lvw.CheckedRows
循环多少次,就会执行多少次里面的代码。
再有,你整个事件循环多少次,就会执行多少次事件里面的代码。
加入msgbox弹出信息看一下为什么触发两次 |
-- 作者:newsun2k -- 发布时间:2015/12/8 15:53:00 -- 袍哥:就是随机出现的,所以我才加一个INSERT调试的函数,每次操作就加一个记录 |
-- 作者:大红袍 -- 发布时间:2015/12/8 15:55:00 -- 你触发多少次,就会执行多少个代码,不可能乱触发的。 |