Foxtable(狐表)用户栏目专家坐堂 → [求助]合成表达式


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

主题:[求助]合成表达式

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/20 19:02:00 [显示全部帖子]

 你取到表达式的时候,实际上是字符串来处理的,不会得到 tables("xxx").current("xxx")具体的值。

 如果你要得到的话,可以动态编译一下,参考动态自定义函数。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/20 21:33:00 [显示全部帖子]

 你试试在命令窗口执行如下的代码。把字符串动态编译一下,可以直接执行字符串里的代码。

Dim Code As String
Code = "Dim str As string" & vbcrlf
Code = Code & "str = CurrentTable(0, 0)" & vbcrlf
Code = Code & "Return str"
Functions.Add("Sum",Code)
Functions.Complie()

Dim val As String = Functions.Execute("Sum")
msgbox(val)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/21 19:56:00 [显示全部帖子]

 执行下面的代码,可以达到效果。

Dim lie,biao,bds As String
lie = Tables("取数函数表").Current("增加列名称")
biao = Tables("取数函数表").Current("表名")
bds = Tables("取数函数表").Current("取数表达式")
Dim ld As String
Dim code As String = ""
code += "Dim ld as String" & vbcrlf
code += "Dim cmd As New SQLCommand" & vbcrlf
code += "cmd.CommandText = ""Select " & lie & " From {" & biao & "} Where " & bds & """" & vbcrlf
code += "return cmd.ExecuteScalar()"

Functions.Remove("execSql")
Functions.Add("execSql",Code)
Functions.Complie()

ld = Functions.Execute("execSql")
Output.SHOW(LD)

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/9/23 19:48:00 [显示全部帖子]

以下是引用kensou11111在2013-9-23 17:58:00的发言:

 

现在是可以得出正确结果了,但为什么在这里动态创建的自定义函数execSql可以得出正确的值,而使用事先定义好的函数时却和上上楼的代码一样的结果?


比如执行 i = 5 + 6 得到的结果是 11,必须执行代码,才能的到结果

而执行 "i = 5 + 6" 得到的只是一个字符串 "i = 5 + 6",你拼凑的紧紧是一个文本,不是代码。

 回到顶部