Foxtable(狐表)用户栏目专家坐堂 → [求助]删除行的时候报错


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

主题:[求助]删除行的时候报错

帅哥哟,离线,有人找我吗?
81538475
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
[求助]删除行的时候报错  发帖心情 Post By:2020/9/9 9:29:00 [只看该作者]

drawdell 里面报错
不能通过已删除的行访问该行的信息

If Forms("任务-xmZB").Opened Then
    
    Tables("任务-xmZB_table1").grid.Cols(0).widthdisplay = 4
    Tables("任务-xmZB_table1").Grid.Rows(0).Height =27
    Tables("任务-xmZB_table2").grid.Cols(0).widthdisplay = 4
    'Tables("任务-xmZB_table1").Grid.Rows(0).Height =27

End If
If Forms("任务-xmfp").Opened Then
    Tables("任务-xmfp_table1").grid.Cols(0).widthdisplay = 4
End If


If vars("start") = True AndAlso (e.Col.name = "缩略图" OrElse e.Col.name = "通过截图") AndAlso e.Table.Name<>"任务-xmfp_table1"  Then  '--------改成本地文件之后,去掉 vars("局域网")=True AndAlso
    If e.Col.name= "缩略图" Then

        e.StartDraw
        If e.Row("缩略图") > "" Then
            If FileSys.FileExists(ProjectPath & "\Foxtemp\"  & e.Row("缩略图")) Then
                e.Graphics.DrawImage(getimage(ProjectPath & "\Foxtemp\"  & e.Row("缩略图")), e.x ,e.y ,  e.Width ,e.Height ) '绘制第一个图标
            Else
                e.Graphics.DrawImage(failed, e.x + 1,e.y +1, 42,42)
            End If
        End If
        e.text = ""
        e.EndDraw
        
    End If
    
End If

'-------------日期显示设置
If e.Col.IsDate Then
    If e.Row.isnull(e.Col.Name) = False Then
        e.text = format(e.Row(e.Col.Name),"MM-dd")
    End If
End If



If vars("start2") = True Then
    e.Table.Se\ect(0, 1)
    vars("start2") = False
    
End If
'''


If  e.Row.Locked =False Then
    
    Dim dr As DataRow = DataTables("XMZB").find("bh = '"& e.row("BH") & "'")
    
    'Dim dr As DataRow = DataTables("XMFP").DataRows(e.Row.Index)
    'Dim pr As DataRow = dr.GetParentrow("xmzb")
    
    If dr IsNot Nothing Then
        
        
        If  dr("已通过") = True Then
            e.style = "通过"
        Else If e.Row("任务状态") = "通过" Then
            e.Style = "通过"
        Else
            If e.Col.Name = "任务结束" Then
                If e.Row.IsNull("任务结束") = False
                    Dim d1 As Date=e.Row("任务结束")
                    Dim tp As TimeSpan = E.Row("任务结束") - E.Row("计划开始")
                    Dim tp2 As TimeSpan = D1 - Date.Today
                    
                    If tp2.TotalDays <0 Then
                        e.Style = "延期提醒"
                    Else
                        If tp2.TotalDays/TP.TotalDays < 0.3 AndAlso tp2.TotalDays/TP.TotalDays >= 0 Then
                            e.Style = "到期提醒"
                            
                        Else
                            e.Style = Nothing
                        End If
                    End If
                End If
            Else If e.Row("剩余人天") < 0 AndAlso e.Col.Name = "剩余人天"  Then
                e.Style = "延期提醒"
                
                'Else
                'If CurrentTable.Name= "xmfp" Then
                'Dim idx As Integer = 0
                'For i As Integer = 1 To e.Row.Index
                'If e.Table.Rows(i-1)("成员") <> e.Table.Rows(i)("成员") Then
                'idx += 1
                'End If
                'Next
                'If idx Mod 2 = 0 Then
                'e.style = "样式1"
                'Else
                'e.style = "样式2"
                'End If
                'End If
                
            End If
        End If
    End If
    
    
    If e.Row.IsNull("颜色记录") = False Then
        Dim n As String = "样式" & e.Row("_Identify") & "_" & e.Col.name
        Dim ary() As String = e.Row("颜色记录").split("|")
        For Each s As String In ary
            Dim a() As String = s.split(":")
            If a(0) = e.Col.name Then
                e.Table.DataTable.AddUserStyle(n, Color.FromARGB(a(1)), Color.black)
                e.Table.DataTable.Styles(n).BackColor = Color.FromARGB(a(1))
                e.style = n
                Exit For
            End If
        Next
    End If
    
    
    
Else
    
    'Dim idx As Integer = 0
    'For i As Integer = 1 To e.Row.Index
    'If e.Table.Rows(i-1)("成员") <> e.Table.Rows(i)("成员") Then
    'idx += 1
    'End If
    'Next
    'If idx Mod 2 = 0 Then
    'e.style = "样式3"
    'Else
    'e.style = "样式4"
    'End If
    
    'e.Style = "锁定"
End If

'If e.Row.IsNull("任务") = False  Then
'If e.Row("任务").contains("_复制") Then
'e.Style = "新增行"
'End If
'End If
'''
'''

If e.Col.name="项目名称" Then
    
    If e.Row.Index = vars("x") AndAlso e.Col.Index = vars("y") Then
        e.Style = "突出显示"
    End If
End If
'If e.Row.index =  e.Table.rowsel Then
'e.Style = "整行样式"
'End If
[此贴子已经被作者于2020/9/9 9:29:44编辑过]

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/9 9:35:00 [只看该作者]

一步步去掉部分代码测试,看是那一句代码有问题

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2020/9/10 0:29:00 [只看该作者]

If e.Row.IsNull("任务结束") = False
                    Dim d1 As Date=e.Row("任务结束")
                    Dim tp As TimeSpan = E.Row("任务结束") - E.Row("计划开始")
                    Dim tp2 As TimeSpan = D1 - Date.Today
                    '
                    If tp2.TotalDays <0 Then
                        e.Style = "延期提醒"
                    Else
                        If tp2.TotalDays/TP.TotalDays < 0.3 AndAlso tp2.TotalDays/TP.TotalDays >= 0 Then
                            e.Style = "到期提醒"
                            
                        Else
                            e.Style = Nothing
                        End If
                    End If
                End If
是这一段报错。
再删除行的时候报错了
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:任务,CurrentChanged
详细错误信息:
不能通过已删除的行访问该行的信息。

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/10 9:13:00 [只看该作者]

提示的是这个事件错误【错误所在事件:任务,CurrentChanged】,不是drawcell事件

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2020/9/16 19:37:00 [只看该作者]

会先提示这个,在提示CurrentChanged
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:表,任务,DrawCell
详细错误信息:
调用的目标发生了异常。
不能通过已删除的行访问该行的信息。

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


加好友 发短信
等级:六尾狐 帖子:1287 积分:10362 威望:0 精华:1 注册:2018/1/20 12:40:00
  发帖心情 Post By:2020/9/16 20:24:00 [只看该作者]

目前想在删除前 systemready = false
删除后恢复 systemready = True
但是恢复的代码写在 删除中和删除后,都不行。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/17 8:57:00 [只看该作者]

有时候错误是连锁反应的,先解决CurrentChanged问题,也许就没有问题了

 回到顶部