动态合成表达式
不少初次接触编程的用户,对于何时使用双引号,何时使用单引号,感到非常困惑。
其实很简单,代码中的字符串都是用双引号括起来的。
例如:
Dim s As String
s = "abcd"
而单引号主要用于表达式,表达式可以用于计算、筛选。
表达式本身是一个字符串,所以必须用双引号括起来;表达式内部的字符串,用单引号括起来。
例如:
CurrentTable.Filter = "[产品] = 'PD01'"
上面的代码意思是在当前表中筛选出产品为PD01的行,筛选表达式本身是一个字符串,所以用双引号括起来,表达式中的PD01也是一个字符串,是表达式的一个内部字符串,所以用单引号括起来。
表达式中的日期继续用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。
例如:
CurrentTable.Filter = "[产品] = 'PD01' And [日期] = #3/17/1999# And [折扣] =
0"
通过表达式列的Expression属性,可以动态设置其计算公式
例如:
DataTables("表A").DataCols("ID").Expression = "'CA' + [_Identify]"
实际编程的时候,经常要根据用户的输入,动态合成表达式。
例如:
例如要计算某个产品的销售数量,要计算的产品名称由用户输入,假定输入的结果保存在全局变量Vars("产品")中:
Dim Sum As Integer
Sum =
DataTables("订单").Compute("Sum(数量)", "[产品] = '" &
Vars("产品") & "'")
Compute的第二个参数为计算条件表达式,该表达式分为三部分:
"[产品] =
'" & Vars("产品") &
"'"
假定全局变量Vars("产品")的值为PD01,组合三部分的内容后,这个表达式就等效于:
"[产品] = 'PD01'"
...