UAP报表开发手册.doc
《UAP报表开发手册.doc》由会员分享,可在线阅读,更多相关《UAP报表开发手册.doc(32页珍藏版)》请在冰豆网上搜索。
UAP报表开发手册
说明:
本手册是对报表帮助文档的补充,在看本手册前建议先看报表的帮助文档
1.数据源定义
报表数据源可分为实体关系查询,SQL脚本查询和自定义查询三个类型,如下图所示:
图1.1
其中数据源名称和数据源描述是为了标识数据源以及说明数据源的功能。
1.1查看或修改现有数据源
“查看或修改现有数据源”是指对原先已经创建的数据源进行修改(系统预置的数据源不允许修改),或者可以在新建报表时选择已存在的数据源,如下图:
图1.2
选“下一步”:
图1.3
则列所有已存在的数据源,选择其中一个,按“下一步”:
图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.3SQL脚本查询(含存储过程)
在图1.1步骤中选定“SQL脚本查询”,点击“下一步”则进入SQL脚本查询类型的数据源定义:
图1.14
SQL脚本查询类型又分为SQL脚本和存储过程两个类别,可通过第一个页签的左上端的下拉列表中选择相应的类别(具体如何定义两种类别请查阅数据引擎相关文档)。
其他三个页签中,“查询结果列”和“过滤条件设置”已经在前面的单元中说明,此处不在详述。
其中,这种数据源类型有一个“查询参数设置”页签,如下图:
图1.15
如果脚本类型中选择的是“存储过程”,则此处可以使用“刷新”按钮来获取存储过程所需要的参数;而SQL脚本类型则需要手动填写参数的信息。
需要注意的是,参数的名称必须与存储过程或SQL脚本的名称完全一致。
运行时查询参数的具体值来源是通过过滤条件获得的,因此查询参数需要和过滤条件绑定在一起(绑定方法请参阅本手册2.2单元)。
由于很多存储过程的数据源内部处理时使用临时表,并且将此临时表的数据作为报表的数据源的物理表,因此,为提高效率,报表系统对此种类型的存储过程将直接使用其生成的临时表进行查询,而不再另外创建查询数据的临时表。
为实现上述机制,存储过程需要提供一个名称为@tablename的字符串参数,报表系统在查询过程中调用该存储过程时,将对此参数传入一个数据库物理表名,存储过程内部处理数据时,需要将处理的最终结果填写到这个物理表中。
需要注意的是,这个物理表需要在存储过程内部创建,从而可达到满足存储过程自身对表结构的控制。
以下为一个存储过程例子:
CREATEPROCEDUREDataSourceBankInfo
(
@tablenameNVARCHAR(200)
)
AS
--创建临时表
DECLARE@sqlNVARCHAR(1000)
SET@sql=N'CREATETABLE'+@tablename+'
(
银行编码NVARCHAR(10)NOTNULLPRIMARYKEY,
银行名称NVARCHAR(100)NOTNULL
)'
EXEC(@sql)
--向临时填入数据
SET@sql=N'INSERTINTO'+@tablename+'VALUES(N''01'',N''中国人民银行'')'
EXEC(@sql)
报表系统将以如下方式调用此存储过程(参数串仅为例子):
EXECDataSourceBankInfoN'the_bank_name_0923485756'
而在获取数据时,报表系统进行如下查询:
select*fromthe_bank_name_0923485756
1.4自定义查询
自定义查询是指提供一个COM组件(通常为VB6.0组件)或.NET组件(通常为C#组件)来提供获取数据的方法(SQL脚本,存储过程或数据库临时表)。
关于自定义查询组件的建立方法请参阅本手册3.2单元。
在图1.1步骤中选定“自定义查询”,点击“下一步”则进入自定义查询类型的数据源定义:
图1.16
其中数据服务信息指的是自定义组件的相关信息,关于自定义查询组件的建立方法请参阅本手册3.2单元。
2.报表过滤条件
2.1过滤条件设计
除了UAP本身单独提供了过滤条件的设计工具,报表本身也提供了专门为报表设计过滤条件的快捷方式。
以下是报表设计过滤条件的入口:
图2.1
图2.2
点击“标准条件”进入过滤条件设计器:
图2.3
界面说明:
是否支持高级条件:
选此项后,在运行时过滤窗口中会出现“高级条件”页签,用于用户自由选择过滤条件的组合。
规则组件:
此项定义由过滤控件回调的规则组件类。
是否取消二次开发:
此复选项只有在以“U870”项目进入UAP时才会显示,如果被选中,那么以其它项目进入UAP的过滤设计器不能新增和删除过滤条件。
此处可新增或修改一个过滤条件。
双击某个已存在的过滤条件,则进入这个条件的修改界面:
图2.4
界面说明:
语种:
设置过滤条件项显示的语种。
中文简体名称:
过滤条件项的键值,唯一标识此过滤条件项,不能重复。
可以以字母、数字或汉字来命名。
标题:
在运行时过滤窗口中显示的文字,支持多语种设置。
编辑类型:
过滤条件项的类型,分别为文本框、参照、日期、数字、枚举、SQL语句、自定义。
参照ID:
当编辑类型选择参照类型后,必须选定一个参照ID。
比较符:
过滤条件项比较符号。
小数位数:
当编辑类型为数字类型时,此选项可以设置小数位数。
分组:
为过滤条件选定一个分组,在运行时将按照分组来显示过滤条件项。
数据源:
为过滤条件项选定数据源,可以下拉选择或直接手工输入。
顺序号:
指定过滤条件项在运行时显示的位置,如果不输入,将自动产生。
是否常用条件:
如果选中,将在运行时显示在“常用”页签中。
是否必输:
如果选中,在运行时必须输入值,否则会出现提示信息。
是否区间条件:
如果选中,在运行时将显示为两个输入框组合而成的形式,表示从值1到值2的意思。
在运行时,用户选择或输入的不是单值,而表示一个取值范围。
是否多选:
如果选中,表示此过滤条件项可以选择多个值。
允许用户修改比较符:
如果选中,用户在运行时可以通过滤设功能改变比较符。
作为或条件:
如果选中,在运行时将以“或”条件来组合到过滤条件生成的SQL语句中,默认是以“与”条件组合的。
参照返回字段:
当编辑类型为参照类型时,此选项表示参照返回的是哪个字段的值。
编码对应参照中的主键字段,名称对应参照中的描述字段。
也可以手工输入要返回的字段名,一定要与参照中的字段名一致。
默认值、到:
设置过滤条件项的默认值,将在运行时自动显示。
如果为区间条件,可以设置“到”默认值。
修改界面的第二个页签是过滤条件项窗口枚举:
图2.5
界面说明:
枚举(aa_enum):
指在U861中使用的枚举型,此类型是在AA_Enum数据表中定义的。
枚举类型,枚举类型名称,是EnumType字段值。
默认显示,在运行时当用户点击下拉按钮后显示的可供选择的项,注意是以“,”分隔的EnumCode字段的值。
枚举类型:
指明在Meta库中的MetaEnumDef表中的枚举,对应MetaID字段。
枚举串:
如果没有在数据库中预制枚举类型,也可以通过此项输入一个枚举串。
格式为“0{#}1{##}A{#}B”,在“{##}”前的为返回值,之后的则为显示值,并且在返回值与显示值中分别以“{#}”分隔。
只能定义以上三种枚举中的一种,否则会出现提示信息。
修改界面的第三个页签是过滤条件项窗口SQL语句:
图2.6
界面说明:
SQL文本框:
在SQL文本框中输入SQL语句,可以不用加别名。
标题:
在运行时中显示的列标题,标题数量与上面的SQL的字段对应,并用“,”分隔,例如“标题1,标题2”。
返回字段:
用此字段的值构成过滤控件返回调用者的过滤SQL语句。
显示字段:
显示在运行时过滤窗口中的值。
在U870中,SQL语句类型的过滤条件主要为兼容以前版本,所以如果在U870中新建过滤条件时,请不要选用SQL语句类型,而改用参照类型。
修改界面的第四个页签是过滤条件项窗口SQL语句:
图2.7
属性说明:
参照样式:
当编辑类型选择为参照类型时,可以指定参照的样式,分别为弹出式和下拉式,默认为弹出式。
关于过滤最后值得特别指出的是,过滤条件之间可控制相互关系,例如两个过滤条件都有参照,则可控制其中一个过滤条件的参照取值范围由另一个过滤条件的取值来决定。
此外还存在其他相关控制行为,这些功能都是通过规则组件来实现的。
关于规则组件的详细实现,请参阅过滤条件的相关文档。
2.2过滤条件与数据源的关系
此处主要说明如何把过滤条件跟数据源关联起来,以达到由用户输入来实现查询不同数据的目的。
对于实体关系类型的数据源,只要在过滤条件的基本属性页中选择数据源的相应列就能实现,如下图:
图2.8
用户就可以在查询报表时进行过滤:
图2.9
对于SQL脚本类型的数据源,无论是简单的sql脚本类型还是存储过程,都是通过将其参数与过滤条件进行绑定来实现的。
如下图:
图2.10
过滤条件与sql脚本或存储过程的联系可分别有两种方式:
1.从过滤条件传入单个参数。
假如sql脚本或存储过程中有两个参数分别为:
@planid和@depcode,则必须要在数据源设计时的“查询参数设置”页签中分别为每一个参数设置其相关信息。
然后再设计过滤条件:
图2.11
此处需要注意的是,“名称”必须以这样的规则命名:
“查询参数设置”的参数为@pram,则“名称”为parm,两者之间相差一个符号“@”,并且同时可在数据源下拉列表里指定其对应某个数据源(数据源的下拉列表是由数据源设计的“过滤条件设置”页签中的内容决定的)。
需要注意:
此处过滤条件名称的命名方式与其指定哪数据源项没有必然的联系,各有各的作用,具体请参照方式2的例子。
2.整体参数传入。
如果SQL脚本或存储过程提供了一个名称为@filterstring字符串参数,则调用时此参数的内容为组织好的的一个条件SQL串,其包括的组织项为上述方式1中指定的数据源项,其具体组织成的内