UAP报表开发手册 联系客服

发布时间 : 星期日 文章UAP报表开发手册更新完毕开始阅读

对于SQL脚本类型的数据源,无论是简单的sql脚本类型还是存储过程,都是通过将其参数与过滤条件进行绑定来实现的。如下图:

图 2.10

过滤条件与sql脚本或存储过程的联系可分别有两种方式: 1.从过滤条件传入单个参数。假如sql脚本或存储过程中有两个参数分别为:@planid和@depcode,则必须要在数据源设计时的“查询参数设置”页签中分别为每一个参数设置其相关信息。然后再设计过滤条件:

图 2.11

此处需要注意的是,“名称”必须以这样的规则命名:“查询参数设置”的参数为@pram,则“名称”为parm,两者之间相差一个符号“@”,并且同时可在数据源下拉列表里指定其对应某个数据源(数据源的下拉列表是由数据源设计的“过滤条件设置”页签中的内容决定的)。需要注意:此处过滤条件名称的命名方式与其指定哪数据源项没有必然的联系,各有各的作用,具体请参照方式2的例子。

2.整体参数传入。如果SQL脚本或存储过程提供了一个名称为@filterstring字符串参数,则调用时此参数的内容为组织好的的一个条件SQL串,其包括的组织项为上述方式1中指定的数据源项,其具体组织成的内容请参阅下述例子。此种方式的目的主要为了方便数据源提供者使用全部的过滤条件。

以下为一个存储过程例子(假设使用以上的参数设置): 存储过程为:

Example_Procedure ( @planid nvarchar(10),

@depcode nvarchar(10),

@filterstring nvarchar(200)

)

如果查询报表时的输入为: planid 1000 depcode AZ786

则报表系统将以如下方式调用存储过程:

exec Example_Procedure '1000', 'AZ786',

'1=1 and planid=''1000'' and depcode=''AZ786'''

数据源设计者可根据此种调用方式来设置参数的使用情况,其中需要指出的是,@filterstring中planid=''1000''的planid是数据源设计的“过滤条件设置”页签中的“过滤条件名称”,设计者需要正确的设置此名称才能使@filterstring在数据源内部能够正确使用。同时可归纳出,方式1中“名称”的命名影响存储过程具体参数的绑定,而数据源的指定影响@filterstring中具体内容的拼接。

3. 报表系统API

3.1 自定义报表查询入口

所谓自定义报表查询入口指的是用UAP设计了一张自定义报表,除了默认的查询入口:门户->视图->我的报表->自定义报表,另外为此报表设置单独的菜单节点来进行查询。只要在此节点的点击事件处理函数中调用报表系统的以下接口就可实现:

A.

Public Function OpenReport( _

sReportID As String, _ objU8Login As Object, _

Optional subid As String = \

Optional rawfilter As Object = Nothing) As Boolean B.

Public Function OpenReportNoneFilterUI( _

sReportID As String, _ objU8Login As Object, _

Optional subid As String = \

Optional rawfilter As Object = Nothing) As Boolean

接口功能及使用说明:

这两个接口是对象ReportService.clsReportManager中的函数; 需要引用组件: ReportService.dll

UFIDA.U8.UAP.Services.ReportFilterService.tlb

这两个接口的功能是打开一张报表,两个接口的差异在于前者在打开报表之前会先显示过滤界面,而后者不会(例如在使用联查报表的时候有时不需要进行过滤)。此接口在业务组在其需要打开一张报表时调用。

参数介绍: sReportID:

报表的ID,即将要打开的报表标识。 objU8Login:

U8的Login对象,注意:这个对象必须是COM封装的Login。 subid: