Foxtable(狐表)用户栏目专家坐堂 → [求助]求代码优化


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

主题:[求助]求代码优化

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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
[求助]求代码优化  发帖心情 Post By:2019/1/3 18:50:00 [只看该作者]

放在DataColChanged事件中,每次切换到这个表的时候都会卡半天,求优化

Dim Filter As String = "检验批编号 = '" & e.DataRow("检验批编号") & "'"
Dim Filter1 As String = "检验批编号 = '" & e.DataRow("检验批编号") & "'and 班组 <> '"& "下料" &"'"
Dim drs1 As List(Of DataRow) = DataTables("无损_构件清单").SQLSelect(Filter)
Dim drs2 As List(Of DataRow) = DataTables("无损_检测明细").SQLSelect(Filter)
Dim drs3 As List(Of DataRow) = DataTables("无损_检测明细").SQLSelect(Filter1)
Select Case e.DataCol.Name
    Case "检验批"
        For Each dr1 As DataRow In drs1
            dr1("检验批") = e.DataRow("检验批")
            dr1.Save
        Next
        For Each dr2 As DataRow In drs2
            dr2("检验批") = e.DataRow("检验批")
            dr2.Save
        Next
    Case "车间"
        If e.OldValue = "" Then
            For Each dr1 As DataRow In drs1
                dr1("车间") = e.DataRow("车间")
                dr1.Save
            Next
        Else
            Dim Result As DialogResult = MessageBox.Show("是否将明细表数据全部更改(不包含下料组)","提示",MessageBoxButtons.YesNo)
            For Each dr1 As DataRow In drs1
                dr1("车间") = e.DataRow("车间")
                dr1.Save
            Next
            If Result = DialogResult.Yes Then
                For Each dr2 As DataRow In drs2
                    dr2("车间") = e.DataRow("车间")
                    dr2.Save
                Next
            Else
                Return
            End If
        End If
    Case "班组"
        If e.OldValue Is Nothing Then
            For Each dr1 As DataRow In drs1
                dr1("班组") = e.DataRow("班组") '修改构件清单表
                dr1.Save
            Next
        Else
            Dim Result As DialogResult = MessageBox.Show("是否将明细表数据全部更改(不包含下料组)","提示",MessageBoxButtons.YesNo)
            If Result = DialogResult.Yes Then
                'SystemReady = False
                For Each dr1 As DataRow In drs1
                    dr1("班组") = e.DataRow("班组") '修改构件清单表
                    dr1.Save
                Next
                For Each dr3 As DataRow In drs3
                    dr3("班组") = e.DataRow("班组") '修改检测明细表(不包含班组等于下料组的行)
                    dr3.Save
                Next
                'SystemReady = True
            ElseIf Result = DialogResult.No Then
                'SystemReady = False
                For Each dr1 As DataRow In drs1
                    dr1("班组") = e.DataRow("班组")
                    dr1.Save
                Next
                'SystemReady = True
            Else
                Return
            End If
            'DataTables("无损_构件清单").SQLUpdate(drs1)
            'DataTables("无损_检测明细").SQLUpdate(drs2)
            'DataTables("无损_检测明细").SQLUpdate(drs3)
        End If
End Select


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/3 20:40:00 [只看该作者]

1、DataColChanged事件的代码,只有你修改行列的值、或者重置列,才会执行的;

 

2、你什么时候执行这段代码?执行的目的是什么?执行 SQLSelect 的时候,每执行一次大概耗时0.5秒的。


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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)1、DataColChanged事件的代码,只有你...  发帖心情 Post By:2019/1/3 22:31:00 [只看该作者]

是希望在数据改变的时候对应的关联明细数据也跟着改变,执行时间就是在数据改变后执行

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/3 22:39:00 [只看该作者]

以下是引用紫色幽魂在2019/1/3 22:31:00的发言:
是希望在数据改变的时候对应的关联明细数据也跟着改变,执行时间就是在数据改变后执行

 

执行一次,也不至于卡半天。请做一个对应实例发上来测试。


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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2019/1/3 22:31...  发帖心情 Post By:2019/1/3 22:56:00 [只看该作者]

用的是外部数据源,有什么方法能将数据一起直接发上来

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/3 22:57:00 [只看该作者]

以下是引用紫色幽魂在2019/1/3 22:56:00的发言:
用的是外部数据源,有什么方法能将数据一起直接发上来

 

你可以单独做一个类似的项目发上来。把相关的表导出,导入到新项目,然后加上代码。


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


加好友 发短信
等级:三尾狐 帖子:683 积分:5399 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2019/1/3 22:56...  发帖心情 Post By:2019/1/4 8:57:00 [只看该作者]

外部数据源不能一起上传,很麻烦,我加入测试耗时代码,发现这个表不管有多少行数据,每行数据都会被执行一次这个代码,如果数据行数加载的少很快就完成了,不然会卡很久,每行数据耗时:0.0668204秒左右,数据多了就很卡,看不出来我就重新做一个项目发上来

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/4 9:07:00 [只看该作者]

上传具体实例测试。


 回到顶部