列表达式遵循的是SQL语法规则。不同类型的数据源,其SQL写法也有所不同。不按规则编写的表达式将无法通过并保存。
关于SQL语法规则稍后将详细给予说明,以下三点请务必特别注意:
在实际输入表达式时,可通过双击左侧列名的方式实现快速输入。如果当前数据源没有用到关联,则左侧仅显示当前表中的字段;否则还会同时列出关联表字段供选择。
仍以之前“关联表设置”中创建的2个关联为例,这两个关联都是用在“订单”数据源中的。假如将表格面板中的数据目标改为该数据源中的订单表,那么在编写列表达式的时候,左侧将出现当前表及其相关联的表字段:
如上图所示,表达式是由两个数据列并通过一个字符“:”拼接起来的。其中,第1个列“[订单].[产品ID]”是在当前表中双击“产品ID”得到的;第2个列“parent(po).[产品名称]”是在关联表“产品”中双击“产品名称”得到的。由于这里用到了跨表取值,为方便区分多表中可能存在的相同字段名称,在双击字段时会自动加上表名称及其中括号。
在当前表中双击时,表名称就是当前表格所指定的数据目标;在关联表中双击时,表名称以parent开头,同时加上对应的关联名称。如上图中的“parent(po)”,它的意思就是获取“po”关联中的父表名称,也就是“产品”表。
重要说明:当需要在表达式中跨表取值时,请务必通过左侧目录树节点双击输入字段名称,不要手工输入,以避免可能出现的手写错误。另外,当给这些字段使用运算符或函数时,务必将它们作为一个整体。例如,要去除上述两个拼接字段中左侧可能出现的空格,就可以这样写表达式:
ltrim([订单].[产品ID]) + ':' + ltrim(parent(po).[产品名称])