您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > UAP报表二次开发手册
UAP报表二次开发手册v.8711.数据源定义报表数据源可分为实体关系查询,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.14SQL脚本查询类型又分为SQL脚本和存储过程两个类别,可通过第一个页签的左上端的下拉列表中选择相应的类别(具体如何定义两种类别请查阅数据引擎相关文档)。其他三个页签中,“查询结果列”和“过滤条件设置”已经在前面的单元中说明,此处不在详述。其中,这种数据源类型有一个“查询参数设置”页签,如下图:图1.15如果脚本类型中选择的是“存储过程”,则此处可以使用“刷新”按钮来获取存储过程所需要的参数;而SQL脚本类型则需要手动填写参数的信息。需要注意的是,参数的名称必须与存储过程或SQL脚本的名称完全一致。运行时查询参数的具体值来源是通过过滤条件获得的,因此查询参数需要和过滤条件绑定在一起(绑定方法请参阅本手册2.2单元)。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脚本或存储过程中有两个参数分别为:@planid和@filterstring,则必须要在“查询参数设置”页签中分别为每一个参数设置其相关信息。然后再设计过滤条件:图2.11此处需要注意的是,“中文简体名称”必须以这样的规则命名:“查询参数设置”的参数为@pram,则“中文简体名称”为parm,两者之间相差一个符号“@”。需要指出的是虽然SQL脚本可以通过参数来绑定过滤条件,但是过滤条件绑定到参数的同时,还必须为此过滤条件指定一个数据源查询结果列,查询时输入的过滤条件对该返回结果列同样起作用。对于自定义的数据源的过滤条件绑定与实体关系得数据源相似,但是设计者需要在自定义组件中自己处理由用户输入信息构成的sql串来实现对查询结果的过滤。3.报表系统API3.1自定义报表查询入口所谓自定义报表查询入口指的是用UAP设计了一张自定义报表,除了默认的查询入口:门户-视图-我的报表-自定义报表,另外为此报表设置单独的菜单节点来进行查询。只要在此节点的点击事件处理函数中调用报表系统的以下接口就可实现:A.PublicFunctionOpenReport(_sReportIDAsString,_objU8LoginAsObject,_OptionalsubidAsString=,_OptionalrawfilterAsObject=Nothing)AsBooleanB.PublicFunctionOpenReportNoneFilterUI(_sReportIDAsString,_objU8LoginAsObject,_OptionalsubidAsString=,_OptionalrawfilterAsObject=Nothing)AsBoolean接口功能及使用说明:这两个接口是对象ReportService.clsReportManager中的函数;需要引用组件:ReportService.dllUFIDA.U8.UAP.Services.ReportFilterService.tlb这两个接口的功能是打开一张报表,两个接口的差异在于前者在打开报表之前会先显示过滤界面,而后者不会(例如在使用联查报表的时候有时不需要进行过滤)。此接口在业务组在其需要打开一张报表时调用。参数介绍:sReportID:报表的ID,即将要打开的报表标识。objU8Login:U8的Login对象,注意:这个对象必须是COM封装的Login。subid:报表所属的子产品号,这个参数是可选的。注意:当指定了此参数,接口会在随后的处理中按照subid[__]sReportID的规则拼接成真正的报表ID。rawfilter:可选过滤条件对象(UFGeneralFilter.FltSrv或自定义的过滤条件对象),此对象中必须是ISelfFilter(见第四个接口)的一个实现。这个参数通常报表的自定义行为(如联查)时,需要有过滤的情形时会使用到。至于怎么在U8中设置自己的菜单节点,请参阅U8门户相关文档。3.2自定义数据源组件报表的自定义数据源是指单独写一个组件来提供报表数据,这种数据源实现方法的优点强大的数据处理能力,这是其他类型的数据源所不具备的。实现方法为:组件中必须实现以下接口:publicinterfaceIGetSql{voidGetSql(IFilterArgse);}接口功能及使用说明:此接口为报表提供自定义数据源。组件的提供方式为首先提供一个实现IGetSql的组件(COM组件只需有一个声明相同的GetSql函数的类即可),之后将其绑定到报表的数据源(具体方法是请参考本接口示例)。组件的工作方式为报表系统会在展现
本文标题:UAP报表二次开发手册
链接地址:https://www.777doc.com/doc-4407209 .html