Foxtable(狐表)用户栏目专家坐堂 → 加载树报错


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

主题:加载树报错

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


加好友 发短信
等级:幼狐 帖子:95 积分:985 威望:0 精华:0 注册:2011/12/25 13:10:00
加载树报错  发帖心情 Post By:2018/11/14 0:54:00 [只看该作者]

在合同表的after_load中的代码
If args(0)="合同表" Then
    With DataTables("合同表")
        '重载关联子表
        .loadchildren("合同明细表")
        .loadchildren("应收日期")
    End With
    '重载关联多列关联表
    With DataTables("合同明细表")
        .loadchildren("订单明细表","fcontractid]+[fentryid","[fcontractinterid]+[fcontractentryid]")
        .loadchildren("收款明细表","fcontractid]+[fentryid","[fid_src]+[fentryid_src]")
    End With
    '重载关联父表
'    DataTables("收款明细表").loadchildren("收款表","fbillid","fbillid")
End If

每次打开项目后,第一次点击加载树里的任何节点的,都能正常显示。但是再点击任意节点时,就会报错:
错误所在事件:加载[收款明细表]失败!
详细错误信息:
')' 附近有语法错误。

之前合同表、合同明细表等表都是数据库里的表的时候是正常的,把这些表改为查询表以后,就报这个错了。
[此贴子已经被作者于2018/11/14 8:19:55编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/14 9:38:00 [只看该作者]

1、查询表应该不支持使用 loadchildren,请改回数据表

 

2、你把下面的代码,改成1列,看是否还报错

 

        .loadchildren("订单明细表","fcontractid]+[fentryid","[fcontractinterid]+[fcontractentryid]")
        .loadchildren("收款明细表","fcontractid]+[fentryid","[fid_src]+[fentryid_src]")

 

3、你多列关联的情况,你两列都必须是【字符串列】才行的,不能一列字符串、一列数值

 

 


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


加好友 发短信
等级:幼狐 帖子:95 积分:985 威望:0 精华:0 注册:2011/12/25 13:10:00
  发帖心情 Post By:2018/11/14 10:20:00 [只看该作者]

查询表是可以执行loadchildren的,项目打开的时候,第一次点加载树的节点,加载的各项子表都是正常的。

并且下面语句执行是正常的,无论加载树怎么操作都不会出错。
     .loadchildren("订单明细表","fcontractid]+[fentryid","[fcontractinterid]+[fcontractentryid]")

只有下面这句第二次点加载树节点的时候报错
        .loadchildren("收款明细表","fcontractid]+[fentryid","[fid_src]+[fentryid_src]")

所有的关联字段都是整数型的

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/14 10:22:00 [只看该作者]

那就是你收款明细表的问题。

 

1、贴出所写的sql语句;

 

2、复杂的查询表,是不支持loadchildren加载以及loadfilter、load的。


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


加好友 发短信
等级:幼狐 帖子:95 积分:985 威望:0 精华:0 注册:2011/12/25 13:10:00
  发帖心情 Post By:2018/11/18 13:00:00 [只看该作者]

研究了一下报错的原因,发现和查询表写的SQL语句有关系

主表和子表都是查询表的情况下

如果主表查询的SQL用了类似inner join这样的多表连接,那么子表也必须是inner join之类的多表连接。如果主表是多表连接,子表用的selece * from
xxx这样的单表查询,就会出现loadchildren报错的情况。如果主子表都是单表查询,也是可行的,不会报错。

这个加载子表能改进一下吗?

另外子表查询selec t a.fid_src from a inner join b on a.fitemid=b.fitemid,主表和子表的关联字段是fid_src,如果子表查询a表和b表里都有fid_src字段,调用loadchildren时会提示  列名 'fid_src' 不明确。实际子表查询的结果只selecet a.fid_src,并没有显示两个fid_src。
[此贴子已经被作者于2018/11/18 13:09:01编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/18 23:35:00 [只看该作者]

回复5楼,如果提示【不明确】,那么你写列名的时候,要指定 a.fid_src

 

复杂查询表不支持你这样用的,没办法。如果你确实需要加载,你可以用sqlload或者fill等写sql语句实现加载。


 回到顶部