【问题】

    制作一张订单信息报表,有两个输入参数:省份、地区。要求在无参数时查询能显示所有数据。

    但是完成后发现,当参数为空时,显示结果不全。

    

    数据库查询如下:

        SELECT * FROM 订单        where ${ if( len(省份)==0, "1=1", "货主省份='" + 省份 + "'" ) }	     ${ if( len(省份)==0, "and 货主地区='" + 地区 + "'", 	 	    if( len(地区)==0, "", "and 货主地区='" + 地区 + "'" )	     ) }

image.png

【原因】

    缺少了省份与地区都为空时的判断。

【解决】

    正确的数据库查询SQL:

    SELECT * FROM 订单    where ${ if( len(省份)!=0,		if( len(地区)!=0,			"货主省份='" + 省份 + "' and 货主地区='" + 地区 + "'",			"货主省份='" + 省份 + "'"		),		if( len(地区)!=0,			"货主地区='" + 地区 + "'",			"1=1"		)	) }

image.png

【注意点】

  • 在普通的SQL查询中,注释是使用“--”来完成的

  • 在FR的数据库查询中,“--”做注释会报出语法错误

image.png