下拉框控件:库存状态,设置自定义数据字典为:正常和冻结,为什么选择正常/冻结查询之后没有任何反应?

sql语句大概为:

select distinct i.sku 物料编码,

               s.descr 物料名称,

                i.id LPN,

                i.qty 数量,

                i.qty - i.qtyallocated - i.qtypicked 可用量,

                i.qtyallocated 分配量,

                i.qtypicked 拣货量,

                case

                  when i.status = 'OK' then

                   '正常'

                  else

                   '冻结'

                end 库存状态,

case

                  when i.status = 'OK' then

                   '合格'

                  when i.status = 'HOLD' and ih.status is not null then

                   to_char(ihc.description)

                  else

                   to_char(ihcloc.description)

                end 冻结状态,

from lotxlocxid i where 1=1 ${if(len(库存状态)==0,"","and i.status =('"+库存状态+"')")} ${if(len(物料编码)==0,"","and i.sku =('"+物料编码+"')")}

FineReport neyhig 发布于 2020-12-10 17:05
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
hbb001Lv6初级互助
发布于2020-12-10 17:16(编辑于 2020-12-11 08:41)

where 1=1 ${if(len(kczt)==0,"","and 库存状态 ='"+kczt+"' ")} ${if(len(wlbm)==0,"","and 物料编码 ='"+wlbm+"'")}

你的格式写错了,你把参数和数据库字段位置搞错了,公式错了

下拉框参数为空选择全部 https://help.fanruan.com/finereport/doc-view-2394.html?source=1

  • hbb001 hbb001 回复 neyhig(提问者) 你的公式 where 1=1 ${if(len(库存状态)==0,\"\",\"and i.status =(\'\"+库存状态+\"\')\")} ${if(len(物料编码)==0,\"\",\"and i.sku =(\'\"+物料编码+\"\')\")}这里面 库存状态和物料编码是参数哦 i.status是你的数据库字段,参数库存状态 在设计器下拉框控件里面是什么值呢,你如果设置为正常或者冻结 是查不到数据的 因为你查的是i.status=参数库存状态 i.status里面没有正常、冻结这两个值的 这两个值存在于你按照i.status case新增的数据库字段库存状态, 先看看文档 区分一下参数和字段对应关系
    2020-12-10 17:38 
  • hbb001 hbb001 回复 neyhig(提问者) with a as (select distinct i.sku 物料编码, s.descr 物料名称, i.id LPN, i.qty 数量, i.qty - i.qtyallocated - i.qtypicked 可用量, i.qtyallocated 分配量, i.qtypicked 拣货量, case when i.status = \'OK\' then \'正常\' else \'冻结\' end 库存状态, case when i.status = \'OK\' then \'合格\' when i.status = \'HOLD\' and ih.status is not null then to_char(ihc.description) else to_char(ihcloc.description) end 冻结状态, from lotxlocxid i) select * from a where 1=1 ${if(len(kczt)==0,\"\",\"and 库存状态 =\'\"+kczt+\"\'\")} ${if(len(wlbm)==0,\"\",\"and 物料编码 =(\'\"+wlbm+\"\')\")}
    2020-12-10 18:18 
  • hbb001 hbb001 回复 neyhig(提问者) kczt和wlbm是参数
    2020-12-10 18:18 
  • neyhig neyhig(提问者) 还想问一句:前面加with a as是为什么啊?
    2020-12-10 18:39 
  • hbb001 hbb001 回复 neyhig(提问者) 相当于一个子查询,把你SQL查询出来的结果集作为新的表来查询
    2020-12-11 08:41 
最佳回答
0
luojian0323Lv7资深互助
发布于2020-12-10 17:11

"and i.status =('"+库存状态+"')"

如果是单选,不用加括号

如果是多选 ,请用"and i.status in ('"+库存状态+"')"

  • neyhig neyhig(提问者) 不行,还是查询不了
    2020-12-10 17:16 
  • luojian0323 luojian0323 回复 neyhig(提问者) 下拉框自定义值,截图看下
    2020-12-10 17:18 
  • neyhig neyhig(提问者) 啊?手机上传不了图片
    2020-12-10 17:29 
  • luojian0323 luojian0323 回复 neyhig(提问者) 你的下拉框,显示值,与实际值,设置的对不对
    2020-12-10 18:01 
最佳回答
0
LarryAbbyLv5中级互助
发布于2020-12-10 17:34

SELECT * FROM (

select distinct i.sku 物料编码,


               s.descr 物料名称,


                i.id LPN,


                i.qty 数量,


                i.qty - i.qtyallocated - i.qtypicked 可用量,


                i.qtyallocated 分配量,


                i.qtypicked 拣货量,


                case


                  when i.status = 'OK' then


                   '正常'


                  else


                   '冻结'


                end 库存状态,


case


                  when i.status = 'OK' then


                   '合格'


                  when i.status = 'HOLD' and ih.status is not null then


                   to_char(ihc.description)


                  else


                   to_char(ihcloc.description)


                end 冻结状态,


from lotxlocxid i)T where 1=1 ${if(len(库存状态)==0,"","and T.库存状态 =('"+库存状态+"')")} ${if(len(物料编码)==0,"","and i.sku =('"+物料编码+"')")}



然后下拉框现在自定义

正常和冻结

  • neyhig neyhig(提问者) 主要是将 and 库存状态改成了and T. 库存状态吗?改了之后显示标识符无效了哎
    2020-12-10 18:07 
  • LarryAbby LarryAbby 回复 neyhig(提问者) 在外层又套了一层查询啊,不行你把你的cpt文件上传吧
    2020-12-10 18:19 
最佳回答
0
huyajunLv6初级互助
发布于2020-12-10 17:42

我猜你下拉框里面写的参数还是正常和冻结,但是你数据集里面是传参status  对应的值是OK 

  • 5关注人数
  • 476浏览人数
  • 最后回答于:2020-12-11 08:41
    请选择关闭问题的原因
    确定 取消
    返回顶部