finereport  where 查询条件

在数据集中写代码时,如果想要where后面加多个查询条件,既能用其中一个条件单独查,又能多个条件联合查,请问怎么用代码实现

FineReport Scyalcire 发布于 2019-12-10 16:36
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
shirokoLv6资深互助
发布于2019-12-10 16:40(编辑于 2019-12-10 17:01)

用and连接然后用参数去处理啊

where 1=1

${参数1=1,"and 条件1=值1",""}

${参数2=1,"and 条件2=值2",""}

${参数3=1,"and 条件3=值3",""}

${参数4=1,"and 条件4=值4",""}

SELECT
	t2.req_code_erp AS 请购单编号,
	t2.req_rowno_erp AS 请购单行号,
	t1.bill_code AS 询价单编号,
	date( t1.ts ) AS 询价日期,
	t1.corp_sub_account_name AS 采购员,
	t1.supervise_psn_name AS 监督人,
	t1.puorg_doc_name AS 采购组织,
	t2.req_org_name AS 需求组织,
	date( t01.ts ) AS 定标时间,
	t01.total_amount AS 定标总金额,
	t3.sup_enterprise_name AS 供应商,
	t3.quota_num AS 定标数量,
	t3.quota_price AS 定标单价,
	t3.quota_money AS 定标金额,
	t02.billno AS 合同编号,
	date( t02.ts ) AS 合同生成时间,
	t02.erp_ct_code AS NC合同编号,
	t4.material_name AS 物料名称,
	t4.num AS 合同数量,
	t4.price AS 合同单价,
	t4.money AS 合同未税金额,
	t4.tax_money AS 合同含税金额 
FROM
	cpu_buyoffer.ipu_quotation t1
	LEFT OUTER JOIN cpu_pricedecision.cpu_pricedecision t01 ON t1.id = t01.buyofferid
	LEFT OUTER JOIN cpu_contract.cpu_ct t02 ON t1.id = t02.buyoffer_id,
	cpu_buyoffer.ipu_quotation_detail t2,
	cpu_pricedecision.cpu_pricedecision_detail t3,
	cpu_contract.cpu_ct_material t4 
WHERE
	t1.id = t2.quotationid 
	AND t1.dr = '0' 
	AND t2.dr = '0' 
	AND t2.product_id = t3.material_id 
	AND t2.product_id = t4.material_id 
	${if(len(创建日期)>0&&len(结束日期)>0," and t1.createtime BETWEEN '"+创建日期+"' AND '"+结束日期+"'","")}
	${if(len(采购组织)>0," AND t1.puorg_doc_name = '"+采购组织+"'","")}
	${if(len(请购单编号)>0,"AND t2.req_code_erp = '"+请购单编号+"'","")}


  • Scyalcire Scyalcire(提问者) 就比如我写了一个常规的select,里面想把时间,组织,制单人都作为where后面的查询条件,请问具体可以怎么写
    2019-12-10 16:43 
  • shiroko shiroko 回复 Scyalcire(提问者) 。别绕弯子了,你想要什么效果,数据给出来,直接给你写了得了
    2019-12-10 16:50 
  • Scyalcire Scyalcire(提问者) 回复 shiroko select t2.req_code_erp as 请购单编号,t2.req_rowno_erp as 请购单行号,t1.bill_code as 询价单编号,date(t1.ts) as 询价日期, t1.corp_sub_account_name as 采购员,t1.supervise_psn_name as 监督人,t1.puorg_doc_name as 采购组织, t2.req_org_name as 需求组织,date(t01.ts) as 定标时间,t01.total_amount as 定标总金额, t3.sup_enterprise_name as 供应商,t3.quota_num as 定标数量,t3.quota_price as 定标单价,t3.quota_money as 定标金额, t02.billno as 合同编号,date(t02.ts) as 合同生成时间,t02.erp_ct_code as NC合同编号, t4.material_name AS 物料名称,t4.num as 合同数量,t4.price as 合同单价,t4.money as 合同未税金额,t4.tax_money as 合同含税金额 from cpu_buyoffer.ipu_quotation t1 LEFT OUTER JOIN cpu_pricedecision.cpu_pricedecision t01 on t1.id=t01.buyofferid LEFT OUTER JOIN cpu_contract.cpu_ct t02 on t1.id=t02.buyoffer_id, cpu_buyoffer.ipu_quotation_detail t2,cpu_pricedecision.cpu_pricedecision_detail t3, cpu_contract.cpu_ct_material t4 where t1.id=t2.quotationid and t1.dr=\'0\' and t2.dr=\'0\' AND t2.product_id=t3.material_id and t2.product_id=t4.material_id and t1.createtime between \'${创建日期}\' and \'${创建日期}\' and t1.puorg_doc_name =\'${采购组织}\'and t2.req_code_erp=\'${请购单编号}\' 我想把其中的部分字段作为查询条件,但不是每个查询条件都有值才可以查
    2019-12-10 16:55 
  • Scyalcire Scyalcire(提问者) 回复 shiroko 我既可以按时间查,也可以时间+组织,或者只按组织
    2019-12-10 16:56 
最佳回答
0
张洪威Lv6高级互助
发布于2019-12-10 16:39

了解下这个文档吧。

下拉复选框参数为空选择全部-https://help.finereport.com/doc-view-2395.html


SELECT * FROM 订单 where 1=1

${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}

${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}

${if(len(area) == 0,"","and 货主地区 in ('" + area + "')")}


类似这样把三个不同的${}连着就行。

  • Scyalcire Scyalcire(提问者) 不是这个意思
    2019-12-10 16:43 
  • 张洪威 张洪威 回复 Scyalcire(提问者) 我这是上面复制没改成不同的字段,你把上面三个${}改成你对应的时间,组织,制单人字段就是你要的了,写法一样。
    2019-12-10 16:45 
最佳回答
0
JackloveLv7高级互助
发布于2019-12-10 16:45(编辑于 2019-12-10 16:46)


SELECT * FROM 表 where 1=1
${if(len(time) == 0,"","and 时间 = ('" + time + "')")}
${if(len(zhuzhi) == 0,"","and 组织 = ('" + zhuzhi + "')")}
${if(len(zhidan) == 0,"","and 制单人 = ('" + zhidan + "')")}

通过以上的三个if可以生成三个你查的参数  在对应的参数框输入内容就会匹配出对应的内容

最佳回答
0
18328816101Lv5中级互助
发布于2019-12-10 16:48

将所有需要查询的字段定义成同一个参数

image.png

比如我的模糊查询,手机号和姓名都能用文本控件查

最佳回答
0
东都太子Lv4见习互助
发布于2019-12-10 17:15

用模版参数

然后在过滤  if(len($控件名称) = 0, nofilter, $控件名称)


这样最简单 不需要使用sql写一大串,太累

  • 7关注人数
  • 4565浏览人数
  • 最后回答于:2019-12-10 17:15
    请选择关闭问题的原因
    确定 取消
    返回顶部