以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]求代码优化 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=129682) |
-- 作者:紫色幽魂 -- 发布时间: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 |
-- 作者:有点甜 -- 发布时间:2019/1/3 20:40:00 -- 1、DataColChanged事件的代码,只有你修改行列的值、或者重置列,才会执行的;
2、你什么时候执行这段代码?执行的目的是什么?执行 SQLSelect 的时候,每执行一次大概耗时0.5秒的。 |
-- 作者:紫色幽魂 -- 发布时间:2019/1/3 22:31:00 -- 回复:(有点甜)1、DataColChanged事件的代码,只有你... 是希望在数据改变的时候对应的关联明细数据也跟着改变,执行时间就是在数据改变后执行 |
-- 作者:有点甜 -- 发布时间:2019/1/3 22:39:00 -- 以下是引用紫色幽魂在2019/1/3 22:31:00的发言:
是希望在数据改变的时候对应的关联明细数据也跟着改变,执行时间就是在数据改变后执行
执行一次,也不至于卡半天。请做一个对应实例发上来测试。 |
-- 作者:紫色幽魂 -- 发布时间:2019/1/3 22:56:00 -- 回复:(有点甜)以下是引用紫色幽魂在2019/1/3 22:31... 用的是外部数据源,有什么方法能将数据一起直接发上来 |
-- 作者:有点甜 -- 发布时间:2019/1/3 22:57:00 -- 以下是引用紫色幽魂在2019/1/3 22:56:00的发言:
用的是外部数据源,有什么方法能将数据一起直接发上来
你可以单独做一个类似的项目发上来。把相关的表导出,导入到新项目,然后加上代码。 |
-- 作者:紫色幽魂 -- 发布时间:2019/1/4 8:57:00 -- 回复:(有点甜)以下是引用紫色幽魂在2019/1/3 22:56... 外部数据源不能一起上传,很麻烦,我加入测试耗时代码,发现这个表不管有多少行数据,每行数据都会被执行一次这个代码,如果数据行数加载的少很快就完成了,不然会卡很久,每行数据耗时:0.0668204秒左右,数据多了就很卡,看不出来我就重新做一个项目发上来 |
-- 作者:有点甜 -- 发布时间:2019/1/4 9:07:00 -- 上传具体实例测试。 |