Foxtable(狐表)用户栏目专家坐堂 → 代码运算顺序


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

主题:代码运算顺序

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


加好友 发短信
等级:幼狐 帖子:125 积分:1542 威望:0 精华:0 注册:2017/2/1 10:03:00
代码运算顺序  发帖心情 Post By:2024/3/15 8:47:00 [只看该作者]

老师,

您好!

想请教一个问题, 举例说, 我在窗口里设置了1个控件, 单击控件将每个工号导入到表(考勤月清单), 表中工号变更后将自动计算每个员工考勤. 
控件导完工号后设置了重新加载代码. 

我想知道控件上代码与表(考勤月清单)中DataColchanged代码的运算顺序

是导入1个工号, 待这个工号DataColchanged代码运算完后再导入下一个工号? 还是两组代码同时进行运算?
若同时进行运算, 会不会发生控件最后一行重新加载代码滞后于表中DataColchanged代码. 


控件代码:
  For Each pr As DataRow In DataTables("员工清单").Select ("[离职]=false")
            Dim fr As DataRow = DataTables("考勤月清单").Find ("工号= '" & pr("工号") & "' and 年份=" & y & " and 月份=" & m & "")
            If fr Is Nothing Then
                Dim dr As DataRow = DataTables("考勤月清单").AddNew()
                dr("年份") = y
                dr("月份") = m
                dr("工号") = pr("工号")   '工号将触发DataTables("考勤月清单")DataColChanged里面代码进行其它运算
            End If
  Next

  DataTables("考勤月清单").Load() '重新加载





[此贴子已经被作者于2024/3/15 8:48:02编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110495 积分:562359 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/3/15 8:52:00 [只看该作者]

任何时候只要单元格数据变化都会触发DataColChanged,所以这种代码会在每个循环里,触发事件。

也就是,增加一行-》给工号赋值-》触发DataColChanged,执行完毕-》继续循环增加一行-》给工号赋值-》触发DataColChanged......

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


加好友 发短信
等级:幼狐 帖子:125 积分:1542 威望:0 精华:0 注册:2017/2/1 10:03:00
  发帖心情 Post By:2024/3/15 12:28:00 [只看该作者]

老师,

您好!

谢谢回复. 我想知道的是控件代码会不会滞后于表中DataColchanged?
例子中, 控件给表导入工号, 导完所有工号后重新加载表. 但在导入工号过程中表的DataColchanged同时在运算, 在导入最后1个工号后会不会发生DataColchanged还没运算完就重新加载表了. 
因为DataColchanged是表里写的代码, 重新加载是在控件里写的代码. 

控件代码:
  For Each pr As DataRow In DataTables("员工清单").Select ("[离职]=false")
            Dim fr As DataRow = DataTables("考勤月清单").Find ("工号= '" & pr("工号") & "' and 年份=" & y & " and 月份=" & m & "")
            If fr Is Nothing Then
                Dim dr As DataRow = DataTables("考勤月清单").AddNew()
                dr("年份") = y
                dr("月份") = m
                dr("工号") = pr("工号")   '工号将触发DataTables("考勤月清单")DataColChanged里面代码进行其它运算
            End If
  Next
  DataTables("考勤月清单").Load() '重新加载  '此行代码在控件里面.


[此贴子已经被作者于2024/3/15 12:31:04编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

不会的,如果事件触发,肯定要等代事件执行完毕,才会最后执行load

 回到顶部