以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于动态加载数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54244)

--  作者:chnfo
--  发布时间:2014/7/24 12:09:00
--  [求助]关于动态加载数据
现在的项目启动速度太慢了,就是因为要加载太多的表(约有40个),还有很多数据。
所以,想初始时,加载部分登录所需要判断的表,然后想在通过TopicBar来动态加载表和数据。

但在帮助的“初始不加载表”中,有这样的代码
Select Case e.DataTableName
Case "表A","表B" \'表A和表B无条件加载
Case "表C"
If e.User.Type <> UserTypeEnum.Developer Then \'只有开发者才加载表C
e.Cancel = True
End If
Case Else \'其他所有表默认都不加载
e.Cancel =
True

End
Select

这样,可以实现在初始启动系统时,只加载必要的表(如用户、权限等,数据量也少,速度快了很多)


然后是动态加载数据的内容,有一个“一个小例子”,这个也可以解决动态加载的问题。

新的问题是,后面加载的表,有些要用到DropForm这个东东。
在“自定义录入界面之二”中,要求这个代码在AfterOpenProject事件中

5、在项目事件AfterOpenProject事件中加入代码:

Tables("订单").Cols("客户ID").DropForm = "窗口1"



但最开始并没有加载DataTables("订单")这个表,显然启动的时候就会出错。

该如何解决呢?


--  作者:lsy
--  发布时间:2014/7/24 14:05:00
--  
表的PrepareEdit事件,可以在全局表事件,也可以是在具体某个表的表事件中。
--  作者:有点甜
--  发布时间:2014/7/24 14:28:00
--  
 呃,这句代码可以放在其他事件啊。看2楼
--  作者:chnfo
--  发布时间:2014/7/24 14:37:00
--  
你的意思是 Tables("订单").Cols("客户ID").DropForm = "窗口1" 可以放在订单表的PrepareEdit事件里? 那就有点小问题,每次打开订单表时都会去生成这个窗口,不太合适
[此贴子已经被作者于2014-7-24 14:43:30编辑过]

--  作者:有点甜
--  发布时间:2014/7/24 14:38:00
--  
以下是引用chnfo在2014-7-24 14:37:00的发言:
你的意思是 Tables("订单").Cols("客户ID").DropForm = "窗口1" 可以放在订单表的PrepareEdit事件里?

 

任意事件都可以,你觉得哪里方便就放在哪里


--  作者:chnfo
--  发布时间:2014/7/24 14:47:00
--  
如果不能放在项目打开事件里,那是否表示每次订单表都得生成这个下拉窗口?
--  作者:Bin
--  发布时间:2014/7/24 15:11:00
--  
只是打开这个窗口而已,放心用好了,不影响性能.