在AX中Enum是一种很常用的类型,用来标识表字段的可选值。如果要在SSRS报表中使用一个Enum类型的参数该怎么做呢?
假设SSRS报表的一个数据源CustomerTransactions使用AX的Query,Query里有个range名为TransType,它的EDT类型为LedgerTransType。在创建数据源CustomerTransactions的时候,其下parameters会自动创建名为transType的参数,整个报表的parameters下也会创建名为CustomerTransactions_TransType,我们要做的就是当参数CustomerTransactions_TransType呈现在报表上时可以从combox中选取到AX中LedgerTransType定义的各枚举值。
在报表中创建另一个Data set名为LedgerTransTypeEnum,注意选择Data source为Dynamics AX,Data source type为AX Enum Provider,这时候就可以从Query属性下选择到来自于AX的枚举类型LedgerTransType,数据集LedgerTransTypeEnum下会自动包含Name、Value和Label三个字段。
选择报表参数CustomerTransactions_TransType,在其属性Values点击...按钮,弹出的对话框中选择From dataset,而数据集就选取LedgerTransTypeEnum,Value field设为Value,Label field设为Label就可以了。
在运行报表的时候参数CustomerTransactions_TransType就可以从下拉框中选择到AX定义的枚举值了。