以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  切换页面卡机  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157171)

--  作者:huaqing8828
--  发布时间:2020/10/6 10:43:00
--  切换页面卡机
请老师看一下这段代码有问题吗?这段代码我删掉后切换这个页面就不卡机。否则就卡机。请老师指教

Select Case e.DataCol.Name
    Case "发货批号","现送数量","送货日期"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[送货日期] >= #" & e.DataRow("送货日期") & "# And [发货批号] = \'" & e.DataRow("发货批号") & "\'"
        drs = e.DataTable.Select(Filter)
        For Each dr As DataRow In drs
            Filter = "iif([送货日期] < #" & dr("送货日期") & "#, [送货日期] < #" & dr("送货日期") & "# And [发货批号] = \'" & dr("发货批号") & "\', [送货日期] = #" & dr("送货日期") & "# and _sortkey <= " & dr("_sortkey") & " And [发货批号] = \'" & dr("发货批号") & "\')"
            Dim Val1 As Double = e.DataTable.Compute("Sum(现送数量)",Filter)
            dr("已送数量") = Val1 - dr("现送数量")
        Next
        If e.DataCol.Name = "发货批号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[送货日期] > #" & e.DataRow("送货日期") & "# And [发货批号] = \'" & e.OldValue & "\'"
            drs = e.DataTable.Select(Filter)
            For Each dr As DataRow In drs
                Filter = "iif([送货日期] < #" & dr("送货日期") & "#, [送货日期] < #" & dr("送货日期") & "# And [发货批号] = \'" & dr("发货批号") & "\', [送货日期] = #" & dr("送货日期") & "# and _sortkey <= " & dr("_sortkey") & " And [发货批号] = \'" & dr("发货批号") & "\')"
                Dim Val1 As Double = e.DataTable.Compute("Sum(现送数量)",Filter)
                dr("已送数量") = Val1 - dr("现送数量")
            Next
        End If
End Select

--  作者:有点蓝
--  发布时间:2020/10/6 10:54:00
--  
如果是在datacolchanged事件,切换表不可能会执行的。应该是有其他代码影响了,比如重置列的代码,或者在切换表的时候改变了"发货批号","现送数量","送货日期"这几列的数据
--  作者:huaqing8828
--  发布时间:2020/10/6 13:07:00
--  
谢谢老师,我再检查一下
--  作者:huaqing8828
--  发布时间:2020/10/6 14:00:00
--  
老师我是在datacolchanged事件里写上面的代码的,检查过了问题就出现在"发货批号","现送数量","送货日期"这三列,这三列的任意一列我按一下重置列都卡机。老师应该怎么解决啊
--  作者:有点蓝
--  发布时间:2020/10/6 14:22:00
--  
如果数据多,没有办法。可以考虑从业务逻辑上优化,具体上传实例看看有没有变通的方法
--  作者:huaqing8828
--  发布时间:2020/10/6 15:15:00
--  
老师我现在只保存三天的数据,就可以切换了。实际上我只需要保存三天的数据,那么老师三天以前的数据可以做到自动删除吗
--  作者:有点蓝
--  发布时间:2020/10/6 15:21:00
--  
可以在afteropenproject事件打开项目时删除:http://www.foxtable.com/webhelp/topics/0394.htm


--  作者:huaqing8828
--  发布时间:2020/10/6 16:41:00
--  
可以了,谢谢老师