如何实现动态SQL
ActiveReports支持数据库直连,可以在可视化数据查询窗口,根据自己的需求写查询语句,并根据自己的需求进行数据的过滤。在使用参数报表进行数据过滤的时候,有这样的业务场景,就是当参数值为空或者不存在的时候,不进行数据过滤。当参数有输入的值时候,根据参数输入值进行过滤。具体步骤如下:
(本次讲解是使用SQLserver数据库进行的详细操作步骤的讲解,其他数据库可以根据该操作进行一个对应的参考)
1、进行数据源数据集的绑定
2、添加报表参数(因为你的参数可能存在空值,那么你的参数就勾选允许空值)
3、进行SQL语句的修改
="Select*from产品where 1=1 " & IIF(Parameters!供应商ID.Value= "", "", " and 供应商ID='" &Parameters!供应商ID.Value &"'")&""4、由于SQL语句在可视化查询器中没办法进行调试,进行这种查询语句的写法的时候给大家一个经验分享
为了更方便的看出实际进行数据查询的SQL语句,我们可以在报表中添加一个文本框组件,并将动态SQL语句粘贴到文本框中,然后再预览报表。
5、预览结果
参数不存在时
参数有输入值时
6、具体的报表文件见附件
帮我解决一下我的问题,postgresql数据库 使用postgresql数据库是ODBC的驱动,参数的替代者是“?”号,但是参数的使用当查询语句不使用的时候,跟进"?"号没办法进行一一对应,因为参数要使用字符串那种形式。="select *from 产品where1=1 and 类别ID='"& Parameters!P1.Value &"'"
KearneyKang 发表于 2020-12-16 12:28
使用postgresql数据库是ODBC的驱动,参数的替代者是“?”号,但是参数的使用当查询语句不使用的时候,跟进" ...
你好,我想问一下mysql如何实现? 无名无名 发表于 2022-5-23 11:20
你好,我想问一下mysql如何实现?
您好,mysql可以这样实现:
Bella.Yuan 发表于 2022-5-23 11:40
您好,mysql可以这样实现:
要是换种写法,比如 要是下拉框没有选择的话,默认找所有,选中的话,根据条件查询
where 1=1 " & IIF(Parameters!供应商ID.Value= "", "", " and 供应商ID='" &Parameters!供应商ID.Value &"'")&""
我用这种写法实现了,但是 我要是给表名起个别名的话,这种写法该怎么写????
比如select * from tabletb where 1=1 andtb.字段='';
要是字段为空的话就这样动态写select * from tabletb where 1=1 无名无名 发表于 2022-5-23 15:01
要是换种写法,比如 要是下拉框没有选择的话,默认找所有,选中的话,根据条件查询
where 1=1 " & IIF(P ...
您好,表起别名的话您的字段就是表别名.字段名,您试试,如果还不行的话,您重新发个帖子,我们在新贴上帮您解决。 验证后会自动加一个="然后预览的时候报错
工作狂: 发表于 2024-2-28 10:08
验证后会自动加一个="然后预览的时候报错
您不用在sql前面加 = 的。帖子中使用的版本比较老。所以在写sql的时候需要通过 = 来进行表示。 Eden.Sun 发表于 2024-2-28 11:31
您不用在sql前面加 = 的。帖子中使用的版本比较老。所以在写sql的时候需要通过 = 来进行表示。
咱们在您的这个帖子上解决您的问题哈
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=203409
页:
[1]
2