找回密码
 立即注册

QQ登录

只需一步,快速开始

MatrixTian 讲师达人认证 悬赏达人认证

高级会员

141

主题

211

帖子

1378

积分

高级会员

积分
1378

微信认证勋章讲师达人元老葡萄悬赏达人

MatrixTian 讲师达人认证 悬赏达人认证
高级会员   /  发表于:2019-11-29 12:20  /   查看:2935  /  回复:4
本帖最后由 James.Lv 于 2023-1-5 18:46 编辑

如下图,
image.png645910644.png

需要实现在可选参数为多值的时候,不选择参数值,默认查询全部数据,即允许多选参数为空。

核心点:
1.动态SQL:
="select * from 销售明细 where 1=1" & IIF(IsNothing(Parameters!p1.Value) OR JOIN(Parameters!p1.Value,"") = " ",""," and 销售大区 in ('" & JOIN(Parameters!p1.Value,"','") &"')"
2.参数下拉项增加空字符串
SQL:select ' ' 销售大区 union select distinct 销售大区 from Demo_销售明细 order by 1
参考报表文件见本帖附件

实现步骤:
1.创建报表,添加报表参数;
image.png300220336.png
2.设置参数的可选值和默认值;
    添加数据集,作为地区参数的可选值数据来源:
    SQL:select ' ' 销售大区 union select distinct 销售大区 from Demo_销售明细 order by 1
    解释:由于多值参数为必选参数,因此在数据表distinct销售大区基础上添加一行空文本,变相实现可不选。

    参数下拉效果:
    image.png351067809.png

3.在报表中添加动态SQL:
="select * from 销售明细 where 1=1" & IIF(IsNothing(Parameters!p1.Value) OR JOIN(Parameters!p1.Value,"") = " ",""," and 销售大区 in ('" & JOIN(Parameters!p1.Value,"','") &"')"
解释:用IIF函数来判断参数是否为空或者空字符串,如果为真,则sql为select * from 销售明细 where 1=1,否者执行含参数值的完整SQL,
例如:[size=13.3333px]select * from 销售明细 where 1=1 and 销售大区 in ('东北','华北','华东')
[size=13.3333px]

[size=13.3333px]    在报表中添加文本框,文本框中表达式和数据集中的动态SQL一致,目的是查看完整SQL的输出结果,排查sql的错误。
[size=13.3333px]    参考动态SQL排错:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=60214&extra=page%3D2

4.添加表格,绑定数据,设计报表;
image.png567630309.png

5.预览效果
image.png798785400.png

image.png480527953.png
image.png338590087.png

多选参数可为空.rdlx

4.43 KB, 下载次数: 35

4 个回复

倒序浏览
zshun8023
注册会员   /  发表于:2023-3-15 14:45:04
沙发
这个现在不行了吗,多值参数默认值设空后预览报“值输入错误”;
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-3-15 17:45:15
板凳
zshun8023 发表于 2023-3-15 14:45
这个现在不行了吗,多值参数默认值设空后预览报“值输入错误”;

您是否想实现多值参数默认全选的,可以参考这个帖子:
https://gcdn.grapecity.com.cn/showtopic-156178-1-1.html
回复 使用道具 举报
zshun8023
注册会员   /  发表于:2023-3-15 18:28:41
地板
不是,是想实现多选框不选择的时候sql默认查所有数据
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-3-15 18:32:53
5#
zshun8023 发表于 2023-3-15 18:28
不是,是想实现多选框不选择的时候sql默认查所有数据

我们已经给您回复了,您在您发的忒自下面看一下:
6.0 报表-单值或多值参数为空的场景
https://gcdn.grapecity.com.cn/fo ... 9&fromuid=70395
(出处: 葡萄城产品技术社区)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部