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


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

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

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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
[求助]合成表达式  发帖心情 Post By:2013/9/20 17:18:00 [只看该作者]

我希望能通过下面的代码,将“取数函数表”中的3列字符串合成一个表达式,然后取出“产品”表中的某个值

Dim lie,biao,bds As String

        lie = Tables("取数函数表").Current("增加列名称")

        biao = Tables("取数函数表").Current("表名")

        bds = Tables("取数函数表").Current("取数表达式")

        Dim ld As String

        Dim cmd As New SQLCommand

        cmd.C

        cmd.CommandText = "Select " & lie & " From {" & biao & "} Where " & bds

        ld = cmd.ExecuteScalar()

Output.SHOW(LD)

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130920171257.png
图片点击可在新窗口打开查看

 

但红框中的取数表达式该如何写?现在这个写法无法得出正确的值,但系统也不报错


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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/9/20 18:58:00 [只看该作者]

你把合成语句输出一下,就知道为什么了,

 

还有,注意变量的大小写,这样看语句方便。

[此贴子已经被作者于2013-9-20 19:21:16编辑过]

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


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

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

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


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/20 21:23:00 [只看该作者]

以下是引用有点甜在2013-9-20 19:02:00的发言:
 你取到表达式的时候,实际上是字符串来处理的,不会得到 tables("xxx").current("xxx")具体的值。

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



看了,但还是不太明白要如何解决这个问题?能简单解释一下吗?


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/9/20 21:26:00 [只看该作者]

两端都缺一个双引号 "

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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)

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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/20 23:53:00 [只看该作者]

以下是引用程兴刚在2013-9-20 21:26:00的发言:
两端都缺一个双引号 "
这个我试过了,不行,出现如下错误提示

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20130920235358.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-9-20 23:54:25编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/9/21 1:15:00 [只看该作者]

哦,您要这样执行是不可以的,储存在表里面的数据不能使变量!

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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/9/21 7:46:00 [只看该作者]

 

有点甜让你用的的动态函数,你用错了。

 

你还是把它分成三列算了,如:条件列、查询表、查询字段。再用我们最熟悉的合成来做。

[此贴子已经被作者于2013-9-21 7:49:53编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 15:12:00 [只看该作者]

以下是引用有点甜在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)
 
还是不太懂该如何解决这个问题,你这个例子确实可以得出CurrentTable(0, 0)里的值,但这里的(0,0)的坐标是我们人通过分析预设在列“取数表达式”中的tables("xxx").current("xxx")得出来的。
要实现通过预设在3个列的取数参数得出正确的取数表达式,好像还是做不到啊


 回到顶部
总数 20 1 2 下一页