Foxtable(狐表)用户栏目专家坐堂 → [求助]过滤的 动态表达式


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

主题:[求助]过滤的 动态表达式

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


加好友 发短信
等级:幼狐 帖子:76 积分:839 威望:0 精华:0 注册:2015/12/4 20:10:00
[求助]过滤的 动态表达式  发帖心情 Post By:2020/8/21 17:00:00 [只看该作者]

帮助文件有代码:

Tables("订单").Filter = "[产品] = 'PD01'"  '字符用单引号括起来

请问,如何用 列变量或者字符变量 替换 上面的 字符常量'PD01'?这样可以实现动态过滤吗?
[此贴子已经被作者于2020/8/21 17:00:49编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110528 积分:562524 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/21 17:06:00 [只看该作者]

例如要计算某个产品的销售数量,要计算的产品名称由用户输入,假定输入的结果保存在全局变量Vars("产品")中:

Dim Sum As Integer
Sum =  
DataTables("订单").Compute("Sum(数量)", "[产品] = '" & Vars("产品") & "'")

Compute的第二个参数为计算条件表达式,该表达式分为三部分:

"[产品] = '" & Vars("产品") & "'"

假定全局变量Vars("产品")的值为PD01, 组合三部分的内容后,这个表达式就等效于:

"[产品] = 'PD01'"

假定表A和表B都有品名、型号两列,我们在表A中选择了一行,希望从表B中找出相同品名、规格的行:

Dim dr1 As DataRow = Tables("A").Current.DataRow
Dim 
dr2 As DataRow
dr2 = 
DataTables("表B").Find("[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'")

上面代码的最后一行,初看非常难以理解。
为便于理解,我们首先来看看正常的查找表达式:

"[品名] = '要找品名' And [规格] = '要找的规格'"

其中红色的部分要被dr1中的实际的品名和规格代替,所以最终的表达式成了:

"[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'"


 回到顶部