Foxtable(狐表)用户栏目专家坐堂 → 项目打开加载与窗口加载冲突,如何解决?


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

主题:项目打开加载与窗口加载冲突,如何解决?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
项目打开加载与窗口加载冲突,如何解决?  发帖心情 Post By:2022/5/30 10:34:00 [只看该作者]

项目打开加载

Select Case e.DataTableName
    Case "Users", "表A" 
   Case Else 
        e.Cancel = True
End Select
上面代码执行,系统只有"Users", "表A" ,好象是正常,但业务窗口就不正常

业务窗口-窗口打开后事件,
订单主表和订单明细是关联表

Dim Filter As String
Filter = " 制单人='" & _UserName & "'  And 审核 Is null"
DataTables("订单主表").LoadFilter = Filter '
DataTables("订单主表").Load()
代码执行,提示找不到“订单主表”,关联订单明细也不显示,要如何解决?


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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/30 11:45:00 [只看该作者]

窗口打开前,需要先加载表:http://www.foxtable.com/webhelp/topics/2755.htm

注意加载表和加载表数据是2个不同的概念。1楼的用法是加载表数据

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/30 12:27:00 [只看该作者]

项目打开加载

Select Case e.DataTableName
    Case "Users", "表A" 
   Case Else 
        e.Cancel = True
End Select


窗口上显示,订单主表和订单明细

用下代码,只显“订单主表”不显示明细关联表

If DataTables.
Contains("订单主表") = False Then
    DataTables.
Load("订单主表|订单明细")
End If

改下面,也是一样无效
If DataTables.Contains("订单主表") = False Then
    DataTables.
Load("订单主表|订单主表.订单明细")
End If

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/30 14:02:00 [只看该作者]

如果窗口使用了这些表,必须在窗口打开前加载,不能在窗口afterload加载。另外和下面2个表有直接间接关联的所有表都要一起加载

If DataTables.Contains("订单主表") = False Then
    DataTables.
Load("订单主表|订单明细")
End If
forms("xx窗口").open

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/5/30 14:41:00 [只看该作者]

问题一:执行下面代码,只加载"Users"表,不加载"表A",数据库有"表A"表存在,这是什么问题?
项目打开加载

Select Case e.DataTableName
    Case "Users", "表A" 
   Case Else 
        e.Cancel = True
End Select


问题二:窗口事件没有窗口打开前事件,只有项目打开事件,那是不是只放在这里?
If DataTables.Contains("订单主表") = False Then
    DataTables.
Load("订单主表|订单明细")
End If
forms("xx窗口").open


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


加好友 发短信
等级:狐精 帖子:3209 积分:21331 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2022/5/30 14:52:00 [只看该作者]

问题一,代码写在BeforeLoadInnerTable(内部表)或BeforeLoadOuterTable(外部表)事件,意思只加载"Users", "表A"   这两个表,其他表都不加载,写法没问题

Select Case e.DataTableName
    Case "Users", "表A"  
   Case Else 
        e.Cancel = True
End Select
问题二:意思是在使用到那个表是先加载那个表,应该写到按钮中或是菜单的中,不是写到打开的项目事件中

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/30 15:21:00 [只看该作者]

一、这个代码的意思是除了"Users", "表A" ,其它表都不加载,并非不加载表A

二、窗口不要设置为自动打开,如果需要打开项目后就打开,代码放到AfterOpenProject事件

 回到顶部