自定义报表开发指南_第1页
自定义报表开发指南_第2页
自定义报表开发指南_第3页
自定义报表开发指南_第4页
自定义报表开发指南_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自定义报表1UFSOFTU860自定义报表应用指南自定义报表2目录前言5第一章浏览自定义报表功能711自定义数据源712自定义格式713自定义条件714按任意列分组汇总715交叉表和多元交叉表716分组打印功能817支持动态列和列间运算818查询条件存储819高级条件输入方式和模糊参照8110标签数据源和标签之间的运算8111丰富的数据显示格式9112支持多层列标题9113打印设置及打印输出9114报表展现时鼠标右键功能9115U8特性9116权限控制9117二次开发接口10118WEB功能10第二章定义报表数据源1021数据源定义窗口中菜单/按钮含义说明1022使用向导定义一个最简单的数据源1123选择多张表,建立关系1324选择字段,设置分组、排序方式和准则1625选择交叉表和多元交叉表19第三章定义报表格式2131格式定义窗口中菜单/按钮操作说明2132格式定义窗口中的基本操作24321如何调整报表中各栏目位置/大小24322如何调整各区域的高度25323如何设置根据某一对象进行连续分页打印25324如何增加表头表尾信息25325如何新增一列报表数据30325如何删除已经存在的数据列33326如何设置多层表头报表34327如何设置每页打印的行数及行高34第四章定义查询条件3741定义过滤条件37411如何新增一项过滤条件37412如何修改一项过滤条件42413如何删除一项过滤条件42自定义报表342定义展开条件42421展开条件的用途42422如何新增一项展开条件45423如何删除一项展开条件45第五章报表查询4651查询条件的输入46512过滤条件的输入46513高级过滤条件的输入46514分组汇总条件的选择47515展开条件的选择4952查询结果界面中的各种方便功能49521工具条上按钮的用法49522右键菜单中的功能用法50523其他方便用法50第六章权限控制5261报表的功能权限控制5262报表的数据权限控制52第七章用自定义报表控件编程5571初始使用自定义报表55711引用自定义报表组件55712使用数据源定义工具56713使用格式定义工具57714初始化查询分析器58715打开自定义报表5972使用报表数据源接口61721报表数据源接口模板61722创建和使用数据服务63723使用过滤条件6673使用报表事件回调功能71731实现下钻功能71732实现外部参照72733响应报表其他事件74734管理报表数据源7474动态改变报表格式77741显示和隐含列77742动态增加计算列78743重新设置分组和排序规则79744动态生成双层标题8075使用储过程作为报表数据源81第八章在WEB上展现自定义报表8381扩展的数据源接口模板83附录UFHERONREPORT部件参考861对象层次结构862常用类属性和方法参考87自定义报表421CLSSYSINTERFACE报表接口类8722CLSREPORT报表抽象类8823CLSREPORTMANAGER报表管理类8824CLSFILTER过滤条件抽象类9225CLSSPREAD展开条件抽象类9226CLSREPORTFILTER条件管理对象9327CLSREPCOL报表列抽象类9628CLSTITLE报表标题抽象类9729CLSREPORTFORMAT报表格式管理对象97自定义报表5前言在U8开发和维护的过程中我们经常要根据用户的需求开发各式各样的报表,尽管我们很努力但依然不能及时满足用户的要求。怎样解决这个问题呢是否可以让用户自己设计需要的报表即便由程序员来开发报表,其开发效率又如何提高自定义报表正是基于上述目标开发的报表设计工具。从设计角度看,任何一张报表都由数据,格式和条件三部分组成;我们据此设计了一些可视化工具,用户可以通过这些工具设计出报表。在这三部份当中我们唯一无法穷举的是数据,因此也无法设计出一个能涵盖所有可能情况的数据查询设计器。我们将这个问题一分为二来解决数据查询算法可分为简单算法和复杂算法两种,对于简单算法我们提供了一个数据查询设计器,复杂算法则交给程序员去完成,并假设每个查询算法都会返回一个包含结果的二维临时表。这就是U860自定义报表的核心设计思想。U860自定义报表是一个全新的报表设计工具,它由报表数据查询定义工具,报表格式定义工具和查询分析器三个部件组成;数据查询定义工具用于定义报表的数据来源,格式定义工具用于定义报表的显示打印格式以及报表的查询条件,查询分析器用于展现报表。U860自定义报表兼容以前版本的自定义报表,但只对数据源进行升级,对于格式则需要重新定义,新自定义报表提供了全新的打印和显示格式。U860自定义报表还提供了自动匹配自定义项,按编码及次展开列等具有U8特色的功能,控件提供的专用接口能使报表获得很多U8的特性,这也是使用其它工具无法做到的。在应用自定义报表的过程中我们感到最困难的是向使用者介绍自定义报表的功能。要用好自定义报表就必须全面的了解它并理解其中的一些原理;自定义报表不仅是一个可视化工具,而且提供了大量的二次开发接口,使用这些接口可定制出更复杂,功能更强的报表。为了帮助广大用户用好自定义报表,最大限度地发挥自定义报表的潜力,我们编写了这篇应用指南。本书力图系统全面的介绍自定义报表。全书共分两部分第一部分详细介绍自定义报表的功能,在介绍功能时尽量从原理开始介绍;第二部分介绍二次开发接口,在最后一章还介绍了自定义报表在WEB上的应用,这是自定义报表的一个亮点,也是将来我们努力的方向。U860自定义报表负责人20050422自定义报表6第一部分使用自定义报表自定义报表7第一章浏览自定义报表功能11自定义数据源数据源是一组用于描述报表数据来源的SQL查询语句,自定义报表存储该语句在打开报表时按语句的描述从数据库中查询指定的数据;由于SQL语句过于专业,因此系统提供了简单易懂的查询定义工具;该工具可支持常用的SQL语法。12自定义格式自定义报表用区域,标签,列和列标题四种对象及其组合描述了报表的显示和打印格式。区域描述报表布局,标签描述报表中的一个数据点,多个列描述报表表体上的数据行,列标题则显示报表各列的含义;标签,列和列标题都位于区域上。每一种对象都有各自的专用属性,对象的属性决定了对象的状态,报表上所有对象的状态则决定了报表最终显示和打印效果。13自定义条件用户在查询报表时通常希望用到条件,自定义报表允许用户设置任意数目的条件项。每个条件项有单值条件和区间条件两种类别,其中单值条件用于XXXXXX方式的查询,区间条件则用于XXX(从XXX到XXX)方式的查询;如果被查询列的数据类型是字符,系统还提供了多种模糊匹配方式。系统为条件项提供了多种不同类别的参照方式,用户甚至还可以自定义参照,可设置参照值返回列,参照值可多选。14按任意列分组汇总分组就是将组列中值相同的行合并成一行,对于没有被选为分组列的其它列,数值列进行合计,非数值列任选其中行。系统允许用户选择多列按任意顺序组合进行分组。有了该功能我们就可以将一张明细表变成许多按不同条件汇总的统计表。可以在在分组后加上小计和累计行,还可以计算总合计;可以设置某数值列是否在汇总行显示合计数,或在汇总行进行特殊运算。15交叉表和多元交叉表U860自定义报表继承了以前版本的交叉表功能,使用比以前更加简单;多元交叉表则是在原有基础上的功能扩展,以前版本只能定义一个交叉点,现在则可以定义多个交叉点。自定义报表8交叉表如果同按任意列分组汇总功能结合使用,则会有更好的效果。16分组打印功能一旦在报表格式中设置了分组列的分组打印区域,报表打印时会在不同的数据组开始进行拆页;可在分组区域添加数值列的分组合计数,在页首和页脚注区域添加数值列的页合计和页累计数;还可以通过设置将与分组相关的信息打印到表头或表尾。17支持动态列和列间运算自定义报表支持计算列,报表中某列的值可由其它数值列通过算术运算得到,支持嵌套的列间计算。除算术四则运算之外,报表还支持列间差分和积分运算。可以在汇总行进行算术运算,为了与差分和积分运算相适应,系统专门设计了作用于汇总行的余额汇总方案。针对那些列随初始条件不同而变化的分析型报表,自定义报表设计了对应的动态列支持功能。18查询条件存储在查询数据时当前数据的条件可以按方案保存,下次输入时可直接选择方案;可以存储默认方案存储,第二次查询时自动显示默认查询方案;如果将为某条件项设置了自动存储上次输入属性,则系统将输入值存储成默认方案。19高级条件输入方式和模糊参照在普通条件输入方式下条件项之间的逻辑关系类似XXXXXX并且XXXXXX,而高级条件输入方式则支持类似XXXXX或XXXXX的逻辑关系。参照输入条件值时可以进行模糊参照,其中列表参照可以设置在那几列上进行模糊匹配。110标签数据源和标签之间的运算标签是设置在报表表头或表尾的一个数据显示单元,利用标签可以丰富报表表头和表尾的数据显示,标签有四种数据源静态文本SQL查询可查询到当前数据库中任何一点的数值公式标签公式分成四类返回特殊值的公式如返回当前日期,公司名称,页号等统计公式计算报表某列的总计,页小计等功能。取值公式可以取输入的条件值,分组列值U8应用服务公式表达式在标签之间执行算术运算和合并运算自定义报表9111丰富的数据显示格式可以设置列和标签的数值显示格式,比如日期显示格式和数值显示格式等。数值可以设置数据显示精度,百分比格式等。在列的格式中还支持特殊的行百分比显示格式。112支持多层列标题可根据实际报表标题的式样在格式中画出多层标题,系统最大可支持五层列标题的。可在数据源不断变化的情况下按指定的格式动态的生成双层标题。113打印设置及打印输出可以为没张报表指定不同的打印机输出,可设报表对应的纸张类型和页边距;可设置打印的行高和每页打印的行数,支持报表套打。114报表展现时鼠标右键功能用鼠标可以改变列的对期方式,列宽等格式属性,可直接存储。可以对当前列进行升序或降序排列,支持行定位功能。右键过滤功能,支持列间运算,能进行类似列1列2列31000的比较,可按关键字NULL进行过滤。如果列标题名与条件项标题相同,则过滤和定位是可以借用其参照。115U8特性自动匹配U8数据精度设置。使用U8常用参照。标签公式可以调用所有的U8应用服务公式。自动匹配U8自定义项和自由项。按编码级次方案展开列,对上级编码进行分组汇总。同U8账簿集成。融合U8功能权限和数据权限控制。116权限控制自定义报表共有三级权限控制,报表设置权限,报表功能权限和记录权限。自定义报表10117二次开发接口对于包含复杂数据源的自报表,我们只能借助自定义报表的二次开发接口生成数据源,理论上用自定义报表控件的二次开发接口可以定义出任意复杂的报表。118WEB功能在C/S系统上定义的自定义报表可以在WEB业务系统上显示。第二章定义报表数据源21数据源定义窗口中菜单/按钮含义说明1、新建()新建一个报表的数据源定义,系统将进入数据源定义向导界面。2、保存()将当前报表的数据源定义进行保存,对于新建报表,系统会弹出报表名称输入界面供用户报表;对已经存在的报表,系统自动进行数据源覆盖保存。3、退出退出报表数据源定义窗口。4、定义表间关系()选择表间关系定义窗口是否显示。5、定义选择查询()设置数据栏目的选择窗口是否显示。6、显示SQL语句()选择已经生成的SQL语句或者说是SQL语句的输入窗口是否显示。7、预览查询结果()选择是否模拟显示当前设置的取数方式查询出来的数据结果窗口。8、刷新刷新数据源定义窗口的显示。9、交叉表查询选择是否需要进行交叉表设置,当选择需要进行交叉表定义时,系统会自动在数据字段定义列表中增加一列交叉表。10、添加表()添加数据表操作,系统会弹出如图231界面。11、生成SQL语句将数据源字段选择列表中设置的信息转化生成SQL取数语自定义报表11句,可以对生成的SQL语句进行直接输入或修改,当前报表最终保存的结果完全根据SQL输入窗口中的SQL语句进行保存。所以,如果你改变了数据源的设置,并且希望能够将这种变化保存下来,你必须先选择生成SQL语句。12、查看结果()根据当前定义的数据源信息直接查询出数据列表,并显示。当用户还没有输入或生成SQL查询语句时(新建表),系统将自动将数据字段选择列表中输入的信息转化生成SQL取数语句后再执行该语句,并根据该语句查询出数据记录且显示结果列表。(这种情况相当于包含了生成SQL语句处理)当用户已经输入了SQL取数语句或已经生成过SQL语句(修改表),则系统将根据当前已经存在的SQL语句进行取数并显示结果。所以,你在修改完数据源设置后除了需要先重新生成SQL语句外,还必须点击该按钮或该菜单以进行SQL语句的执行处理,然后再去做保存工作。若设定了交叉表,则在此不提供查看结果,但也必须在保存设置之前点击该按钮或该菜单以进行SQL语句的执行处理,然后再去做保存工作。22使用向导定义一个最简单的数据源作为一个初级用户,可以利用系统提供的向导定义一个最简单的报表数据源,作为自定义报表的初步尝试之用。具体步骤如下步骤一在我的账表主界面中选择一个账夹后点击新建按钮,系统会显示报表的数据源定义窗口,如图221。自定义报表12图221步骤二在报表数据源定义界面中点击按钮或者选择文件菜单下的新建子菜单,系统自动弹出数据源选择界面(如图222),用户可以在该界面中需要取数的数据表名和对应的字段信息,双击字段名称即可以做到选择或不选的处理效果。选择完字段信息后点击完成按钮即能回到报表数据源定义主界面中。图222步骤三点击报表数据源定义主界面上的按钮,或者选择运行菜单下的生成SQL语句子菜单,此时系统会自动根据步骤二中选择的数据表和字段信息生成对应的SQL取数语句,然后再点击工具条上的按钮或者选择文件菜单下的保存子菜单,系统会自动弹出报表保存窗口,在此窗口中输入对应的报表名称后点击OK按钮即可。自定义报表13到此,一个最简单的单表取数的数据源定义过程全部完成,退出报表数据源定义界面后点击我的账表界面中的刷新按钮后即可看到刚定义完毕的报表名称。报表的保存界面如图223。图22323选择多张表,建立关系在应用自定义报表取数时,单表取数一般很难满足绝大多数用户的要求,所以更多的情况会在多张数据表中进行联接取数。下面就是定义多张数据表作为数据源的具体过程步骤一在报表数据源定义主界面中点击按钮或者选择运行菜单下的添加表子菜单,系统自动弹出数据表选择界面(如图231),在该界面中找到需要取数的数据表后双击该表即可以将该表选入。若本次选择了三个表,则会出现如图232的效果。提示1在选择数据表时可能会有比较难找的感觉,用户若对数据表比较熟,则可以采用如下方式进行快速定位。先任意选中一个数据表,然后输入你想找到的数据表名称,系统会自动根据输入的名称进行(A)左匹配方式快速定位到第一个满足条件的记录上。提示2系统会自动将第一个被选入的表作为主表,若想删除主表必须先删除其他的数据表,选中已经选入数据表中的任意一个字段后点击键盘上的DELETE按钮即可以删除该数据表。自定义报表14图231图232步骤二选择完数据表后即可建立表间关系,用选中表中一个字段后按住鼠标左键不放,然后拖向另一个表中的对应字段,系统就自动会将这两个表通过这两个字段建立关系。图233是一个已经建好表间关系的窗口事例。提示一在实际应用中,需要建立表间关系的字段一般均有实际意义上的关联,否则即使建立关联后也会起不到什么作用。如在应收明细账中有各个客户的明细应收记录,但均是按客户编码进行存放的,而用户在查看数据时一般需要按客户名称来查,所以此时就可以将应收明细表中的客户编码字段和客户档案中的客户编码字段作一个关联,然后就能直接将应收明细数据按客户名称进行显示。提示二双击关系线上的绿色圆圈,就可以明细地显示该关系信息,如图234。系统支持三种关系模式的建立只包含来自两个表的关联字段相等行、包含主表中所有行和参自定义报表15照表中关联字段相等处的行、包含参照表中所有行和主表关联字段相等处的行。提示三若想删除已经建立好的表间关系,则选中该关系线的绿色圆圈后点击键盘上的DELETE按钮即可以删除该关系。提示四第一个被选入的表(即主表)不能作为建立关联中的目标表(即参照表),有多个表需要建立表间关系时,不能将这种关系形成一个循环。如A表B表,B表C表,C表A表,这种关系不支持。图233图234自定义报表1624选择字段,设置分组、排序方式和准则在数据源定义的整个过程中选择字段应该说是非常关键的一步,因为它将直接关系到报表的数据显示结果。选择字段的具体操作方式有如下几种1、在类似如图233界面中双击需要在报表中用到的字段名称即可将该字段选入报表栏目选择列表中,自动填写列名、别名、表名、表定义四列内容。2、在报表栏目选择列表中直接可以输入需要在报表中显示的字段内容。栏目选择列表中各列分别有如下作用列输入报表中需要显示的数据列内容,如输入AP_DETAILIPERIOD或IPERIOD。即可以输入表名字段名、字段名或者一个取数公式。当输入表名字段名形式是不需要再在后续的表名栏目中输入数据表名称。别名当前数据列在报表中所显示的缺省名称,输入合法字符即可,如将上述的IPERIOD数据列取名为会计期间。表当前字段所在的数据表名,必须与系统所提供的表名保持完全一致,如AP_DETAIL。表定义即对数据表的一个说明,输入合法字符即可,如将上述AP_DETAIL数据表定义叫做应收应付明细账。排序类型当前数据列在报表中的排序方式,可以选择设置为降序、升序和不排序。分组当前数据列在报表中取数的规则,可以选择设置分组列、合计、计数、平均、最大值、最小值、不设置。对应每一个设置的具体取数规则如下分组列根据当前数据列进行汇总统计显示数据,后续所有的合计、计数、平均、最大值、最小值取数均根据该分组项进行分别取数。分组列的语法用GROUPBY。合计取当前数据列的合计数据,合计列的语法用SUM()。计数取当前数据列在数据表中出现的记录数进行计数,计数列的语法用COUNT()。平均取当前数据列的平均值,平均列的语法用AVG()。最大值取当前数据列的最大值,最大值的语法用MAX()。自定义报表17最小值取当前数据列的最小值,最小值的语法用MIN()。不设置直接取当前数据列的所有原始记录值。注意在数据选择列表中只要有一条记录设置了分组信息,则其他所有记录也必须设置分组信息,而且必须保证其中有一条是作为分组列。示例若有一张对客户开票的数据表,具体如下客户部门开票日期开票单价开票数量开票金额001A200202022030600002A200203011840720001C200205011920380003B200205051922418002A2002060621501050003D200208082230660004C200204012011220数据表1设置客户列为分组列、开票日期为最大值、开票单价为平均值、开票数量为合计值、开票金额为合计值,则将显示如下报表客户开票日期开票单价开票数量开票金额00120020501195509800022002060619590177000320020808205521078004200204012011220数据表2若再增设一列开票次数,可以将客户列设置成分组情况为计数,则将显示如下报表客户开票次数开票日期开票单价开票数量开票金额001220020501195509800022200206061959017700032200208082055210780041200204012011220自定义报表18数据表3准则输入取数的WHERE条件,上例中若你只想查看001客户的数据,你可以输入准则为001,系统自动拼出的取数条件为WHERE表客户001。或输入取数的WHERE条件,与准则中输入的条件和其他或栏目中输入的条件之间均是OR的关系。单行记录的SQL语句生成规则SELECT表列AS别名FROM表WHERE准则GROUPBY表列ORDERBY表列排序方式3、其他操作提示在列栏目中可以点击按钮,进入公式设置界面,即除了可以直接输入需要取数的字段名称外,还可以进行公式设置取数。公式设置界面如图241,具体可作如下设置文本函数算术函数日期函数列示当前所选数据表和字段内容。图241若想删除已经输入的数据列记录,则将列栏目中的内容清空即可。自定义报表1925选择交叉表和多元交叉表当用户对一张二维表需要根据某项进行横向展开统计时某几项数据时,可以采用交叉表的方式进行取数。需要定义交叉表时,先点击交叉表,系统自动会在字段选择列表中增加一列交叉表设置列。交叉表列具体可以设置如下内容1、交叉点即将当前数据列作为报表的主体统计数据列,只能将数值列(即数字)设为交叉点,本版支持一张报表设置多个交叉点,但至少必须设置一个。2、列标题即将当前数据列作为横向展开统计对象,一张报表只能设置一个列标题,且必须设置一个。3、行标题将当前数据列作为报表左边显示的行标题,一张报表可以设置多个行标题,但至少设置一个。4、一旦有字段记录设置了交叉表信息,则在字段选择列表中设置所有已经设置好的字段必须全部设上交叉表列中的内容。5、若想删除交叉表设置,可再次点击交叉表菜单,交叉表列自动会从数据选择列表中隐藏,此时重新生成一次SQL语句即可取消交叉表设置。6、示例若设置从数据表1中取数,先设置客户为分组列、部门为分组列、开票日期为最大值、开票数量为合计、开票金额为合计(根据客户部门进行升序排列),则系统将显示数据表4形式。客户部门开票日期开票数量开票金额001A2002020230600001C2002050120380002A20020606901770003B2002050522418003D2002080830660004C2002040111220数据表4在数据表4设置的基础上可以设置一张交叉表,主要可以横向查看对应每个客户的部门开票信息,此时可以将客户设置为行标题、开票日期也为行标题、自定义报表20部门为列标题、开票数量和开票金额为交叉点,则系统将显示数据表5形式。部门A部门B部门C部门D客户开票日期数量金额数量金额数量金额数量金额0012002020230600001200205012038000220020606901770003200205052241800320020808306600042002040111220数据表5此时在查询条件的分组信息中若选择按客户进行分组汇总,则将显示数据表6。部门A部门B部门C部门D客户开票日期数量金额数量金额数量金额数量金额001200205013060020380002200206069017700032002080822418306600042002040111220数据表6自定义报表21第三章定义报表格式31格式定义窗口中菜单/按钮操作说明1、保存报表格式()将当前设置好的报表格式进行保存处理。2、关闭格式定义关闭当前打开的报表格式。3、设置打印机()设置当前报表在打印时关于打印机及纸张的一些相关信息。4、退出退出格式定义窗口。5、复制()复制当前所选内容,该功能只对标签有效。6、粘贴()将复制内容进行粘贴处理,该功能只对标签有效。7、删除()删除当前所选内容。8、增加标签新增一个空的标签,这种标签除了不能增加在报表正文(即报表的列标题和报表数据列)区域外,其他地方均可以新增这种标签。操作时可以选中增加标签菜单后点击该标签所要放置的位置即可。9、增加列在报表正文的数据列设置区域中可以增加报表数据列。操作时可以选中增加列菜单后点击该标签所要放置的位置即可。10、增加列标题在报表正文的列标题设置区域可以增加报表标题标签。操作时可以选中增加列标题菜单后点击该标签所要放置的位置即可。11、上对齐()将当前所选对象的Y坐标全部根据当前所选对象中的最上边对象的Y坐标进行统一。12、下对齐()将当前所选对象的Y坐标全部根据当前所选对象中的最下边对象的Y坐标进行统一。13、左对齐()将当前所选对象的X坐标全部根据当前所选对象中的最左边对象的X坐标进行统一。14、右对齐()将当前所选对象的X坐标全部根据当前所选对象中的最右自定义报表22边对象的X坐标进行统一。15、对象自动横排将当前所选对象进行横向并排放置。16、对象自动竖排将当前所选对象进行纵向并排放置。17、属性显示报表的属性设置窗口(如图311),缺省显示当前所选对象的属性内容。选择编辑菜单下的属性子菜单、选择右键菜单下的属性菜单或者双击当前所选对象均可显示当前对象的属性窗口。图31118、显示可用字段视图显示当前报表已经定义的数据源、且没有在报表格式中应用的栏目列表,在该列表中可以选择需要在报表格式中显示的栏目,然后用鼠标直接可以拖到报表设置主界面上。19、显示分组列视图显示分组汇总依据设置界面(如图312),在该界面中可以设置报表在查询时需要根据哪些栏目进行汇总统计、是否需要小计、是否需要累计、是否需要根据分组项进行连续分页打印(包括分组项的标题区和分组项脚注区)。在图312界面中当选择以某列为分组汇总列时可以选择将该列作为分组打印列(即将分组打印列标题选择为显示),在分组打印标题区中设置的内容只能用于打印,且打印的内容可以根据分组项进行分别设置。在图312界面自定义报表23中当选择以某列为分组汇总列时可以选择将该列作为分组打印列(即将分组打印列脚注选择为显示),在分组打印脚注区中设置的内容只能用于打印,且打印的内容可以根据分组项进行分别设置。图31220、设置报表查询条件显示报表条件设置界面,在该界面中用户可以设置当前报表的查询条件输入项。21、标题区域显示报表标题内容的设置区域。在该区域中用户可以设置该报表标题、副标题或者其他说明内容的显示/打印格式及内容。该区域中设置的内容既作用于报表的查询显示也作用于报表的打印,该区域中设置的内容在报表打印的每一页均会打印出来。22、脚注区域显示报表脚注内容的设置区域。在该区域中用户可以设置该报表脚注或者其他说明内容的显示/打印格式及内容。该区域中设置的内容既作用于报表的查询显示也作用于报表的打印,该区域中设置的内容在报表打印的每一页均会打印出来。23、页标题区域显示报表页标题内容的设置区域。页标题区域中的内容可以根据每页进行设置,所设内容只能用于打印。24、页脚注区域显示报表页脚注内容的设置区域。页脚注区域中的内容可以根据每页进行设置,所设内容只能用于打印。自定义报表2425、正文区域显示报表正文列表(即报表数据列表)内容的设置区域。该区域是报表的主体部分,主要包括报表的列标题和数据列内容,该区域的内容只要设置为显示就会打印出来。26、菜单编辑恢复默认格式恢复报表默认设置(仅列格式)。32格式定义窗口中的基本操作321如何调整报表中各栏目位置/大小怎样操作一次选中多个对象用鼠标直接点击报表中的具体对象可以选中当前对象,若按住“CTRL”按钮后再用鼠标选择对象,则可以达到多选的效果。将光标放在报表格式设计界面最左边的标尺上,当光标变成时点击鼠标,则可以将光标以右、且能与光标横向对齐的所有对象全部选中,同样可以达到多选的效果。当光标放在设计界面最上方的标尺上同理可以进行纵向多选。将光标放在设计界面的某一位置,然后按住鼠标不放,且将光标拖拽到另一个位置,则前后两点所形成长方形范围内的所有对象均能被选中,同样可以达到多选的效果。在选中对象的时候可以通过鼠标拖拽的方式或用键盘上的、键来调整对象需要放置的确切位置,若需要进行微小调整,则可以利用CTRL键、进行微调,但是每一个对象均不能拖出其所属区域范围。如在报表正文区域中的一个列标题,不能将其拖出列标题所限制的范围内。一次选择多个对象时,可以通过上对齐、下对齐、左对齐、右对齐、自动横排、自动竖排功能调整其位置。若一次选择中有不同区域内的对象,则系统会自动根据区域分别进行对齐处理。在对象选中的时候,将鼠标放到对象边框线的选中点上,当鼠标变成或时即可以调整所选对象的宽度和高度;也可以在对象选中时,按住SHIFT自定义报表25键,再点击、按钮来调整对象的大小。除了在格式设置界面上可以直接调整各对象的位置和大小外,还可以在各对象的属性窗口中用具体的数字来调整其对应的位置和大小。322如何调整各区域的高度在区域显示时,将鼠标放到各区域的灰色标题条上,当鼠标显示为时就可以上下调整该区域的高度。若要调整报表正文区的列标题高度,则将鼠标放到列标题和数据列的红色分界线上,当鼠标显示为时就可以调整列标题的高度。323如何设置根据某一对象进行连续分页打印连续分页打印的含义一次要打印多个客户的应收明细账,但是每打完一个客户的明细账后,下一个客户的明细账希望用新的一张纸开始打印,这就是连续分页打印的体现。只有在图312界面中将分组打印标题或分组打印脚注选择为显示时才能根据当前对象进行分组连续打印,但是将分组打印标题或分组打印脚注设置为显示的前提条件是必须将当前列先设置为分组汇总列;反之,若想把当前对象取消分组汇总列特性,则必须先将当前列的分组打印标题或分组打印脚注选择为不显示。如果,虽然在格式设置的分组视图列表中将某列的分组打印标题或分组打印脚注设置为显示了,若在实际查询中,并没有将当前列作为分组汇总依据进行查询,那么本次查询结果还是不能根据当前列进行连续分页打印。324如何增加表头表尾信息标签当报表表头/表体中需要额外增加一些显示或打印的内容时,可以用增加标签,给标签赋予不同的数据源即可得到报表所需的内容。选择编辑菜单下的增加标签子菜单或者选择右键菜单下的增加标签菜单,再用鼠标点击标签所要放置的位置即可完成本次新增一个空白标自定义报表26签的操作。可以在报表标题区、分组打印标题区、分组打印脚注区、页标题区、页脚注区、报表脚注区增加不限个数的标签。标签中的属性项目说明名称实际上是当前标签的一个唯一标适符号,系统自动根据所增标签的顺序缺省给出一个标签名称,如标签1,用户可以修改该名称,但不允许有名称相同的两个标签同时存在于一张报表格式中。所属区域就是指前面介绍的报表标题区、报表脚注区、分组打印标题区、分组打印脚注区、页标题区、页脚注区,系统根据当前标签所在的位置显示其所属区域名称,用户可以修改其所属名称,随着所属区域的改变,系统会自动将该标签放到改后的区域范围内。字体当前标签内容在显示/打印时所用的字体格式,系统缺省为宋体、常规、小五号,用户可以修改符合自己要求的字体格式。对齐方式即当前标签在显示/打印时在所设边框范围内的对齐方式,系统缺省为左对齐,系统提供的选项有默认、左对齐、居中、右对齐。选择默认时,系统自动会将数字型的内容作右对齐处理,字符型的内容作左对齐处理。上边距当前标签的上边线与所在区域标题行的直线距离,单位为毫米。左边距当前标签的左边线与报表左边界的直线距离,单位为毫米。宽度当前标签边框的横向宽度,单位为毫米。高度当前标签边框的纵向高度,单位为毫米。标签显示方式即用于设定当前标签的内容是否需要显示或者是否需要打印。在报表标题区、报表脚注区中增加的标签可以选择只显示、只打印、显示/打印、隐含。在分组打印标题区、分组打印脚注区、页标题区、页脚注区中的标签可以选择只打印、隐含。当标签的显示方式选择为隐含时,即表示当前标签内容暂时隐含,既不显示也不打印,可以在需要的时候再进行显示或打印设置。选自定义报表27择隐含的标签系统会将其颜色置灰。数据源类型即当前标签内容通过什么方式进行设置或取数,系统提供文本、SQL查询、公式、表达式四个选项,对应不同的数据源类型,后续就可以设置不同的数据源。数据源这是影响标签取值最关键的属性,即根据前面所选的数据源类型来设置标签的具体取值内容。数据源类型为文本时,可以直接在数据源输入框中输入需要显示/打印文本内容。数据源类型为SQL查询时,可以直接在数据源输入框中输入SQL语句,也可以通过点击数据源设置界面中的SQL按钮进入SQL数据源设置向导界面(该界面中的设置方式同报表数据源设置),系统会根据该SQL语句查询出来的值显示/打印在标签框内。数据源类型为公式时,可以在数据源中设置系统提供的不同公式,包括一些常用公式、取数公式、统计公式、业务函数。数据源类型为表达式时,可以在数据源数据框中输入计算公式,在这些计算公式中可以用到另外标签的值。如设置标签1为公式,取数据列5的合计值;标签2也为公式,取数据列6的合计值;此时设置标签3标签1标签2,则标签3的值永远会是标签1与标签2之和。在表达式中若用了PERSISTSECURITYINFOFALSEUSERIDSAINITIALCATALOGU8MDATASOURCEHERON“新建报表CALLOBJQUERYOPENQUERY“SA“,“,“,STRCONN,“,“,“,“,“ENDSUB例2打开已存在自定义报表的数据源DIMOBJQUERYASNEWUFQUERYDEFINELIBCLSDOCUMENTSUBQUERYDEFINESIMPLYDIMSTRCONNASSTRING取得连接串STRCONN“PROVIDERSQLOLEDB1PERSISTSECURITYINFOFALSEUSERIDSAINITIALCATALOGU8MDATASOURCEHERON“假设已经新建了报表“销售统计表”,现在打开它的数据源CALLOBJQUERYOPENQUERY“SA“,“,“销售统计表“,STRCONN,“,“,“,“,“ENDSUB上面两个例子展示了数据源定义工具最简单的使用方法,从上例可以看到,首先我们必须实例化接口UFQUERYDEFINELIBCLSDOCUMENT,OPENQUERY是接口中唯一的方法,该方法有三个关键参数系统标志,报表名和数据连接字符串。自定义报表中以系统标识和报表名称为关键字存放报表;数据库连接串指出报表格式和查询语句存储的位置。OPENQUERY方法参数说明参数说明SYSTEMID调用自定义报表的子系统ID号OPERATOR操作员名称STRREPORTNAME打开的报表名称,如果该参数为空字符串,默认创建新的自定义报表STRCONN连接当前数据库的ADO连接字符串STRLIBRARY当前操作员可以看到的数据字典列表;自定义报表内置的数据字典按子系统号分类,如果当前操作员可以需要同时使用多个子系统中的表,则需要在此特别指明,例如DEMO操作远需要使用销售和采购中的自定义报表57数据,则STRLIBRARY参数的设置应该是”SA,PU”“(不同子系统之间用逗号分隔,子系统号必须用单引号括起)STRFOLDER报表对应子系统的账夹名利用该参数可以将新定义的自定义报表放到子系统对应的帐簿中。通常该参数可以为空STRSYSDB连接UFSYSTEM数据库的ADO连接字符串。STRSYSDB,STRZT,STRACCYEAR三参数与自定义报表功能权限相关。如果加上了该参数,系统将为每张新报表创建任务号,可进系统管理为报表分配使用权限。STRZT当前系统账套号STRACCYEAR当前年度713使用格式定义工具例三使用报表格式定义工具DIMOBJFORMATASNEWUFREPORTFORMATCLSDOCUMENTDIMOBJCONNASNEWADODBCONNECTIONSUBOPENREPORTFORMAT创建连接OBJCONNOPEN“PROVIDERSQLOLEDB1PERSISTSECURITYINFOFALSEUSERIDSAINITIALCATALOGU8MDATASOURCEHERON”打开报表格式CALLOBJFORMATOPENDOCUMENTOBJREPORTDATA,“销售统计表”,“SA“,“”ENDSUB格式定义工具接口及方法说明接口名称UFREPORTFORMATCLSDOCUMENT接口方法CLSDOCUMENTOPENDOCUMENT(BYVALADOCONNASADODBCONNECTION,BYVALSTRREPORTNAMEASSTRING,BYVALSTRSYSTEMIDASSTRING,BYVALSTROPRNAMEASSTRING)参数说明ADOCONN当前格式定义操作指向的数据库连接STRREPORTNAME报表名称STRSYSTEMID子系统ID号STROPRNAME操作员名称(可为空)自定义报表58714初始化查询分析器查询分析器是自定义报表中的关键部件,查询分析器负责展现由数据源定义工具和格式定义工具定义的报表。为了生成具有复杂数据源的报表,查询分析器还提供了数据源接口。在使用查询分析器展现报表之前,我们必须对其进行初始化。查询分析器被设计成多文挡形式,在同一进程中可以打开任意多张报表,系统用一个报表管理对象来管理这些同时打开的报表,通过它我们可以打开和关闭报表,动态改变任意一张打开报表的显示状态。初始化自定义报表步骤(1)定义两个全局变量,例如PUBLICOBJINFOASNEWUFFHERONREPORTCLSSYSINTERFACEPUBLICOBJREPASUFHERONREPORTCLSREPORTMANAGER说明UFHERONREPORTCLSSYSINTERFACE是查询分析器环境接口,在开始使用控件时必须先实例化这个接口;UFHERONREPORTCLSREPORTMANAGER是报表管理对象接口,控件初始化时内部自动进行实例化,客户端必须获得该指针来管理报表。实例化CLSSYSINTERFACE接口实质上是为报表控件在当前进程中开辟了一段全局存储区域,同时这也会清除以前的存储区,如果在此之前初始化并打开了报表,则那些打开的报表将丢失;因此在同一进程中,控件只能初始化一次。这点必须特别注意。(2)设置报表的运行模式,例如OBJINFOSERVERRUNMODETRUE控件有运行模式和设计模式两种(TRUE运行模式FALSE设计模式),在设计模式下控件将反馈调试信息,在运行模式下则不会出现。(3)调用报表初始化方法,取得对系统报表管理对象指针的引用。例4调用初始化方法DIMADOCONNASNEWADODBCONNECTION创建数据库连接对象ADOCONNCONNECTIONSTRING“PROVIDERSQLOLEDB1PERSISTSECURITYINFOFALSEUSERIDSAINITIALCATALOGU8MDATASOURCEHERON“ADOCONNOPEN调用初始化对象方法,这是最简单的初始化方法CALLOBJINFOINITINTERFACE“SA“,ADOCONN,“取得报表管理对象指针的引用SETOBJREPOBJINFOGETREPORTENGINE上例为我们展示了初始化控件的两个关键步骤,调用INITINTERFACE方法初始化报自定义报表59表和通过GETREPORTENGINE方法获取报表管理对象指针。以下是INITINTERFACE方法的参数说明参数名必须说明STRSUBID必须子系统号DAODB可选为了保持兼容性,可不输入STRTABLENAME可选为了保持兼容性,可不输入ADOCONN可选告诉系统报表格式定义保存的位置,报表格式和数据可以在不同的数据库中。如不指定则系统默认格式和数据使用相同的数据库。(建议设置该参数)OBJOWNWIN可选当前应用系统主窗体指针STROPRNAME可选操作员名称LNGQUANTITY可选LNGQUANTITY,LNGNUMBER,LNGMONEY三个参数对应数值数据小数位数,LNGQUANTITY对应格式“U8数量显示格式”LNGNUMBER可选对应格式“U8件数显示格式”LNGMONEY可选对应格式“U8存货单价显示格式”OBJDAOLIBRARY可选提供给控件的数据源管理对象指针,如果要通过“我的帐簿”打开报表或数据源相同的另存报表,系统将从数据源管理对象查询报表的数据源。此时该参数是必须的。ACCMONTH可选当前会计月,在使用标签会计月公式时需要该参数ACCYEAR可选当前会计年,在使用标签会计年公式时需要该参数OBJLOGIN可选U8的LOGIN控件指针,如果不设置该参数,所有报表将失去U8特性715打开自定义报表一旦控件初始化完成,就可以用报表管理对象指针打开和关闭报表。下面给出了打开和关闭报表的例子(假设控件已经初试化,并且取得了报表管理对象指针OBJREP)例5打开报表创建连接SETOBJREPORTDATANEWADODBCONNECTIONOBJREPORTDATACONNECTIONSTRING“PROVIDERSQLOLEDB1PERSISTSECURITYINFOFALSEUSERIDSAINITIALCATALOGU8MDATASOURCEHERON“OBJREPORTDATAOPEN打开指定的报表OBJREPOPENREPORT“销售统计表”,“SA“,“,“,OBJREPORTDATA说明OPENREPORT方法的作用是打开报表,他需要三个基本参数报表名称,子系统号和指向数据库的ADO连接对象。前面在初始化时也用到了一个数据库连接,这两者自定义报表60的联系是前者指向报表格式的存储位置,后者指向报表数据的存储位置;如果没有设置格式连接,系统读取报表格式时自动使用数据连接。报表格式和数据可以存放在不同的数据库,而且对于不同的报表可以用不同的数据库连接打开;这种设计为我们创建分布式报表应用提供了支持。例6关闭当前所有打开的报表DIMIASLONG遍历所有已经打开的报表FOROBJREPREPORTSCOUNTTO1STEP1关闭指定的报表OBJREPCLOSEREPORTOBJREPREPORTSISTRREPORTNAMENEXTI说明REPORTS是存储当前打开报表的集合;我们可发现上例从后往前遍历报表,这是因为用CLOSEREPORT关闭报表时会将集合中的相关元素删除,REPORTS集合也会相应发生变化。虽然我们在界面上就可以关闭报表,但这种方法在特定的情况下也会用到。OPENREPORT方法参数说明参数名必须说明STRREPORTNAME必须打开的报表名称,如果在数据库中没有对应的报表定义则系统将提示是否创建新表STRSYSTEMID必须子系统ID号STRTRASKID必须任务ID号,只有在控制报表打开权限时才需要该参数,如果是自定义报表,不必设置该参数。STROPERATOR必须操作员ID号ADOCONN必须指向存储报表数据的ADO连接对象OBJDATAACCESS可选当报表使用了复杂数据源并且已经为该报表提供了数据源管理对象,则需要该参数;如果当前打开的是简单自定义报表则不须设置该参数。OBJSUB可选钩子对象指针,如果报表没有下钻处理则该参数可不用OBJREFINTERFACE可选如果要使用外部参照功能则必须设置该参数OBJFILTER可选如果在打开报表时条件是确定的比如下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论