以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  in的动态合成表达式总提示出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52468)

--  作者:scott518
--  发布时间:2014/6/16 18:29:00
--  in的动态合成表达式总提示出错

如下代码:

 \'集合选择的单据编号加载数据
    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\')

 

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

谢谢!

 



--  作者:有点甜
--  发布时间:2014/6/16 19:07:00
--  

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

 

 具体问题,请上传例子


--  作者:scott518
--  发布时间:2014/6/16 19:24:00
--  

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

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

--  作者:有点甜
--  发布时间:2014/6/16 19:27:00
--  

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

 


--  作者:scott518
--  发布时间: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加载?

谢谢!

 



--  作者:有点甜
--  发布时间:2014/6/16 21:28:00
--  

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


--  作者:scott518
--  发布时间:2014/6/16 21:40:00
--  
谢谢了!我的窗口全部都是sqlTable动态加载的,怪不得弄了很久总找不到原因,原来是这种表只能用sqlload,一直不知道这个。
--  作者:ztmdnzc
--  发布时间:2014/6/17 18:52:00
--  
窗口表不能用DataTables(Mtb & "_主表") ,要用DataTables(窗口名称 & "_table1") 
--  作者:jspta
--  发布时间:2014/6/17 20:57:00
--  
以下是引用scott518在2014-6-16 21:40:00的发言:
谢谢了!我的窗口全部都是sqlTable动态加载的,怪不得弄了很久总找不到原因,原来是这种表只能用sqlload,一直不知道这个。
这个不是不能用load。可能是原来的SQLLOAD语句太复杂,foxtable分解的时候出现错误了。建议这种复杂的语句直接写在数据库中生成视图,这样调用视图就可以了,就不用写复杂的SQL语句了


--  作者:scott518
--  发布时间:2014/6/17 21:09:00
--  
谢谢,明白了,原来的sql语句确实比较复杂,而且是写在函数里面的,知道了原因,改用sqlolad也很方便。