参数下拉框联动



c6f0c797baafb409167e9248399ad85.png

1603333990(1).png

按照姓名可以查询出来,但是按照公司查询就会查询出全部是因为什么呢?想要实现选择姓名后,公司下拉框自动匹配对应的。选择公司不选姓名可以查出该公司全部合同。(一个姓名对应一个公司,但同一个公司有好几个人)

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

首先sql需要进行变更,变更如下:

select

b.name 姓名,

c.name 公司,

a.contractnum 合同编号,

...

from

hi_psndoc_ctrt a

left  join

XX b

on

a.xx = b.xx

left join

XX c

on

a.xx = c.xx

where 

1=1

${if(len(姓名) == 0,"","and b.name in ('" + 姓名 + "')")}

${if(len(公司) == 0,"","and c.name  in ('" + 公司 + "')")}

注意这边的in是可以多选的,多选的时候注意分隔符改为(','),单选直接改为=就可以


以上是sql 想要实现姓名约束公司的时候需要在写一个sql,加在公司参数的数据字典下边

select

c.name 公司

from

XX c 

left join

XX b

on

c.xx = b.xx

where

1=1

${if(len(姓名) == 0,"","and b.name in ('" + 姓名 + "')")}


最佳回答
0
luojian0323Lv7资深互助
发布于2020-10-22 10:22(编辑于 2020-10-22 10:23)

这个要看你的sql怎么写的呀

你又想要公司下拉框依赖前面的姓名做选择

你又想要选择公司不选择姓名,可以查询全部。

这是行不通的。

  • 年年 年年(提问者) 我又上传了sql,现在我遇到最大的问题是,选择公司查询直接查询出全部。
    2020-10-22 10:38 
  • luojian0323 luojian0323 回复 年年(提问者) 你的问题就像你前面说的 是矛盾的 公司依赖于姓名,那姓名不选,公司下拉框就选不了。 这是依赖关系 决定的。
    2020-10-22 10:41 
  • luojian0323 luojian0323 回复 年年(提问者) 你可以把公司放在前面选择,姓名根据公司做选择 这样才可以 把逻辑理通了,再写sql
    2020-10-22 10:42 
  • 年年 年年(提问者) 回复 luojian0323 OK,感谢
    2020-10-22 11:23 
最佳回答
0
誓言无悔Lv6初级互助
发布于2020-10-22 10:23
最佳回答
0
luckybaiLv4初级互助
发布于2020-10-22 10:24

你可以在公司下拉框的那个数据集里面加一个参数,这个参数就是姓名,类似于这样:
image.png

  • 年年 年年(提问者) 我试过了,查询没有数据
    2020-10-22 10:39 
  • luckybai luckybai 回复 年年(提问者) 是什么情况没有数据
    2020-10-22 10:45 
最佳回答
0
snrtuemcLv8专家互助
发布于2020-10-22 10:25

这个是不行的,如果姓名带出公司,那姓名必选,

要么根据公司带出姓名,项目可以不是必选


  • 年年 年年(提问者) 现在我遇到最大的问题是按照公司查询,显示的不是我选择的公司,而是全部
    2020-10-22 10:41 
  • snrtuemc snrtuemc 回复 年年(提问者) 你没有做wehre条件限制啊,参考楼下的 你的sql语句 where 1=1 ${if(len(公司) == 0,\"\",\"and 公司 in (\'\" + 公司 + \"\')\")}
    2020-10-22 10:47 
最佳回答
0
孤陌Lv6资深互助
发布于2020-10-22 10:28

SELECT * FROM dbo.[DEB] where 1=1 

${if(len(CH) == 0,"","and 姓名 in ('" + CH + "')")}

${if(len(fdh) == 0,"","and  公司in ('" + fdh + "')")}



最佳回答
0
ColdmanLv6高级互助
发布于2020-10-22 11:20(编辑于 2020-10-22 11:21)

https://help.fanruan.com/finereport/doc-view-2394.html?source=1

写两个参数为空查询全部

一个是公司

一个是姓名

  • 8关注人数
  • 555浏览人数
  • 最后回答于:2020-10-22 11:21
    请选择关闭问题的原因
    确定 取消
    返回顶部