TC & Task_Cell跨任务取数

一、概述

1.1 函数说明

TC和Task_Cell公式,俗称"跨任务取数公式",主要功能是取到某个表元的值。这两个公式可以,跨任务、跨期、在不同的报表户之间取数,还可以取到变长表中数据行、合计行表元的数据;这些特点都是形如"XXB->C3"这样的公式所做不到的。

1.2 前置假设

自本节以下,所有的示例全部基于本假设。

  1. 本任务,B1表为基本表。
  2. 本任务,B2表为变长表,有代码表元B5,和自定义关键字A5、C5。
  1. 存在关系任务YB。
  2. YB任务,B1表为基本表
  3. YB任务,B2表为变长表,有代码表元B5,和自定义关键字A5、C5。

二、TC

2.1 函数声明

TC(OutCell, BBQ, ID)

参数

参数类型

意义

OutCell

String

由任务别名、报表名、表元名3部分合成,表示取某任务下的某个报表的某表元。

BBQ

String

报表期字符串,表示要取哪一期的数据。

ID

String

报表户代码,表示要取哪一户的数据。

2.2 参数详解

2.2.1 OutCell

该参数是一个字符串,被西文符号":"分隔成三个部分,分别表示:"关系任务名"、"报表代号"、"表元名"。如:"YB:B1:C5",表示取关系任务YB的B1->C5的值。

2.2.1.1 关系任务名

书写方式

意义

示例

示例含义

注意事项

在本任务取数

":B1:C5"

取本任务的B1->C5的值

第一个":"不能省略

关系任务名

从关系任务名所标识的任务取数

"YB:B1:C5"

取关系任务YB的B1->C5的值

关系任务可以在运行系统或设计系统的"关联任务"菜单中定义

2.2.1.2 报表代号

报表类型

书写方式

意义

示例

示例含义

基本表

表名 

取基本表某表元的值

"YB:B1:C5"

取关系任务YB的B1->C5的值

变长表

表名 

直接取变长表的第一行,取不到则返回空,取的到则返回该行的表元值

"YB:B2:C5"

取关系任务YB的B2表第一行C5的值

变长表

HJH@表名

取变长表合计行中表元的值

"YB:HJH@B2:C5"

取YB任务B2合计行C列的数据

变长表

key1|key2|key3@表名

一个或多个关键字,由西文"|"符号分隔,对应变长表的各个关键字。
公式会首先找到满足关键字的行,若是有多行满足关键字,则取第一行,然后取该行的表元值。
无满足关键字的行,则返回空。

"YB:1001|201@B2:C5"

取YB任务B2表中
B5为1001,A5为201的数据行的C5表元

注意

  1. 当取合计行数据的时候,表元名称依然要正确书写,也不能不写。
  2. 代码表元也算做关键字,代码表元是排在自定义关键字前面的。如:B2表有代码表元B5,和自定义关键字A5、C5,关键字的顺序为B5|A5|C5。

2.2.1.3 表元名

  1. 报表不为变长表,则直接写报表内的数据表元的表元名。
  2. 报表为变长表,则只能写变长区表元的表元名。合计行不属于变长区,要取合计行请参看上节。

2.2.2 ID

  1. 取当前户,ID直接为空串。
  2. 取指定户,ID书写为指定户的报表户代码。

2.2.3 BBQ

书写方式

意义

示例

示例意义

空串

取当前期

TC(":B1:C5","","")

取本任务,当前期,当前户

报表期

取固定期

TC(":B1:C5","200908--","") 

取2009年8月的数据

@-X

固定取前期,即,取当前期的前X期

TC(":B1:C5","@-3","") 

取当前期的前三期
如果,没有符合要求的报表期、存在所要求的期但是没有要求的户,则函数返回空

pre

以当前期为起点,向前寻找最近的存在的报表期

TC(":B1:C5","pre","") 

假设,起点为"200908--",没有"200907--",存在"200906--"
则函数会从"200906--"取数

pre*

在pre的基础上,若变长表无法取到行,或者基本表的目的表元值为空,则继续递归取上期,直到能取到值为止

TC(":B1:C5","pre*","")

(在服务器上暂不支持此写法,在单机版上pre*与pre基本一致)

2.3 注意事项

  1. TC公式只能取数字类型表元的值。

TC函数返回值为浮点型,这意味着一个表元一旦定义了TC公式,表元类型会自动修改为浮点型,因此TC只能取整型和浮点型表元的值(如取整型表元值,会转换为整数的浮点型数形式),要取其他类型表元的值,参照下面的Task_Cell函数。 

2.4 常用例子

示例

说明

TC(":B1:C5","","")

取当前任务,当前期,当前户,B1->C5;等同于公式"B1->C5"

TC("YB:B1:C5","","")

取关系任务任务,当前期,当前户,B1->C5

三、Task_Cell

函数声明

  Task_Cell(任务别名,RpfName,BBQ ,UserID,FieldName)

参数详解

  任务别名是定义的关联任务中的别名,本任务用空串""替代。

  RpfName是报表名称,如果是变长表,需要在报表名前面带上关键字或代码表元的值或表元名,再以"@"隔开。

  BBQ为要取数的报表期,当前报表器用空串""替代。

  UserID为要取数的报表户,当前报表户用空串""替代。

  FieldName为要取数的那张报表的表元名,一般非空,用双引号引起来。

说明

      Task_Cell是TC的前身,很多用法都是类似的。

例子

Task_Cell("",  "1001@B0", "", "", B2) 表示取的是变长表B0中关键字值为1001的那行数据中B2表元的值。

Task_Cell("", A2^"@B0", "", "", "B2") 表示取的是变长表B0中关键字等于本表A2表元的值的那行变长表数据中B2表元的值。

四、其他说明(为什么有时TC取不到数?)

(1)服务器上,任务有属性"允许其它任务用TC函数取本任务数据",控制当前报表的数据是否可以被其他任务使用Task_Cell或者TC取到(是个充分条件),如果勾选此选项,其他任务可以使用TC或Task_Cell取到当前任务的数据,如果没有勾选此选项,但登陆用户有访问到TC或Task_Cell对应的关联任务的权限时,也可以使用TC或Task_Cell取到值,否则不能。即:

a)勾选"允许其他任务用TC函数取本任务数据"->可以用TC或Task_Cell取值。

b)不勾选"允许其他任务用TC函数取本任务数据"但登陆用户有访问关联任务权限时->可以用TC或Task_Cell取值。

当a)和b)都不满足时,不能用TC或Task_Cell取值。

(2)跨任务取数时,两个任务要有相同的单位代码长度(在设计系统的"默认值"->"单位代码长度"中设置),否则取不到其他任务的数据。

附件列表

4

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇15或18位身份证号码增强校验

下一篇角标应用

请先登录