Foxtable(狐表)用户栏目专家坐堂 → [求助]加载未加载表的问题


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

主题:[求助]加载未加载表的问题

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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
[求助]加载未加载表的问题  发帖心情 Post By:2019/9/18 21:50:00 [只看该作者]

1,定义两个public变量集合ALLTABLES,INTABLES,

2,在beforeLoadOuterTable那里,加入代码

 

ALLTABLES.add(e.datatablename)

'记录所有表

 

Select Case e.DataTableName
    Case  "首页","用户信息","公司信息" '表A和表B无条件加载
        Intables.add(e.datatablename)

      '记录已经加载的表


    Case Else '其他所有表默认都不加载
        e.Cancel = True
    End  Select

3,新建一个函数MYLOAD,代码如下

 

For Each inTable As String In inTables
    alltables.remove(Intable)
Next
Dim sql,str As String
For Each Name As String In alltables
    'MessageBox.show(name)
    sql+ = "|" & name

Next
sql = sql.Substring(1) 
str = """" & sql & """"
'MessageBox.show(str)
'If DataTables.Contains("第一个表的名称") = False Then
DataTables.Load(str)
'End If

 

4,在afteropenproject在最后一行写以下代码或者在第一个打开的窗口里AFTERLOAD里写以下代码

 

Functions.AsyncExecute("MYLOAD")

 

都无法加载未加载的表,请问一下是哪里错了。。。。要怎么修改。谢谢。

 


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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2019/9/19 8:30:00 [只看该作者]

求助。。。

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


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

先看看:http://www.foxtable.com/mobilehelp/topics/277.htm

datatable不能在异步函数中使用,也就是无法异步加载。既然无法异步加载,那么这种用法比默认全部加载更慢更麻烦

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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2019/9/19 16:24:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=123060&skin=0

我是看了上面那个链接上有点红老师说的才想这样用。他说,你可以写一个异步函数,偷偷慢慢的加载全部表进来

 

我1楼的代码,把Functions.AsyncExecute("MYLOAD")改成Functions.Execute("MYLOAD")也无法加载。


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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2019/9/19 16:26:00 [只看该作者]

而且我把函数里的代码直接放在afteropenproject最后一行也没用。。。用MessageBox.show(str)查看表名又都是正确的。

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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2019/9/19 16:33:00 [只看该作者]

主要是表太多了,加载真的很慢,一个个分开写加载表又太麻烦,所以就想异步偷偷的慢慢加载。这样又省事,又不至于影响使用。

凡是在主线程中创建的对象,例如Table、Datatable,窗口及窗口控件,菜单及菜单组件,都不应该在异步函数中调用。

我们可以在异步函数中生成临时的DataTable使用。

不能在异步函数中读写Var变量,不能读写设置等。 Public变量可以在异步函数中使用,但最好不要跨线程更新数据,否则很容易得到错误的结果。

如果异步函数要使用上述任何对象或数据,请另外定义一个函数来完成之,然后在异步函数中用同步方式调用此函数有关异步函数如何调用同步函数并传递参数,我们在上一节已经介绍了。


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


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

只是datatable不支持异步加载。如果表和数据多,那就先不加载。用到的时候再加载,比如动态加载,分页加载,按需加载。

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


加好友 发短信
等级:童狐 帖子:254 积分:2415 威望:0 精华:0 注册:2018/5/21 16:49:00
  发帖心情 Post By:2019/9/22 8:55:00 [只看该作者]

遇到一个动态加载表新问题,请教:

父表A和子表B建立了关联。

父表C和子表B建立关联。

两个关联的关联列是不同的列。

ABC三个表会在同一个窗口出现。

1.应该怎么动态加载表A.B.C?

 

If DataTables.Contains("A") = False Then
            DataTables.Load("A|B")
        End If

 

If DataTables.Contains("C") = False Then
            DataTables.Load("C")
        End If

 2.能否在加载表之前先取消关联?等加载好了再重新建立关联?

 


 

 

[此贴子已经被作者于2019/9/22 8:57:56编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/9/22 10:15:00 [只看该作者]

加载多个关联表:http://www.foxtable.com/webhelp/topics/2755.htm

卸载多个关联表:http://www.foxtable.com/webhelp/topics/2756.htm

 回到顶部