找回密码
 立即注册

QQ登录

只需一步,快速开始

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

高级会员

141

主题

211

帖子

1380

积分

高级会员

积分
1380

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

MatrixTian 讲师达人认证 悬赏达人认证
高级会员   /  发表于:2019-9-17 15:15  /   查看:3997  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 18:37 编辑

创建数据集的时候,在出现比较复杂的包含函数运算的sql语句时,需要通过动态sql来实现整个数据集语句的创建。通过动态sql创建的报表,在预览时,可能会出现sql语句编写不正确的场景,在预览时不好排查出错原因。
这种情况下,可以通过在文本框中表写表达式,将整个动态sql语句在预览时输出,来排查动态sql是否编写正确。

本文以参数值为空,返回所有值为例,介绍如何用这种方法实现动态sql的排错。

1.创建报表,并添加报表参数:@area   本例中@area参数为多值参数;参数默认值和可选值来自于数据集:select distinct 销售大区 from 销售明细;
image.png157829283.png
2.创建数据集:通过不含参的完整sql语句,验证后读取数据表结构; image.png900782470.png
3.在文本框中编辑动态sql:
sql脚本为:
="select * from 销售明细 where 1=1 " & IIF(IsNothing(Parameters!area.Value),"","and 销售大区 in ('"  & Join(Parameters!area.Value,"','") & "')"
含义:根据参数值是否为空,如果为空,查询全部;否则查询相应地区数据。
image.png17794798.png
image.png211849059.png

4.预览报表,查看报表中SQL语句完整的输出内容,检查是否正确;如果没有输出语句,则说明sql语法有问题,需要排错;
语句正确预览效果:
image.png220822142.png

如无预览输出结果,对文本框中的表达式进行排错,调整语句写法,直到输出正确的sql语句为准。

5.利用正确的动态sql数据集创建报表数据集。
image.png326142577.png

6.利用设计好的数据集创建报表。
image.png731381530.png
image.png189673155.png



0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部