亿信ABI
当前版本:5.3.1

diminf函数

1.概述

diminf函数用于取维项的信息,如取维项的名称,维项的任一字段值,以及取维项所在级次等。

diminf函数多用于内存计算。报表中可以写表达式的地方都能使用diminf函数,如表元表达式中、过滤条件中、显示表达式中,行高列宽中,“显示”属性中等。

在公式定义向导的函数列表中有diminf函数的使用说明,可以查看。此文档我们会结合示例对diminf函数做详细讲解,以便大家更好的掌握此函数。

2.函数用法

格式:

diminf(C1,C2,C3)

参数:

第一个参数C1,

        是一个维表名,比如“人员维”。

第二个参数C2,

        是一个维项的id值。

        可以是一个常量,比如“1100002”;

        可以是一个返回值为维项id的表元,如B2;

        可以是一个返回值为维项id的参数,如@ry。

第三个参数C3,

        可以是维表C1的字段名,表示取维表C1中维项id值C2对应的字段值,比如diminf('人员维','1100002','DM_UPCODE0'),表示取 人员维中人员id为1100002的这条数据的公司id字段的值,返回的是'01000.8005217';

        可以是一些特殊的字符串,如$PREFIX、$ISLEAF、$LEVEL;

        也可以没有C3这个参数。

当第三个参数C3是特殊字符串时:

        C3为'$PREFIX'时,表示取C2此代码所在级次的前缀字符串,一般用在代码层级维中。比如代码层级维“行业代码”,分段信息为1-2-2,则diminf('行业代码','A0000','$PREFIX'),返回的是'A'。

        C3为'$ISLEAF'时,表示判断C2这个节点是否是叶子节点,返回值为T或F,T表示是,F表示否。比如diminf('人员维','1100002','$ISLEAF'),表示求节点1100002在维表人员维中是否是叶子节点,返回的是T。

        C3为'$LEVEL'时,表示求C2这个节点在维表C1中的级次,返回的是0、1、2、......这种数值,分别表示第一级、第二级、第三级、......。比如diminf('人员维','1100002','$LEVEL'),返回的是3。

当没有第三个参数C3时,取的是哪个字段?

        如果是通用维,则取的是C2节点对应的属性名称字段。

        以“人员维”为例,diminf('人员维','100') 等价于diminf('人员维','100','中心'),取的是属性“中心”对应的文字列名DM_UPNAME1字段。

diminf函数

        如果是代码层级维,则取的是C2节点的名称字段值。

        以“工作地点”维为例,diminf('工作地点','B0000') 等价于diminf('工作地点','B0000','DM_NAME'),表示取DM_NAME字段。

diminf函数

附:

维表“人员维”结构

diminf函数

维表“人员维”数据

diminf函数

维表“人员维”层级关系

diminf函数

3.示例

3.1示例1-在表元表达式中

        在之前章节浮动分析表制作中,我们制作了一张月度考勤表。

diminf函数

        现我们要在表格中“部门”这一列后面增加一列“部门经理”。这张分析表是从“个人周报”主题表取数,“个人周报”中没有部门经理字段,但有部门字段,关联了部门维。表格中部门这一列取的就是部门字段,其实际值就是部门id。而部门维中有字段存放的是部门经理id。

diminf函数

diminf函数

        因此,我们可以用diminf从维表中取出部门经理id值。部门经理这个表元的表达式为diminf('部门',D3,'BMJL')。

diminf函数

        计算后结果如下:

diminf函数

        显示的是人员id值。如果我们希望显示人员名称,则可以给这个表元增加一个显示表达式:diminf('人员维',E3)

diminf函数

        这样就能显示人员名称了。

diminf函数

3.2示例2-在过滤条件中

diminf函数

如上图,我们制作一了张中药材价格查询表,现在还需要配置一个维下拉参数,以便可以选择查询中药材的价格。但是现在主题表的中药材ID和维表设置的ID字段无法对应,而是和维表中的“ID2”字段对应,因此不能直接绑定维表。现在我们需要从中药材维表中获取“ID2”字段的值,来过滤数据。


34diminf函数1623diminf函数


        过滤条件可以写成是:IZYJG_B0.ID= "<#=diminf('中药材维表',@zyc,'ID2')#>"@zyc是“商品名称”维下拉参数。

diminf函数

   计算结果如下:

diminf函数

生成sql如下:

diminf函数

在过滤条件中使用diminf函数,如果通过diminf函数获取到的值不是纯数字时,如上述表达式获取维表中字段“NAME”的值,表达式为IZYJG_B0.ID=diminf('中药材维表',@zyc,'NAME')时,生成sql语句为IZYJG_B0.ID=藿香中等,此时sql是无法执行的,应将过滤条件改为IZYJG_B0.ID= "<#=diminf('中药材维表',@zyc,'NAME')#>",此时生成sql语句为IZYJG_B0.ID="藿香中等",sql就可以正常执行了。


附件列表

1

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

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

上一篇dim函数

下一篇if表达式

请先登录