Foxtable(狐表)用户栏目专家坐堂 → 关于计算量大卡死问题


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

主题:关于计算量大卡死问题

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
关于计算量大卡死问题  发帖心情 Post By:2021/10/11 9:33:00 [显示全部帖子]

我的代码里有大约10组这种汇总的代码,很可能一次全部触发,数据量一大,大约30行左右,大约3-4个层级,就会卡死,请问怎么解决。

 

  If e.DataCol.Name = "净重" OrElse e.DataCol.Name ="数量"  OrElse e.DataCol.Name ="层级"   Then

        Dim wz As Integer

        For wz = 0 To Tables("表A").Rows.count-1

            Dim t1 As Table = Tables("表A")

            Dim a1 As String = t1.Rows(wz)("层级")&"."

            Dim a2 As Integer = t1.Rows(wz)("级别")+1

            If DataTables("表A").Compute("count(层级)","物料信息_层级 like '" & a1 & "%' and 级别= '" & a2 & "' ") > 0 Then   

                t1.Rows(wz)("净重")= DataTables("表A").compute("Sum(净重辅助)","层级 like '" & a1 & "%' and 级别= '" & a2 & "' ") 

            End If

        Next

    End If


图片点击可在新窗口打开查看此主题相关图片如下:捕获2312.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2021/10/11 9:33:19编辑过]

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 10:15:00 [显示全部帖子]

这个哪个版本的,我的casestudy里面怎么没这个案例?19年版的能用这个功能吗,若这个功能不能用,有其他办法吗?
[此贴子已经被作者于2021/10/11 10:24:50编辑过]

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 10:35:00 [显示全部帖子]


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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 10:43:00 [显示全部帖子]

还有请问下,若不买新软件,可以付费升级吗?

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 10:53:00 [显示全部帖子]

我用的加密狗提示2020/2/3以后的版本不能用,应该是17年2月买的,在5年内,这个加密狗是之前辞职的同事留下的,这样能升级吗?费用大约多少?

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 11:13:00 [显示全部帖子]

用这个代码的话,不能实现,级别2或3的数据做了更改,级别1的数据不能立即更新

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 17:06:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:434.jpg
图片点击可在新窗口打开查看

装foxtable的电脑不在身边,不方便传,我用图片说下,

 

用这个代码的话,第一行,第二行,第三行的数量分别输入1,2,2

 

第二行,第三行的净重分别输入3和4,这时,第二行,第三行的净重辅助,分别变为6 和8

 

但第一行的净重不会变为14,因为第一行没数据变化,无法触发以下代码,

 

这时,手工对数量列进行重置列操作,可以完成数据计算。

 

如果要用这个代码进行自动重置,应该放到哪里合适? DataTables("表A").DataCols("数量").RaiseDataColChanged()


 

If e.DataCol.Name = "净重辅助" OrElse e.DataCol.Name ="级别"  OrElse e.DataCol.Name ="层级"   Then

            Dim a1 As String = e.dataRow("层级") & "."

            Dim a2 As Integer = e.dataRow("级别")+1

            If e.DataTable.Compute("count(层级)","层级 like '" & a1 & "%' and 级别= '" & a2 & "' ") > 0 Then   

                e.dataRow("净重")= e.DataTable.compute("Sum(净重辅助)","层级 like '" & a1 & "%' and 级别= '" & a2 & "' ") 

            End If

        Next

    End If


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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/11 17:45:00 [显示全部帖子]

级别为1的净重=所有级别为2的净重*数量之和,

 

例子中的净重辅助=净重*数量

 

 

第一行的净重= 2*3+2*4 =14

 


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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/10/14 21:09:00 [显示全部帖子]

我发现这个代码还有卡的地方,因为执行完代码后,会导致 以下这个条件成立,会使代码再执行一次,这个如何避免?

e.DataCol.Name = "净重辅助" 

 回到顶部