以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  此行已从表中移除并且没有任何数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=162382)

--  作者:季朝龙
--  发布时间:2021/4/13 11:21:00
--  此行已从表中移除并且没有任何数据

出现这个异常提示,代码如下,老师帮忙看看是什么原因:

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:表,会议室,DataColChanged
详细错误信息:
调用的目标发生了异常。
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

 

Select Case e.DataCol.Name
    Case "开始时间"
        If e.DataRow("日期") = "01/01/0001" Then
            MessageBox.Show("请先填写日期!")
            e.DataRow("开始时间") = Nothing
        Else
            DataTables("会议室").LoadFilter = "日期 = \'" & e.DataRow("日期") & "\' "
            DataTables("会议室").Load
            Dim n As Integer = Tables("会议室").Rows.Count
            Dim i As Integer
            For i = 0 To n-2
                Dim r As Row = Tables("会议室").Rows(i)
                If r("开始时间") < e.DataRow("开始时间") And r("结束时间") > e.DataRow("开始时间") Then
                    MessageBox.Show("会议时间重叠,请从新填写会议时间!")
                End If
            Next
        End If
    Case "结束时间"
        If e.DataRow("开始时间") = "01/01/0001" Then
            MessageBox.Show("请先填写开始时间!")
            \'e.Cancel = True
            e.DataRow("结束时间") = Nothing
        Else
            DataTables("会议室").LoadFilter = "日期 = \'" & e.DataRow("日期") & "\' "
            DataTables("会议室").Load
            Dim n As Integer = Tables("会议室").Rows.Count
            Dim i As Integer
            For i = 0 To n-2
                Dim r As Row = Tables("会议室").Rows(i)
                If r("开始时间") < e.DataRow("开始时间") And r("结束时间") > e.DataRow("开始时间") Or r("开始时间") < e.DataRow("结束时间") And r("结束时间") > e.DataRow("结束时间") Then
                    MessageBox.Show("会议时间重叠,请从新填写会议时间!")
                End If
            Next
        End If
End Select


--  作者:有点蓝
--  发布时间:2021/4/13 12:00:00
--  
不要在DataColChanged事件有任何加载自己的代码,下面代码导致当前表的所有行都变了,e.DataRow已经不存在,再使用就出错了

            DataTables("会议室").LoadFilter = "日期 = \'" & e.DataRow("日期") & "\' "
            DataTables("会议室").Load