Foxtable(狐表)用户栏目专家坐堂 → 帮忙看看这会有什么错误


  共有1833人关注过本帖树形打印复制链接

主题:帮忙看看这会有什么错误

帅哥,在线噢!
newsun2k
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1488 积分:11077 威望:0 精华:0 注册:2014/8/13 16:19:00
帮忙看看这会有什么错误  发帖心情 Post By:2015/12/8 14:28:00 [只看该作者]

我在窗口中用ListView 来显示筛选后的数据,用户选择、保存后,会调用addSubmitFileLog,生成一个日志。
大多数情况下,没有问题。
偶尔会发生,明明ListView 中只有一条数据,addSubmitFileLog被执行2遍。
为了解决这个问题,我增加了一个INSERT调试的函数。记录当时的执行情况。
发现出错时,都被执行了两遍。
调试表中的数据
1 主动提交_签名 A001 1 新增
2 主动提交_签名 A001 2 新增
addSubmitFileLog A001
4 主动提交_签名 A001 1 新增
5 主动提交_签名 A001 2 新增
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() '恢复绘制

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/8 14:37:00 [只看该作者]

For Each vr As WinForm.ListViewRow In lvw.CheckedRows

 

循环多少次,就会执行多少次里面的代码。

 

再有,你整个事件循环多少次,就会执行多少次事件里面的代码。

 

加入msgbox弹出信息看一下为什么触发两次


 回到顶部
帅哥,在线噢!
newsun2k
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1488 积分:11077 威望:0 精华:0 注册:2014/8/13 16:19:00
  发帖心情 Post By:2015/12/8 15:53:00 [只看该作者]

袍哥:就是随机出现的,所以我才加一个INSERT调试的函数,每次操作就加一个记录

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/8 15:55:00 [只看该作者]

你触发多少次,就会执行多少个代码,不可能乱触发的。

 回到顶部