MAP函数返回值问题-BUG?

MAP(F6,"ds2",18,17),当ds2数据集中没有匹配的数据时,返回的是F6的值,而不是0值。按理应该是返回0值才正确,这是不是BUG?

软件用的是8.0版

如下图是设计时公式:

image.png

查询结果:

image.png


FineReport zhurizeng 发布于 2019-3-22 13:13 (编辑于 2019-3-22 13:16)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
zhurizengLv4见习互助
发布于2019-3-23 17:21

1、MAP(F6,"ds2",18,17)  改成 MAP("F6","ds2",18,17) ,当没有匹配到数据时,返回F6

2、试过用IF判断是否MAP返回'F6',但不成功。最后改成SUM(MAP("F6","ds2",18,17)),没有匹配到数据时,返回0,暂且这样能用了。

谢谢前面两位。

最佳回答
0
PoseidonLv5高级互助
发布于2019-3-22 13:31

F6加对引号试试

最佳回答
0
吾姓独孤Lv6高级互助
发布于2019-3-22 13:31

http://bbs.fanruan.com/wenda/question1/73188.html

这个问题和你的一样,他是在中间加个条件判断,你的有点小麻烦,好像要判断那个单元格的数据是否存在数据表的那一列中

最佳回答
0
18381307124Lv3见习互助
发布于2019-4-30 15:21(编辑于 2019-4-30 15:23)

踩坑记录:

1、MAP(matchValue, dsName, matchCol, returnCol)函数如果没有没有匹配到数据时(即:在数据集dsName中的matchCol列没有找到matchValue值的一行数据)此时,函数将会原样返回matchValue;如果匹配到了,则返回returnCol列的数据,解决方案参见第3条。

2、如果matchValue是公式的值,比如B3,不要加双引号,直接用B3。

3、因为如果没有匹配到数据,MAP函数会返回matchValue,所以:如果matchValue是字符串,那么可以在数据集中添加一列数字列:假设值为1,比如select a,b, 1 AS NUM from table; 然后在最外层使用SUM()函数,将返回列指定为NUM,这样一来,如果能匹配到数据,那么,此时SUM(MAP(matchValue, dsName, matchCol, "NUM"))肯定大于0,如果没能匹配到数据,那么返回的就是matchValue,而matchValue是字符串,sum之后=0。

此方法可以用于填报,判断输入内容是否合法等。

  • 3关注人数
  • 1176浏览人数
  • 最后回答于:2019-4-30 15:23
    请选择关闭问题的原因
    确定 取消
    返回顶部