Foxtable(狐表)用户栏目专家坐堂 → 打开还是很慢


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

主题:打开还是很慢

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


加好友 发短信
等级:四尾狐 帖子:858 积分:6381 威望:0 精华:0 注册:2017/2/13 9:04:00
打开还是很慢  发帖心情 Post By:2019/6/17 21:35:00 [只看该作者]

需求:

因为派发工序表里面的记录很多,希望点按钮后只加载订单号='" & Tables("分派工序_table2").current("订单号")的订单,可是打开还是很慢,是怎么回事


BeforeLoadOuterTable加了如下代码:



Select Case e.DataTableName
    Case "用户表","账套管理","账号部门","权限表"
        If e.DataTableName = "派发工序表" Then
            e.Cancel = True '打开项目的时候不加载此表
            e.SelectString = "Select * F rom {派发工序表} Where 订单号='" & Tables("分派工序_table2").current("订单号") & "'" '设置加载条件,注意如果主键不是_Identify,请改为实际的主键名称
        End If
    Case "报价单",
        e.Cancel = True
    Case Else '其他所有表默认都不加载
        e.Cancel = True
End Select

按钮代码:
If DataTables.Contains("派发工序表") = False Then '如果表C没有加载
    DataTables.Load("派发工序表") '加载表C
End If

forms("修改已扫码").show

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


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

这个代码没有任何意义。首先if语句是永远不会执行的,其次BeforeLoadOuterTable事件还没有加载表,也不存在任何table和窗口,更不用说窗口表的某一行了。

可以试试:

BeforeLoadOuterTable加了如下代码:

Select Case e.DataTableName
    Case "用户表","账套管理","账号部门","权限表"
    Case "派发工序表",
        e.SelectString = "Select * F rom {派发工序表} Where [_Identify] is null"
    Case Else '其他所有表默认都不加载
        e.Cancel = True
End Select

afteropenproject事件
forms("分派工序").open

"分派工序"table2窗口表currentchanged事件
if e.table.current isnot nothing
    datatables("派发工序表").loadfilter = "订单号='" & e.table.current("订单号") & "'"
    datatables("派发工序表").load
end if



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


加好友 发短信
等级:四尾狐 帖子:858 积分:6381 威望:0 精华:0 注册:2017/2/13 9:04:00
  发帖心情 Post By:2019/6/18 11:11:00 [只看该作者]

试过了,这样打开窗口没有数据,
打开分派工序窗口后点按钮后才打开修改已扫码窗口,因为派发工序表里面的记录很多,希望点按钮后只加载订单号='" & Tables("分派工序_table2").current("订单号")的订单
修改已扫码窗口AfterLoad:
If Forms("修改已扫码").Opened() '一定要判断用于模拟关联表的窗口是否已经打开

    Dim h As Table = Tables("修改已扫码_table1")
    With Tables("分派工序_table2")
        If .Current IsNot Nothing   Then         
            h.Filter = "订单号 = '" & .Current("订单号") & "' and 制单号 = '" & .Current("生产单号") & "' and 单据状态 = '已完成' "
        Else
            h.Filter = "False"
        End If
    End With
End If

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


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

比如

 

If Forms("修改已扫码").Opened '一定要判断用于模拟关联表的窗口是否已经打开
    Dim h As Table = Tables("修改已扫码_table1")
    With Tables("分派工序_table2")
        If .Current IsNot Nothing   Then
            h.DataTable.loadFilter = "订单号 = '" & .Current("订单号") & "' and 制单号 = '" & .Current("生产单号") & "' and 单据状态 = '已完成' "
        Else
            h.DataTable.loadFilter = "False"
        End If
        h.DataTable.load
    End With
End If


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


加好友 发短信
等级:四尾狐 帖子:858 积分:6381 威望:0 精华:0 注册:2017/2/13 9:04:00
  发帖心情 Post By:2019/6/18 11:47:00 [只看该作者]

这种方式走不通

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


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

以下是引用yetle在2019/6/18 11:47:00的发言:
这种方式走不通

 

不理解你什么意思?怎么走不通?

 

上传具体例子,说明你要做什么


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


加好友 发短信
等级:四尾狐 帖子:858 积分:6381 威望:0 精华:0 注册:2017/2/13 9:04:00
  发帖心情 Post By:2019/6/18 14:20:00 [只看该作者]

If DataTables.Contains("派发工序表") = False Then '如果表C没有加载
    DataTables.Load("派发工序表") '加载表C
End If
不能在这里加载表的时候定义只加载部分数据吗?
[此贴子已经被作者于2019/6/18 14:21:48编辑过]

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


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

以下是引用yetle在2019/6/18 14:20:00的发言:
If DataTables.Contains("派发工序表") = False Then '如果表C没有加载
    DataTables.Load("派发工序表") '加载表C
End If
不能在这里加载表的时候定义只加载部分数据吗?
[此贴子已经被作者于2019/6/18 14:21:48编辑过]

 

在load表格的时候,不加载任何数据,然后你再指定 datatables("").LoadFilter 重新加载数据,不就行了?


 回到顶部