找回密码
 立即注册

QQ登录

只需一步,快速开始

喵喵教万岁

注册会员

4

主题

8

帖子

40

积分

注册会员

积分
40
  • 253

    金币

  • 4

    主题

  • 8

    帖子

喵喵教万岁
注册会员   /  发表于:2023-4-17 10:23  /   查看:1377  /  回复:3
10金币

报错:
image.png938094787.png
需求:
我的报表需要两个查询字段。
1个为字符串类型  a1,1个为日期类型  d1。
a1 需要进行模糊查询。
d1 相等即可
两个字段都非必选。
如果两个字段都未选中,那么查询全部。
如果只填写了 其中1个,那么只查目标条件。
参考资料:https://gcdn.grapecity.com.cn/showtopic-156081-1-1.html
我的写法:
image.png660563659.png
image.png887247314.png

sql代码:

select * from demo
where 1=1
{IIF(IsNothing(@查询参数1), "", " and name like '%" & @查询参数1 & "%'")}  
{IIF(IsNothing(@查询参数2), "", " and  cxrq ='" & @查询参数2 & "'")}




最佳答案

查看完整内容

您好,我按照您的数据源类型和需求在我的本地还原了一下,发现几个操作上的问题: 首先,编辑数据集的数据筛选部分,每个参数后面的数据内容需要带上前后大括号,并且建议这里的参数名称和报表参数中的名称保持一致。 其次看您的字符串型报表参数“ddh”选择了“可不输入”选项,当选择这个选项时,对于该参数的判空需要使用@ddh=""的形式判断,若是您选择了“可忽略”选项,则可以通过IsNothing()函数进行判空操作。 然 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Chuki.Li
超级版主   /  发表于:2023-4-17 10:23:26
来自 2#
您好,我按照您的数据源类型和需求在我的本地还原了一下,发现几个操作上的问题:

首先,编辑数据集的数据筛选部分,每个参数后面的数据内容需要带上前后大括号,并且建议这里的参数名称和报表参数中的名称保持一致。
image.png268225402.png
其次看您的字符串型报表参数“ddh”选择了“可不输入”选项,当选择这个选项时,对于该参数的判空需要使用@ddh=""的形式判断,若是您选择了“可忽略”选项,则可以通过IsNothing()函数进行判空操作。

然后当我们选择MySQL数据库作为报表的数据源时,like函数需要使用concat函数进行语句的字符拼接。

综上所述,将sql语句改为类似:
select * from 销售明细 where 1=1 {IIF(@ddh = "", "", " and 订单编号 like concat('%', @ddh, '%')")} {IIF(IsNothing(@cxrq), "", " and 订购日期 =@cxrq ")}
即可生效,其中具体的数据表字段名按照您那边的数据进行修改即可,最终可以达成目的。
image.png748632812.png image.png880540161.png
回复 使用道具 举报
喵喵教万岁
注册会员   /  发表于:2023-4-17 15:39:44
3#
谢谢,学到了
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-4-17 15:49:49
4#

不客气,问题解决了就好,本贴就先结贴了,有问题开新帖哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部