以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 打开还是很慢 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136631) |
-- 作者:yetle -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点甜 -- 发布时间:2019/6/18 11:20:00 -- 比如
If Forms("修改已扫码").Opened \'一定要判断用于模拟关联表的窗口是否已经打开 |
-- 作者:yetle -- 发布时间:2019/6/18 11:47:00 -- 这种方式走不通 |
-- 作者:有点甜 -- 发布时间:2019/6/18 11:53:00 -- 以下是引用yetle在2019/6/18 11:47: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编辑过]
|
-- 作者:有点甜 -- 发布时间: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 重新加载数据,不就行了? |