找回密码
 立即注册

QQ登录

只需一步,快速开始

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

超级版主

199

主题

6505

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10804

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

[ActiveReports] 如何实现动态SQL

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-12-10 11:17  /   查看:4776  /  回复:11
ActiveReports支持数据库直连,可以在可视化数据查询窗口,根据自己的需求写查询语句,并根据自己的需求进行数据的过滤。在使用参数报表进行数据过滤的时候,有这样的业务场景,就是当参数值为空或者不存在的时候,不进行数据过滤。当参数有输入的值时候,根据参数输入值进行过滤。
具体步骤如下:
(本次讲解是使用SQLserver数据库进行的详细操作步骤的讲解,其他数据库可以根据该操作进行一个对应的参考)
1、进行数据源数据集的绑定
2、添加报表参数(因为你的参数可能存在空值,那么你的参数就勾选允许空值)


3、进行SQL语句的修改
  1. ="Select  *  from  产品  where 1=1 " & IIF(Parameters!供应商ID.Value= "", "", " and 供应商ID='" &  Parameters!供应商ID.Value &"'")&""
复制代码
4、由于SQL语句在可视化查询器中没办法进行调试,进行这种查询语句的写法的时候给大家一个经验分享
为了更方便的看出实际进行数据查询的SQL语句,我们可以在报表中添加一个文本框组件,并将动态SQL语句粘贴到文本框中,然后再预览报表。

5、预览结果
   参数不存在时

参数有输入值时

6、具体的报表文件见附件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

11 个回复

正序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2024-2-28 15:09:17
12#
工作狂: 发表于 2024-2-28 13:30
不加=号,验证会报错

您好,这个大概率还是sql有问题导致的,您在检查看看,如果还有问题,请在您的帖子下追贴回复,我们再您的帖子交流。
回复 使用道具 举报
工作狂:
注册会员   /  发表于:2024-2-28 13:30:47
11#
Eden.Sun 发表于 2024-2-28 11:37
咱们在您的这个帖子上解决您的问题哈
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=203 ...

不加=号,验证会报错
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2024-2-28 11:37:56
10#
Eden.Sun 发表于 2024-2-28 11:31
您不用在sql前面加 = 的。帖子中使用的版本比较老。所以在写sql的时候需要通过 = 来进行表示。

咱们在您的这个帖子上解决您的问题哈
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=203409
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2024-2-28 11:31:02
9#
工作狂: 发表于 2024-2-28 10:08
验证后会自动加一个="然后预览的时候报错

您不用在sql前面加 = 的。帖子中使用的版本比较老。所以在写sql的时候需要通过 = 来进行表示。
回复 使用道具 举报
工作狂:
注册会员   /  发表于:2024-2-28 10:08:43
8#
验证后会自动加一个="然后预览的时候报错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2022-5-23 18:15:35
7#
无名无名 发表于 2022-5-23 15:01
要是换种写法,比如 要是下拉框没有选择的话,默认找所有,选中的话,根据条件查询
where 1=1 " & IIF(P ...

您好,表起别名的话您的字段就是表别名.字段名,您试试,如果还不行的话,您重新发个帖子,我们在新贴上帮您解决。
回复 使用道具 举报
无名无名
初级会员   /  发表于:2022-5-23 15:01:59
6#
Bella.Yuan 发表于 2022-5-23 11:40
您好,mysql可以这样实现:

要是换种写法,比如 要是下拉框没有选择的话,默认找所有,选中的话,根据条件查询
where 1=1 " & IIF(Parameters!供应商ID.Value= "", "", " and 供应商ID='" &  Parameters!供应商ID.Value &"'")&""
我用这种写法实现了,但是 我要是给表名起个别名的话,这种写法该怎么写????
比如  select * from table  tb where 1=1 and  tb.字段='';
要是字段为空的话就这样动态写select * from table  tb where 1=1
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2022-5-23 11:40:30
5#
无名无名 发表于 2022-5-23 11:20
你好,我想问一下mysql  如何实现?

您好,mysql可以这样实现:
      

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
无名无名
初级会员   /  发表于:2022-5-23 11:20:41
地板
KearneyKang 发表于 2020-12-16 12:28
使用postgresql数据库是ODBC的驱动,参数的替代者是“?”号,但是参数的使用当查询语句不使用的时候,跟进" ...

你好,我想问一下mysql  如何实现?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部