我有三个字段,同时用province这个参数,且都是or的关系,怎么修改

我是想要 不写参数默认全部,如果传参 ,3个字段某一个字段等于参数,做参数控制

${if((len(province) = 0||province=='中国')," order by 字段 desc","and 字段='"+province+"'")} 

image.png

FineReport 魏先生和魏 发布于 2022-2-8 15:11 (编辑于 2022-2-8 15:53)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
Z4u3z1Lv6专家互助
发布于2022-2-8 15:13(编辑于 2022-2-8 15:15)

你想要达到什么目的?

你现在写的大概意思是当 province为空或者中国的时候就按字段降序,反之字段等于province。加个括号

${if((len(province) = 0||province=='中国')," order by 字段 desc","and 字段='"+province+"'")} 

  • 魏先生和魏 魏先生和魏(提问者) 我是想要 不写参数默认全部,如果传参 ,3个字段某一个字段等于参数,做参数控制
    2022-02-08 15:21 
  • Z4u3z1 Z4u3z1 回复 魏先生和魏(提问者) where 1=1 ${if(len(province) = =0,\" \",\"and (字段1=\'\"+province+\"\' or 字段2=\'\"+province+\"\' or 字段3=\'\"+province+\"\'\")}
    2022-02-08 15:29 
  • 魏先生和魏 魏先生和魏(提问者) 回复 Z4u3z1 我也是这么想的,但是不会写,你写怎么传参
    2022-02-08 15:49 
  • Z4u3z1 Z4u3z1 回复 魏先生和魏(提问者) province 就是你的参数名称啊。控件名称和它一致就行了
    2022-02-08 15:50 
  • 魏先生和魏 魏先生和魏(提问者) 回复 Z4u3z1 你看一下上边的图,我直接复制过去的,下边没有用到参数
    2022-02-08 15:54 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-8 15:14(编辑于 2022-2-8 16:00)

没有看懂你到底要做什么。。。你说的三个字段。。。是什么意思

where 1=1 

${if(len(province)=0,"","and (FSTATE='"+province+"' or FCITY='"+province+"' or FDISTRICT='"+province+"')")}

参考这里就行了。

SQL语句实现下拉框参数联动- FineReport帮助文档 - 全面的报表使用教程和学习资料 (fanruan.com)

  • 魏先生和魏 魏先生和魏(提问者) 我是想要 不写参数默认全部,如果传参 ,3个字段某一个字段等于参数,做参数控制
    2022-02-08 15:27 
  • CD20160914 CD20160914 回复 魏先生和魏(提问者) 你说的三个字段。。是哪三个字段呢?三个字段都等于一个参数?不对吧。
    2022-02-08 15:28 
  • CD20160914 CD20160914 回复 魏先生和魏(提问者) province如果不录入参数。那么你最终要哪三个字段等于什么?假如province录入参数。你又想哪三个字段等于什么?
    2022-02-08 15:29 
  • 魏先生和魏 魏先生和魏(提问者) 回复 CD20160914 比如省,市,县三个字段,都用一个参数,如果参数 传山东省 那就显示所以山东省的数据,如果传济南市,那就显示所有济南市的数据
    2022-02-08 15:32 
  • CD20160914 CD20160914 回复 魏先生和魏(提问者) 看上面修改的sql。。。
    2022-02-08 15:35 
最佳回答
0
snrtuemcLv8专家互助
发布于2022-2-8 15:18(编辑于 2022-2-8 15:37)

正常你的是可以的,不行,使用帆软自带or函数

OR(logical1,logical2,…):当所有参数的值为假时,返回FALSE;当任意参数的值为真时,返回TRUE。

Logical1,logical2,…:指1到n个需要检验TRUE或FALSE的条件值。

备注:

参数必须是逻辑值,或是含有逻辑值的数组或引用。如果数组或引用中含有文本或空的单元格,则忽略其值。如果在指定的单元格区域中没有逻辑值,AND函数将返回错误信息#NAME?。

示例:

OR(1+7=9,5+7=11)等于FALSE。

OR(1+7=8,5+7=11)等于TRUE。

============================================

可以改成下面格式

${if(or(len(province) = 0,province=='中国')," order by 字段 desc","and 字段='"+province+"'")}

============

你这个是一个控件,查询不听字段,参考

select * from 表 where 1=1

${if(len(province)=0,"","or 省字段 ='"+ province + "'")}

${if(len(province)=0,"","or 市字段 ='"+ province + "'")}

${if(len(province)=0,"","or 区字段 ='"+ province + "'")}

  • 3关注人数
  • 650浏览人数
  • 最后回答于:2022-2-8 16:00
    请选择关闭问题的原因
    确定 取消
    返回顶部