Foxtable(狐表)用户栏目专家坐堂 → in的动态合成表达式总提示出错


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

主题:in的动态合成表达式总提示出错

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
in的动态合成表达式总提示出错  发帖心情 Post By:2014/6/16 18:29:00 [只看该作者]

如下代码:

 '集合选择的单据编号加载数据
    Dim ids As String
    For Each r As Row In tbl.Rows
        If r("选择") = True Then
            ids = ids & ",'" & r(Vars("Idc")) & "'"
        End If
    Next
    ids= ids.Trim(",")
    msgbox(Vars("Idc") & " In (" & ids & ")")
    DataTables(Mtb & "_主表").LoadFilter = Vars("Idc") & " In (" & ids & ")"
    DataTables(Mtb & "_主表").Load()

 

msgbox显示出来是:

订单编号 In ('D1404-027','D1404-028','D1404-029')

 

请教是哪里错了,为何总提示 ')' 附近有语法错误。

谢谢!

 



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


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

 代码没有错。这个表是窗口表?是查询表?

 

 具体问题,请上传例子


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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/16 19:24:00 [只看该作者]

因关联到的表太多都是动态加载的表,所以一时半会做不出例子来。

[此贴子已经被作者于2014-6-16 21:40:53编辑过]

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


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

 做个例子发上来,代码看着没有错。

 


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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/16 21:26:00 [只看该作者]

做了一个晚上,还是没办法让问题重现,后来将语句改为

    Dim ids As String
    For Each r As Row In tbl.Rows
        If r("选择") = True Then
            ids = ids & ",'" & r(Vars("Idc")) & "'"
        End If
    Next
    ids= ids.Trim(",")
    Dim sql As String = "Select * from " Mtb " &  where " & Vars("Idc") & " In (" & ids & ")"
    DataTables(Mtb & "_主表").SQLLoad(sql)

 

后面两名改为sqlload的形式就可以了,因为原来的主表也是用sqlLoad加载的,

就此想请问一下,是不是原来是用SQLLoad加载的表,后续重新加载时也必须用SQLLoad加载?

谢谢!

 



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


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

只有数据表、主表可以用 loadFilter 和 Load,你的这个应该是窗口表sqlTable吧?可能不能直接load的


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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/16 21:40:00 [只看该作者]

谢谢了!我的窗口全部都是sqlTable动态加载的,怪不得弄了很久总找不到原因,原来是这种表只能用sqlload,一直不知道这个。

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


加好友 发短信
等级:二尾狐 帖子:501 积分:4167 威望:0 精华:0 注册:2013/1/18 13:34:00
  发帖心情 Post By:2014/6/17 18:52:00 [只看该作者]

窗口表不能用DataTables(Mtb & "_主表") ,要用DataTables(窗口名称 & "_table1") 

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


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

以下是引用scott518在2014-6-16 21:40:00的发言:
谢谢了!我的窗口全部都是sqlTable动态加载的,怪不得弄了很久总找不到原因,原来是这种表只能用sqlload,一直不知道这个。
这个不是不能用load。可能是原来的SQLLOAD语句太复杂,foxtable分解的时候出现错误了。建议这种复杂的语句直接写在数据库中生成视图,这样调用视图就可以了,就不用写复杂的SQL语句了


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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/6/17 21:09:00 [只看该作者]

谢谢,明白了,原来的sql语句确实比较复杂,而且是写在函数里面的,知道了原因,改用sqlolad也很方便。

 回到顶部