Cognos Value Prompt有个非常令人不爽的Bug.
当Value Prompt是multi-select,而query的use value又包含空字符串的情况下,譬如:
SELECT 'AAA' AS UseValue,'AAA' AS DisplayValue
UNION ALL
SELECT 'BBB' AS UseValue,'BBB' AS DisplayValue
UNION ALL
SELECT 'CCC' AS UseValue,'CCC' AS DisplayValue
UNION ALL
SELECT ' ' AS UseValue,'空格' AS DisplayValue
UNION ALL
SELECT '' AS UseValue,'空字符' AS DisplayValue --控件会把该句空字符串的选项给忽略
期待它生成的参数会是五个(AAA,BBB,CCC,空格,空字符串),然而实际的结果却只有四个,空字符串被系统排除了
解决思路一是从源头清洗数据,在做ETL的时候把所有空字符串都改为空格。缺点是工作量太大。
思路二是在报表端,每次用到Value Prompt的时候,添加如下一个static choices, use " "(空格),display “空”
不建议在底层Framework当中写判断逻辑,影响性能。