UAP报表开发手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UAP报表开发手册
说明:本手册是对报表帮助文档的补充,在看本手册前建议先看报表的帮助文档
1. 数据源定义
报表数据源可分为实体关系查询,SQL脚本查询和自定义查询三个类型,如下图所示:
图1.1
其中数据源名称和数据源描述是为了标识数据源以及说明数据源的功能。
1.1查看或修改现有数据源
“查看或修改现有数据源”是指对原先已经创建的数据源进行修改(系统预置的数据源不允许修改),或者可以在新建报表时选择已存在的数据源,如下图:
选“下一步”:
则列所有已存在的数据源,选择其中一个,按“下一步”:
图1.4
功能列表是数据引擎内部使用机制,直接选“下一步”:
图1.5
这个是设置报表数据源的最后一个步骤,由于选定的数据源为自定义查询类型,所以第一个页签为自定义查询组件的相关信息(关于自定义查询组件的具体情况,请查阅本手册1.3单元);第二个页签如下图:
图1.6
查询结果列是指该数据查询结果的具体情况,包括列名称,列的数据类型,列的区域语言描述。这些信息将构成报表格式设计时的数据源信息(关于这部分内容的详细情况请参阅UAP报表设计时帮助文档)。
另一个页签为“过滤条件设置”,如下图:
图1.7
具体包括过滤条件名称,过滤条件的区域语言描述,这个将在过滤条件的数据源下拉列表中出现,这些信息将用来设置从过滤控件读去用户输入条件值来对查询的结果进行过滤(具体情况清参阅本手册2.2单元)。
之后,选择“完成”即结束数据源定义而进入报表格式定义。
1.2实体关系查询
在图1.1步骤中选定“实体关系查询”,点击“下一步”则进入实体关系查询类型的数据源定义:
图1.8
这里必须要添加至少一个关联实体,点击“添加”,则可选择系统已经定义好的实体:
图1.9
选定实体,然后点击“确定”:
图1.10
点击“下一步”(如果选择了多个实体,则还需要定义实体之间的关系。关于如何定义一个实体以及如何定义实体之间的关系,请参阅数据引擎的相关文档):
图1.11
接着必须添加结果列,即图1.6中的“查询结果列”。点击“添加”:
图1.12
这里弹出的列表为选定的单个实体或多个实体能查询到的所有的结果列的信息。选定需要的查询结果列后,点击“确定”:
图1.13
这个步骤中,“行数据权限”可以用来限制用户查询某些具体行数据的权限(行数据权限的设置以及其他高级功能的使用方法请查阅数据引擎相关文档)。
1.3 SQL脚本查询(含存储过程)
在图1.1步骤中选定“SQL脚本查询”,点击“下一步”则进入SQL脚本查询类型的数据源定义:
图1.14
SQL脚本查询类型又分为SQL脚本和存储过程两个类别,可通过第一个页签的左上端的下拉列表中选择相应的类别(具体如何定义两种类别请查阅数据引擎相关文档)。其他三个页签中,“查询结果列”和“过滤条件设置”已经在前面的单元中说明,此处不在详述。其中,这种数据源类型有一个“查询参数设置”页签,如下图:
图1.15
如果脚本类型中选择的是“存储过程”,则此处可以使用“刷新”按钮来获取存储过程所需要的参数;而SQL脚本类型则需要手动填写参数的信息。需要注意的是,参数的名称必须与存储过程或SQL 脚本的名称完全一致。运行时查询参数的具体值来源是通过过滤条件获得的,因此查询参数需要和过滤条件绑定在一起(绑定方法请参阅本手册2.2单元)。
由于很多存储过程的数据源内部处理时使用临时表,并且将此临时表的数据作为报表的数据源的物理表,因此,为提高效率,报表系统对此种类型的存储过程将直接使用其生成的临时表进行查询,而不再另外创建查询数据的临时表。为实现上述机制,存储过程需要提供一个名称为@tablename的字符串参数,报表系统在查询过程中调用该存储过程时,将对此参数传入一个数据库物理表名,存储过程内部处理数据时,需要将处理的最终结果填写到这个物理表中。需要注意的是,这个物理表需要在存储过程内部创建,从而可达到满足存储过程自身对表结构的控制。以下为一个存储过程例子:
CREATE PROCEDURE DataSourceBankInfo
(
@tablename NVARCHAR(200)
)
AS
-- 创建临时表
DECLARE @sql NVARCHAR(1000)
SET @sql = N'CREATE TABLE '+@tablename+'
(
银行编码 NVARCHAR(10) NOT NULL PRIMARY KEY,
银行名称 NVARCHAR(100) NOT NULL
)'
EXEC (@sql)
-- 向临时填入数据
SET @sql = N'INSERT INTO '+@tablename+' VALUES(N''01'', N''中国人民银行'')'
EXEC (@sql)
报表系统将以如下方式调用此存储过程(参数串仅为例子):
EXEC DataSourceBankInfo N'the_bank_name_0923485756'
而在获取数据时,报表系统进行如下查询:
select * from the_bank_name_0923485756
1.4 自定义查询
自定义查询是指提供一个COM组件(通常为VB6.0组件)
或.NET组件(通常为C#组件)来提供获取数据的方法(SQL脚本,存储过程或数据库临时表)。关于自定义查询组件的建立方法请参阅本手册3.2单元。
在图1.1步骤中选定“自定义查询”,点击“下一步”则进入自定义查询类型的数据源定义: