Foxtable(狐表)用户栏目专家坐堂 → [求助]关联表的子表,同步表时特别慢


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

主题:[求助]关联表的子表,同步表时特别慢

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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
[求助]关联表的子表,同步表时特别慢  发帖心情 Post By:2021/5/13 13:22:00 [只看该作者]

主表就是下单的,子表就是生产的记录,刷新子表时特别慢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:华晨生产计划.zip


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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
  发帖心情 Post By:2021/5/13 13:32:00 [只看该作者]

还有新版本的交叉统计,不能直接显示小计了

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/13 13:59:00 [只看该作者]

开发者密码给一下

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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
  发帖心情 Post By:2021/5/13 14:00:00 [只看该作者]

004226


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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/13 14:30:00 [只看该作者]

如果是指【打印明细】表加载慢 ,是因为【华晨生产计划】的表达式计算造成的,【打印明细】表加载后会导致【华晨生产计划】7000多行数据的表达式列重新计算。加载的数据越多肯定就越慢。建议改为数据列,然后在表事件里实时计算:http://www.foxtable.com/webhelp/topics/1472.htm



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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
  发帖心情 Post By:2021/5/13 15:11:00 [只看该作者]

请老师帮忙,我不知道该怎么设计代码,要关联到  登记日期,客户,花号,色位,面料,下单米数,打印机台  ,都相同才能统计


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


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

有多少个列就加多少个添加咯

首先将统计表的DataColChanged事件代码设置为:

If e.DataCol.Name = "产品" orelse e.DataCol.Name = "列2" orelse e.DataCol.Name = "列3" Then

    Dim Filter As String = "[产品] = '" & e.DataRow("产品") & "' and [列2] = '" & e.DataRow("列2") & "' and [列3] = '" & e.DataRow("列3") & "'"

    e.DataRow("数量") = DataTables("订单").Compute("Sum(数量)", Filter)
    e.
DataRow("金额") = DataTables("订单").Compute("Sum(金额)", Filter)
End
 If

同样在统计表设置好上述代码后,请重置一次该表的产品列。

订单表的金额列是一个表达式列,其表达式为:[数量] * [单价] * (1 - [折扣])
我们知道表达式列有一个特性,就是其值发生变化后,并不会触发DataColChanged事件,此特性导致我们无法简单地用前面介绍的方法来自动更新统计表中的销售金额。
所以有必要考虑用另一重算方法,将订单表的DataColChanged事件代码设置为:

Select Case e.DataCol.Name
    Case
 "数量","单价","折扣"
        
Dim pr As DataRow
        pr = 
DataTables("统计").Find("产品 = '" & e.DataRow("产品") & "'
 and [列2] = '" & e.DataRow("列2") & "' and [列3] = '" & e.DataRow("列3") & "'")

        If pr IsNot Nothing Then
            DataTables
("统计").DataCols("产品").RaiseDataColChanged(pr)
        End
 If
End
 Select


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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
  发帖心情 Post By:2021/5/13 15:30:00 [只看该作者]

If e.DataCol.Name = "总米数" Then
    Dim pr As DataRow
    pr = 
DataTables("华晨生产计划").Find("(登记日期 = '" & e.DataRow("登记日期") & "',客户 = '" & e.DataRow("客户") & "' ,花号 = '" & e.DataRow("花号") & "')")
    If
 pr IsNot Nothing 
Then
        pr(
"总米数")= pr("总米数") + e.NewValue - e.OldValue
    End
 
If
End
 If

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


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

去掉条件里的逗号。

另外建议使用帮助里的【另一种自动更新方式】,不要使用第一种+ e.NewValue - e.OldValue的方法

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


加好友 发短信
等级:幼狐 帖子:98 积分:860 威望:0 精华:0 注册:2020/5/28 10:53:00
  发帖心情 Post By:2021/5/13 15:52:00 [只看该作者]

Select Case e.DataCol.name
    Case "登记日期","客户","花号","色位","面料","米数","打印机台"
    Dim Filter As String = "[登记日期] = '" & e.DataRow("登记日期") & "' and [客户] = '" & e.DataRow("客户") & "' and [花号] = '" & e.DataRow("花号") & "' and [色位] = '" & e.DataRow("色位") & "' and [面料] = '" & e.DataRow("面料") & "' and [下单米数] = '" & e.DataRow("米数") & "' and [打印机台] = '" & e.DataRow("打印机台") & "'"
    e.DataRow("打印总数") = DataTables("打印明细").Compute("Sum(打印米数)", Filter)
    e.DataRow("墨水总量") = DataTables("打印明细").Compute("Sum(墨水用量)", Filter)
End Select

 回到顶部
总数 21 1 2 3 下一页