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


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

主题:加载树报错

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


加好友 发短信
等级:幼狐 帖子:95 积分:979 威望: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


加好友 发短信
等级:幼狐 帖子:95 积分:979 威望: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]")

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

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


加好友 发短信
等级:幼狐 帖子:95 积分:979 威望: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编辑过]

 回到顶部