Foxtable(狐表)用户栏目专家坐堂 → 动态加载的困惑(狐爸请看一下)?


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

主题:动态加载的困惑(狐爸请看一下)?

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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
动态加载的困惑(狐爸请看一下)?  发帖心情 Post By:2013/4/27 9:37:00 [只看该作者]

帮助中讲的动态加载多数是指动态加载数据,如果在增加外部表时用条件Identify is Null限制了打开项目时不加载

数据,速度会快些,但空表即表结构每个表也需要全部加载,表多了速度一样很慢。

 

现在改成在项目的外部数据表设计好后,在项目事件BeforeLoadOuterTable中用如下代码

Select Case e.DataTableName
    Case "用户"  
       e.Cancel = False
    Case Else
       e.Cancel = True
End Select

 

目的是打开项目时只加载“用户”这个表的结构及数据,速度真的很快,但打开项目后想要根据需要再加载其他数据表时要用什么代码或者怎么才能实现?如下图。


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

 

谢谢!


 

[此贴子已经被作者于2013-5-6 10:47:44编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/4/27 9:39:00 [只看该作者]

比较简单的做法就是,常用的表就不要使用动态加载  不是常用的表使用动态加载

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


加好友 发短信
等级:一尾狐 帖子:476 积分:3523 威望:0 精华:0 注册:2012/12/13 14:23:00
  发帖心情 Post By:2013/4/27 9:52:00 [只看该作者]

常用的,信息量少的,用WIN的ACC数据库代替,存放在本地,比对远程数据库中有无修改,修改则更新本机上的ACC数据库,未修改则使用本地的ACC数据库。

经验比较少。个人看法。勿拍。

图片点击可在新窗口打开查看


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/4/27 10:23:00 [只看该作者]

谢谢!

那看来就把授权表,用户,流程设置之类的基础表都全部加载(数据量不大,就几百行内),但这样内存小的电脑是否受不了啊,原来以为全部动态加载好,把datatabel的代码都改为SQLCommand从后台加载的,看来又要改回来了。好多啊,

还有没有其他好办法?

 


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/4/27 10:50:00 [只看该作者]

追加一个问题,打开项目初始化时打开很多事件开关,因为都是用全局事件,这个是否会影响打开的速度或运行中的速度?

For Each dt As DataTable In DataTables
    dt.GlobalHandler.AfterLoad = True
    dt.GlobalHandler.PrepareEdit = True
    dt.GlobalHandler.StartEdit = True
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataColChanging = True
    dt.GlobalHandler.BeforeDeleteDataRow = True
    dt.GlobalHandler.BeforeSaveDataRow = True
    dt.GlobalHandler.BeforeSelChange = True
    dt.GlobalHandler.DataRowDeleting = True
    dt.GlobalHandler.DataRowDeleted = True
    dt.GlobalHandler.DataRowAdding = True
    dt.GlobalHandler.DataRowLockedChanged = True
Next


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


加好友 发短信
等级:一尾狐 帖子:476 积分:3523 威望:0 精华:0 注册:2012/12/13 14:23:00
  发帖心情 Post By:2013/4/27 11:06:00 [只看该作者]

以下是引用zpx_2012在2013-4-27 10:23:00的发言:

谢谢!

那看来就把授权表,用户,流程设置之类的基础表都全部加载(数据量不大,就几百行内),但这样内存小的电脑是否受不了啊,原来以为全部动态加载好,把datatabel的代码都改为SQLCommand从后台加载的,看来又要改回来了。好多啊,

还有没有其他好办法?

 

和你的项目设计框架也有一定的关系。

进入某模块再进行数据加载。

不进入就不加载。

不要一打开项目就把所有的数据都加载到本地。。


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


加好友 发短信
等级:一尾狐 帖子:476 积分:3523 威望:0 精华:0 注册:2012/12/13 14:23:00
  发帖心情 Post By:2013/4/27 11:09:00 [只看该作者]

以下是引用zpx_2012在2013-4-27 10:50:00的发言:

追加一个问题,打开项目初始化时打开很多事件开关,因为都是用全局事件,这个是否会影响打开的速度或运行中的速度?

For Each dt As DataTable In DataTables
    dt.GlobalHandler.AfterLoad = True
    dt.GlobalHandler.PrepareEdit = True
    dt.GlobalHandler.StartEdit = True
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.DataColChanging = True
    dt.GlobalHandler.BeforeDeleteDataRow = True
    dt.GlobalHandler.BeforeSaveDataRow = True
    dt.GlobalHandler.BeforeSelChange = True
    dt.GlobalHandler.DataRowDeleting = True
    dt.GlobalHandler.DataRowDeleted = True
    dt.GlobalHandler.DataRowAdding = True
    dt.GlobalHandler.DataRowLockedChanged = True
Next

看你写的代码估计你就是打开项目后加载所有的表了。

FT默认表全局事件里面大部分都是关闭的,为了性能提升。

你动态加载某模块并加载数据表,同时在加载时代码打开相应的表全局事件,这样比你用遍历批量打开事件有效的多,也容易控制。

 


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/4/27 11:25:00 [只看该作者]

刚好相反,我是打开项目时一个表都没有加载,全部都在外部表设置不加载了。只是在打开项目时打开全部全局事件代码的开关而已。因为我基本上都是用全局代码,不知道速度慢是不是这个原因。但现在也无法考量运行全局代码效率到底会差多少?但如果不用全局代码,不可能在每个表中都去重复的使用相同的代码吧。

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/4/27 11:39:00 [只看该作者]

以下是引用zpx_2012在2013-4-27 11:25:00的发言:
刚好相反,我是打开项目时一个表都没有加载,全部都在外部表设置不加载了。只是在打开项目时打开全部全局事件代码的开关而已。因为我基本上都是用全局代码,不知道速度慢是不是这个原因。但现在也无法考量运行全局代码效率到底会差多少?但如果不用全局代码,不可能在每个表中都去重复的使用相同的代码吧。

表没有加载如何设置开启?

你说的加载是没有加载数据吧,我们说的是表一开始就不存在,也就是说项目打开后只有一个表。表都是使用的时候动态从后台把表加载过来。


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


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/4/27 12:02:00 [只看该作者]

是的,我是没加载数据,但空表是加载了的,如果不加载空表要怎么设置啊,这个没弄过,那不是要把外部数据表中的表全部删除了。然后再用OuterTableBuilder动态加载进来?这样速度会快很多吗?

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