以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]条件存在数据库中,如何取出来  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135292)

--  作者:chnfo
--  发布时间:2019/5/22 21:06:00
--  [求助]条件存在数据库中,如何取出来
假如将某一个业务条件例如  cr("Type") = 1 orelse cr("V") > 1000 作为字符串存在表中.-----比如存在datatables("X").datarows(0)("XFil")

当要引用这个条件的时候,如何把它转换成为 if  cr("Type") = 1 orelse cr("V") > 1000 then ?

--  作者:有点甜
--  发布时间:2019/5/22 21:09:00
--  

动态编译

 

http://www.foxtable.com/webhelp/scr/1487.htm

 


--  作者:chnfo
--  发布时间:2019/5/22 21:45:00
--  
在命令窗口执行以下代码:
Dim cr As Row = Tables("Mod").rows(0)
Dim r As Row = Tables("Branch").rows(2)

Dim xyz As String = r("BranchFil")    ‘比如这个单元格里的条件是:cr("Type") = 1

xyz =  "Return " & xyz
Functions.Add("YYY",xyz)
Functions.Complie()


If Functions.Execute("YYY") Then  \'
    Output.Show("YES")
Else
    Output.Show("NO")
End If

Functions.Remove("YYY")

执行出错:
编译错误:未声明名“cr”。
错误代码:dim x as string = cr("Type") = 3
[此贴子已经被作者于2019/5/22 22:41:52编辑过]

--  作者:y2287958
--  发布时间:2019/5/23 9:18:00
--  
dim x as string = cr("Type") = 3”在哪里?
--  作者:chnfo
--  发布时间:2019/5/23 10:05:00
--  
Cr(“type”) = 3,这是存在数据库的表中的条件列,还有一列是存结果的,例如4 Cr(“type”) =2,它的结果是5 Cr就是某个表的选中行,是个参数
--  作者:chnfo
--  发布时间:2019/5/23 10:17:00
--  
我只是想把数据库表中存的某个格子里存的条件字符串如cr(type”)=1 orelse cr(“v”)> 200取出来,放到if 中去执行判段
--  作者:chnfo
--  发布时间:2019/5/23 10:21:00
--  
也就是说,从数据库中取出字符串类型的数据,解析转化为if语句中的判断条件,用eval好像不行
[此贴子已经被作者于2019/5/23 10:42:28编辑过]

--  作者:有点蓝
--  发布时间:2019/5/23 11:37:00
--  
要生成完整的代码,才能使用动态编译,而不是其中一段代码
--  作者:有点甜
--  发布时间:2019/5/23 15:14:00
--  

 

你要把所需的 cr  变量传到函数里面才行的。

 

也就是相当于你自己弄一个内部函数,所需的变量,都要传进去。