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


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

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

帅哥哟,离线,有人找我吗?
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
图片点击可在新窗口打开查看

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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")具体的值。

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



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


 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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个列的取数参数得出正确的取数表达式,好像还是做不到啊


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 15:14:00 [显示全部帖子]

以下是引用逛逛在2013-9-21 7:46:00的发言:

 

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

 

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

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

目前我已经是按照这个想法分出3列了,但这里的条件列里面的字符串,我怎么都设置不好。

也许我对动态函数的理解还不够深吧,目前还是没有解决这个问题。


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 15:24:00 [显示全部帖子]

以下是引用程兴刚在2013-9-21 1:15:00的发言:
哦,您要这样执行是不可以的,储存在表里面的数据不能使变量!

其实我的想法是预先在一个表里设置好加载的条件,在加载某个表时可以根据这些条件来动态加载某些数据(如产品名称、规格、颜色等),但又不需要在这个表中额外增加这些列的数据。


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 15:40:00 [显示全部帖子]

以下是引用逛逛在2013-9-21 15:26:00的发言:

你想的太复杂了,不用动态函数,直接把表分成三列,条件字段名,查找表名,条件值的取值列名

我现在也是这么干的,现在查找表名,取值列名都没问题,问题是条件列那里出问题了,我在这里设置了产品编号 = '" & tables("订单").current("产品编号") & "'但系统识别不出tables("订单").current("产品编号") 代表的值'AAA'


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 17:04:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.table

为了测试方便,我已经将其转换为内部数据源 

 


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


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

图片点击可在新窗口打开查看此主题相关图片如下:qq截图2013092117105733.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-9-21 17:12:04编辑过]

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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/21 17:16:00 [显示全部帖子]

执行如下代码

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.CommandText = "Select " & lie & " From {" & biao & "} Where " & bds

        ld = cmd.ExecuteScalar()

Output.SHOW(LD)

 

取数函数表的当前行为第一行时,输出结果为空;当前行为第二行时,输出正确的结果HB


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


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2013/9/23 17:58:00 [显示全部帖子]

以下是引用有点甜在2013-9-21 19:56:00的发言:
 执行下面的代码,可以达到效果。

 

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


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