U8C服务小锦囊--查询引擎--查询引擎手工设计增加参数——U8C实施与服务支持部闫静业务场景:项目上在设计自定义报表时,使用手工录入sql语句的方式进行查询,想要增加参数进行筛选数据,但是在实际使用时发现查询时筛选条件不输入任何值时,查询不出数据,只能在浏览时输入筛选条件具体的值才可以查询,想要实现的效果是当不输入任何筛选条件进行查询时,默认查询所有数据,以下以查询存货单据信息为例主要介绍应该怎样引用参数并查询报表。解决方案:第一步:在查询模型下增加替换型参数这里需要增加替换型参数,形如#参数名#,如下:第二步:在查询模型中引用参数我们可以看到在使用向导设计时,增加筛选条件,sql语句会将where条件转换成1=1的形式,如下:在这种形式下就可以实现当筛选条件不输入任何值时,默认查询出所有符合查询条件的数据,那么只需要在手工设计的sql语句中构造一个类似1=1的筛选条件,就可以实现上述需求。首先,增加完替换型参数之后,在where条件后使用如下形式的条件进行筛选:(1=(casewhen参数isnullor参数=''then1end)or字段名=参数),例如此报表中筛选单据日期和单据类型名称两个字段,如下:单据日期:因为单据日期是区间的形式,所以设置为(1=(casewhen#djrqksy#isnullor#djrqksy#=''then1end)ordbilldate>=#djrqksy#)and(1=(casewhen#djrqjsy#isnullor#djrqjsy#=''then1end)ordbilldate<=#djrqjsy#)单据类型名称:(1=(casewhen#djlxmc#isnullor#djlxmc#=''then1end)orbilltypename=#djlxmc#)第三步:进行浏览报表输入条件查询:不输入条件查询:其他应用:1.使用casewhen函数处理的字段作为筛选条件进行查询数据项目上有可能存在在查询数据时,字段显示为数字,不能显示具体的文字,就会使用casewhen函数将数字转换为文字进行显示,如下:那么在查询数据时,想要用该字段内容进行筛选,因为数据库中存储的字段值为数值型,但是需要用字符型进行筛选,所以不能像以上参数进行增加,先增加替换型参数然后将语句修改为以下形式:进行查询数据:2.多选参数值进行筛选数据如果想要多选参数值进行查询数据,例如多选公司查询,实现方式如下:参数设置操作符为in,枚举项为公司目录,并且将该参数设置为必选,本例以多选公司主键为例说明:然后在查询模型中增加公司主键的筛选条件,如下:查询:3.参数想要模糊查询参数的操作符设置为like;然后在查询语句中,将过滤语句设置为以下形式查询即可;联系方式:本文档未尽事宜可邮件联系:yanjing17@yonyou.com