Report报表开发设计说明书.doc_第1页
Report报表开发设计说明书.doc_第2页
Report报表开发设计说明书.doc_第3页
Report报表开发设计说明书.doc_第4页
Report报表开发设计说明书.doc_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

Report报表开发设计说明书第一部份: Report Builder的简介Report,报表,就是将数据库的数据合理、清晰、汇总的展示出来。输入一定条件的参数,得到一定的数据的展示的结果,其实就是一个select查询的过程。查询,就是说,不要对有任何的增加原数据,修改原数据的功能。Report虽然能够轻易的实现改变原数据,但是这样的需求是不合理的,报表的就是一个展示的功能,不管多复杂的报表,不能改变原数据,不能影响流程。Report Builder,简单的说,就是一个资料模型,就是你的报表数据查询来源,一个布局模型,你要的报表的展示格式。使用Report之前,你需要的基本能力就是会使用SQL/PLSQL语句,语法是其次,关键是数据之间的逻辑关系,起码能将左外联接,迪卡尔积等几个名词说的清楚,那么,OK,继续往下看。第二部份: Report的基本开发步骤1.先进行ERP环境下的REPORT的格式属性设定.1.1请采用手工方式,并不使用report使用的精灵来制作报表,将出现在画面中的module原始文件另存为你的目的地址,并使用你的项目报表名称。1.2建立报表后,选中报表名称段,按F4打开属性,字符模式-用字符单位设计-选择”是”。1.3在布局模型中,选择主要节段,按F4打开属性,字符模式-报表高度和报表宽度按照设计书填写,节段-宽度和高度,这个设置直接影响布局模型字符模式下的点距。小技巧:节段的高度和宽度,与报表高度和报表宽度最好对应成比例,并且,这个比例的倍数最好是整数,由于将来可能出现的报表长宽发生变化,报表高度和报表宽度调整后,节段的高度和宽度就要按比例调整,这样每个格子的形状、大小不变,同时你报表中的内容不会拉长、压扁;同时建议将表头节段,表尾节段也设置来同主要节段相同。例如:表头,表尾,主要节段三个的属性,请将节段高度和报表高度按比列设置(如1:10), 节段宽度和报表宽度,按比例设置(如1:6),而且三个节段的属性要设置相同.这样做的好处是将来一旦调整报表大小,只需按比例不变的情况下调整,框架中每格大小不变,表格也就不会混乱.1.4在布局模型中拉框架前,选择格式-布局选项-标尺设定,画面中点选,单位-字符单位,网格线间隔-,对齐点数目-,字符单位大小不要改动。. 这样设置的目的在于拉动框架时,间距都是1个字符,符合ERP报表的定位方式。这样,你的前期工作就算完成了。2定义你的使用者参数将详细设计文件中,ERP环境传入的参数和你自己定义的参数,一一设置好,提醒注意数据类型和大小,传入参数和自定义参数要区分开,请按照规范文档来。注意,自定义参数对报表的开发灵活性作用巨大,要使用有含义的名称。Parameter Name自定义参数命名参考1 “PI_”+XXXXX 传入值用的参数, 如果 parameter 的用途是真正作为传入参数用时,名称一律以” PI _”开头;不可使用系统默认值。2 “GLB_” +XXXXX 报表中使用的变量参数, 如果 parameter 的用途是作为共享变量时,名称一律以” GLB _”开头; 不可使用系统默认值。3 有起迄的参数需要在后面 XXXXX +”_F”表示FROM, XXXXX+”_T”表示TO; 不可使用系统默认值。小技巧:date类型的传入参数,有时根据value set设置的不同要使用格式遮罩,固定它的时间格式,不然会出现错误。同时建议在设置大小时要适当放大一些,避免有多国语言文字时出现错误。3Report执行过程的说明从画面上触发器的摆放次序,是从上到下的。为参数前,参数后,报表前,翻页中,报表后。其中参数后和报表前为最常使用的两个触发器,一般情况下,使用报表前(before report)来编写在报表运行前需要处理的数据,比如给自定义参数赋值,运行一段存储过程,定义一段动态sql,插入临时表格数据等。当报表前插入临时表格数据,那么after report就是执行删除临时表格数据的动作。4建立资料模型一般来说,除了矩阵,布局无非就是固定框架和循环框架的组合,每一个循环框架就对应一个资源模型中的一级。当然,这么一句话并没有什么实质意义,而要把这个讲清楚,就通过图形和实例来讲解。下一部份重点讲解该注意一些技巧和特点。4.1最一般的单循环普通报表按“sql”按钮,点入画布中,再导入事先写好的sql script。导入sql后,这个报表的资料模型非常之简单。(注此报表并非模范,请按照规范命名。)5,建立布局模型5.1先拖1个固定框,再在固定框内画1个循环框5.2,将固定框和循环框拖拉到合适的大小,再内部填充上数据栏位和文字栏位5.3属性的设定固定框上下设为浮动的,左右为固定的,显示为“第一页”“包含模式”。循环框上下设为浮动的,左右为固定的,显示为“第一页”“包含物件”,每页最多显示多少,这里为1,当然根据需要而定。内部栏位上下设为固定的,左右为固定的,显示为“第一页”“包含模式”6 报表完成这里的第3,4,5小节只是一点简单的步骤介绍,详细方法和技巧并没有呈现出来。下面这个部分,将就资料模型和布局模型的关系作详细的探讨。7 参数规范参考框架Layout中,字段名称命名“F_”+XXXXXX: XXXXX为可表达其意义的名字,最好能与抓取值名称对应上;不可使用系统默认值。查询主体名称命名“Q_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。固定框名称命名“M_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。循环框名称命名“R_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。文字框名称命名“B_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。Formula Column Name公式直栏命名:“CF_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。Placeholder Name占位符命名:“CP_”+XXXXXX: XXXXX为可表达其意义的名字;不可使用系统默认值。第三部分 Report的布局研究,特殊报表的布局开发方法1. 布局框架风格1.1在布局模型栏位中字符时间左靠齐,数字右靠齐.小技巧:对于字符型数据的栏位,注意中文和日文的宽度,是占用2个字符;对于时间栏位,注意格式遮罩,比如DD-MON-YY,还有小时是12小时制,还是24小时制,有时会遗忘这一点;对于数字栏位,注意保留位数,NN0.00与NN0.NN是不一样的,前者是恒保留2位,后者是超过2位小数保留2位,但是不足2位就不会补0,还有一些是货币格式,注意选择合适的格式遮罩,还有特殊情况,如负数要用括号括起来,-100为(100),这种情况,建议使用公式栏中处理出来后显示,先to_char转换,再判断是否两边连接括号。1.2 繁体报表要求用细明体,10号字.小技巧:不要设置任何斜体、下划线、粗体,因为ERP报表就是纯字符报表,有一次我设置了粗体,试验下来的结果就是报表会报错,这样的错误,很难找到原因。有时你看见明明显示的是细明体10号,但是一运行却不是,建议在作完报表布局后,CTRL+A全选,然后先选择另一个字体,再选回细明体,先选另一个大小字号,再选回10号字。1.3 请将框架和栏位的颜色设为无色,填充也设为无.小技巧:在画完报表之后,CTRL+A全选,选择无填充,无颜色,这样报表保证不会出错。1.4 报表标题,设在主要节段内,表头,表尾尽量不要输入内容,同时在“显示报表的表为节段”模式下,将黑框顶满画面.小技巧:任何报表形式,都能够在不利用表头模式、表尾模式的情况下实现表头表尾格式的实现。因为在表头模式、表尾模式下,非常容易出现报表出错,关键是错误很难找出,有时把整个画面全部删除了,才想到是表头表尾出错了。将下面这个黑框,上下左右全部顶满。2资料模式风格2.1 充分利用报表的汇总、公式列功能。小技巧:汇总,与此类似的平均值之类的,为我们的报表编写提供了相当大的辅助,但是要注意层级关系,你这个汇总是放在哪一个层级上的。一般来说,汇总列总是比你要处理的列高层级,而公式列是与处理的列平行的。公式列的功能,常用在字符处理上,或者数字转字符,或者返回一个yes/no。2.2 连接线的使用对于图中Q_1,Q_2之间的这条连接线,意味着,将这两个查询通过某一个栏位而统一起来了,从上图中就可以看出, Q_1是主查询,使Q_1与Q_2同一级,就是连接的栏位列之间是对应关系。但是,假如右边第一级不是1个栏位是很多个栏位,并且其他栏位并不与主查询有连接线,这是,右边的第一层,就比左边低一级了,就不是平等关系了,这时需要一个循环框。可能有人会被我这个高级、低级给将糊涂了,为了清晰的表达这个层级关系,通过几个实例来阐述资料模型的结构与框架结构的关系。3资料模型与布局模型的关系。3.1 资料模型一个层级就对应布局模型一个循环框上面这句话,是我对report的总结,下面,我就通过画面来说明这个关系是如何对应的。例一:红色部分就是第一层,第一层意味着可以不被任何循环框套起来,可以直接使用到报表之中,本例中第一层没有数据。第二层,意味着需要一层循环框。第三层,意味着使用这样的栏位,需要有两层循环框。第四层,意味着使用这样的栏位,需要有三层循环框。在下面图中,三层循环框就对应资料模型中的三个层级。布局模型中,不用任何循环框包围的部分,就是资料模型中的第一层。小技巧:每个循环框的外面,请加上一个固定框。不加可以吗,可以!但是,这就降低了报表的应付变更的可变化性,比如:有个报表的循环里面要求固定5条数据,在固定的5条数据下面固定一行高一层数据,这行数据不随这个循环框浮动,那么就可以设置外面这个固定框的上下属性为“固定的”,不是浮动的。例二有连接线时的层级关系,同时在第一层也有数据,这个算是比较难的报表了。你可以看到这个报表,我用颜色将层级划分开,还是一个层级划分代表一个循环框。第一层,不需要循环框,第四层,它的栏位从内往外数,一定会有三个循环框包围它。下面这种情况的连接线,就是一对一的关系,是放在同一层的。例三,再来一个更复杂的,表明层级的关系。上面这个图很夸张,不过可以看出:第一层,无循环层,没有数据,第二层,就是中心查询,Q_1,其他Q_2,Q_3,Q_4,Q_5,都是并立的,他们各自的前4个栏位,都是与Q_1一对多,因此Q_2,Q_3,Q_4,Q_5的最上层,是与Q_1并列第二层的。其他的依次增加层数即可。这就明确了循环框的个数和画法。下面这个图,与上图实际上是类似的,只是更清晰一些,道理是一样的。第一层无数据,第二层,G_SHIP_DATE,以及与它连接的G_1,G_2,G_3.3.2 定锚物件的使用前面的报表,不管它多复杂,无非就是以循环框为核心的报表。对于固定框的属性,一般调整的,就是上下是变动的,还是固定的,然后使用包含物件,第一页或者所有的页。这里一定是包含物件,定锚物件不要乱用,否则会出错。对于循环框更是,一般都是上下设为浮动的,左右为固定的,显示为“第一页”“包含物件”,每页最多显示多少。栏位更不必说,除了偶尔上下栏位浮动的,一般都是固定的,显示为“第一页”“包含物件”。小技巧:当一些栏位需要所有的页显示时,请在外面加上一个固定框,栏位设置为“第一页”“包含物件”,固定框设置为“所有的页”“包含物件”。定锚物件什么时候用呢?布局模型中还有一个强制定锚,这个在什么时候用呢?举一个例子,你是否遇到过一个普通的报表,分表头,表身,表尾三部分,表头要求每页都显示,这个好办,所有的页即可。表身是循环显示,表尾却要求是在最后一页的最下面显示,注意哦,是最下面,如果你紧跟报表画,就错了。这里就要用到定锚物件。我们来看上图中这个案例,这里中间是个循环,要求每页显示6条,那么在外面加一个固定框,来保持报表的形状不变,实际上是保持下面部分的相对位置不变。这时有个难题,就是固定框右下部,红框框起来的几个栏位。按需要,必须在最后一页显示。这时设置“最后一页”就可以了吗?不行。要设置为最后一页,定锚物件,这时还需要使用强制定锚,将这个栏位与上面固定框连接起来,这时就有一个小黑点,就OK了。3.3矩阵的对应关系现介绍两个要求:矩阵和群组矩阵要使用报表精灵来实现,利用的是矩阵的框架,手工无法画;有矩阵又有其他内容的报表,先做矩阵,再手工画其他的;例一,用个实例讲解矩阵。由上面的图示,可以看到,我将矩阵分为5个区域,这5个区域会分别与图形中的区域相对应。在上图中,是由精灵产生的布局格式,从上到下分成5个维度:1) 横竖循环框,不要动这里;2) 横向栏位,对应横层3) 中心栏位,对应中心层4) 竖向栏位,对应竖层5) 无维度,对应第一层。那么交叉层在哪里?在横向一个,是横向的统计,竖向一个,是竖向的栏位,这两个栏位是精灵自动产生的,即使用不到,也让这两个数据出来,在画面上删除就可以了,万一以后要增加也方便。让我们来分析上面这幅布局:1) 最必要的三个框架:最外层大框,横向循环框,竖向循环框。最外层大框横向循环框竖向循环框2) 横向栏位,对应横层。在图中F_HENG_ZUO,F_HENG_YOU所在的地方就是横层的所放位置,只按要注意一点,精灵产生的全在左边,但是根据需要,你可以拉宽横层循环框,并且将栏位用左右键移到右边去。同时这个区域存放,交叉层的横向汇总。3) 中心栏位,对应中心层。在图中F_AMOUNT所在的地方,就是中心栏位,就是你想要显示的明细数据,由精灵产生时,这里有1个循环框,再包含1个栏位,或多个。4) 竖向栏位,对应竖层。在图中F_TITLEU所在的地方就是竖层的所放位置,只按要注意一点,精灵产生的全在上边,但是根据需要,你可以拉高竖层循环框,并且将栏位用上下键移到下边去。同时这个区域存放,交叉层的竖向汇总。5) 无维度,对应第一层。注意,四个角的四个固定框,这里就是无维度层,你可以设置固定字符和栏位,都可以。小技巧:交叉层不可以新增公式例,肯定会报错。在矩阵精灵出来的布局结构中,出来外面的大框,横框,竖框,三个框绝对不能删除之外,其他都可以删除,并且可以任意手工添加栏位。注意属性哦,不然会出错。34 对于群组矩阵,其实只要你理解了矩阵。就是在矩阵外面加一个循环框,将整个矩阵包括起来,矩阵循环显示,就是群组矩阵。注意:不管是矩阵,还是群组矩阵,由精灵产生的时候,麻烦你把“边界”那里产生栏位删除掉,不然你会出错。边界里面放置的是布局模型中,在黑框外的栏位,在我倡导的report做法里面,不建议使用黑框外的做法,因此,边界也请删除掉。研究话题:以上方法,几乎对付所有的矩阵报表,都没有问题。但是不采用矩阵精灵做矩阵,从我的角度来看,还没有办法完全手工做矩阵。4文字档报表41什么是文字档报表就是直接将报表的内容写进服务器的文件夹下面的以文件形式存在的报表。42如何做大家知道,做报表本来就比较难做,要直接写进服务器端就更难了。有时是既要显示的报表,又要写文字档。这里我主要介绍做文字档报表的主要方法步骤。421 SQL语句的写法跟一般时候不大一样,要将你所有要显示的栏位,通过“|”,rpad,lpad等连接成一个长的字符串,这样的感觉就好像是一个栏位,特点是非常长,当然,这个连接过程,就是报表排版的过程。422 然后丰富你的SQL查询,加上跳页规则,排序规则所需要的栏位,当然,这些栏位以后并不显示。4 2.3 开一个合适的临时表,通过一个procedure将你的查询存入你的临时表中。这样,你的这个临时表就相当于一个报表的数据来源了。方法一,当然,要在before report运行这个procedure,先将这个报表数据啊,运行入这个临时表中。然后,在资料模型中,布局模型中正常设置,数据来源为临时表。在展示结束后,after report调用文字档处理程序(下面讲)。方法二,写concurrent来将数据处理入临时表,然后调用单纯只展示数据的报表,然后继续写文字档。4.2.4 文字档如何写?其实就是将临时表,通过一个cursor,按顺序一行一行的写进文件中。换行加上换行符chr(10),跳页加上跳页符chr(13)。举个例子:定义: V_HANDLE UTL_FILE.FILE_TYPE; V_BUFFER VARCHAR2(32767); V_RETURN_STATUS BOOLEAN := TRUE;先打开文件,下面的函数。V_HANDLE := UTL_FILE.FOPEN(PI_LOCATION -ftp文件目錄,PI_FILE_NAME -文件名字,PI_OPEN_MODE打开方式,W,新写入,把以前覆盖,A,接着写,,32767); V_BUFFER := CONVERT(PI_BUFFER你传入的内容是什么?写入的内容, ZHT16BIG5, UTF8);-打开的语言设置,这里是繁体中文。打开之后就是写入的动作了 UTL_FILE.PUT_LINE(V_HANDLE,V_BUFFER);写入完别忘了关闭文件。 UTL_FILE.FCLOSE(V_HANDLE);当然,你可以写成函数来调用。4.2.5 有一个问题注意一下,矩阵报表尽量不要去设计来写文字档,由于没有办法在完全在sql中拼接矩阵报表,因此只能采用模拟矩阵的办法。模拟矩阵是就是假设矩阵横向栏位不会超过100(比如是100),那么在SQL中强行给它排上100个栏位来处理。这种方法,只是一个近似,不是真实的矩阵,如果横向真超过100,那么这个报表结果就是错误的。目前还没有更好的办法来解决矩阵文字档的问题。做需求和设计的要明白这一点,不然报表难产。4.2.6 写文字档是TXT挡,有时需要写成EXCEL档,当然,这是没有办法的直接写EXCEL的,在TXT报表中,格式不变的情况下,在每个列的间隔加上“;”作为区隔。然后用EXCEL方式打开TXT文档,区隔符号用“;”,就是EXCEL报表啦。EXCEL默认是“,”不是“;”,需要设置一下EXCEL。第四部份: Report的安装上线方法简单实例 一:步骤如下,复杂报表,步骤雷同。信封套印報表 (FHOMR014)1. 程式安裝:1.1 將FUHSING-標準客製報表解壓縮到 c:erpwork (簡稱 $WRK)1.2 FTP programs to Server$WRKreportsFHOMR014.rdf到$ONT_TOP/reports/US/目錄下1.3 Use SQL*Plus to Create/Compile Database Objects(假設文件VIEW_SCRIPT.SQL存放於C盤)Login as: APPS/APPS”your db connect string”SQLC:VIEW_SCRIPT.SQL -是否有使用自己写的Table,View等的代码1.4 Package script(假設文件XXOM_API.PKG存放於C盤)Login as: APPS/APPS”your db connect string”SQLC:XXOM_API.PKG -是否有Procedure、Function等程式代码1.5 Database parameter setup2. ERP設定:(連線ERP, 進入 system administrator)2.1Define Executable: Concurrent-Program-ExecutableProgram:FHOMR014.rdf2.3Define program: Concurrent-Program-DefineProgram: FHOMR014.rdf2.4Define Request Group: Security-Responsibility-RequestProgram: FHOMR014.rdf小技巧:1 在Define Executable 的时候,一般的report程式Executable Method请使用oracle reports,在file name那里使用报表文件的名称,注意不要后缀名“.rdf”如果是procedure请使用pl/sql stored procedure,file name请使用“包名.procedure名”2value sets如何设置?一般来说,常用的value sets,分为两种,一种是基于table的数据来源,一种不基于table的。对于基于table的数据来源,如图设置: 图上名字自己定,只要不冲突就行,当然要符合公司规范。validation type选择table,选择了table才能使用按钮edit information,点击进入图上,table name处,可以是table,view或者查询段,但是,建议使用view来写,因为这里一旦设置好后,不能修改。如果要修改,只能将这个value set删除了,重新设置一个新的。TABLE可以写伪列名,这样的话,value处就要在栏位前加上伪列名前缀。一般来说,栏位设置value 和meaning两个就可以,这样在选择画面中能看到两个栏位,value是传入的值,meaning是解释或者描述,方便使用者的选取。但是本例中将id栏位也写上了,这时显示的还是value 和meaning两个,但是传入值变了,不再是value,而是ID。ID和VALUE可以相同,可以不相同。对于WHERE/ORDER BY框里,这里一定记住写上WHERE/ORDER BY的关键字。如果要关联已经定义的栏位子集,使用语法为where field_name = $FLEX$. value_set_name;注意,被关联的栏位的SEG必须比使用这个的VALUE SET的栏位的SEG小,也就是说,被关联的栏位必须在前面先选择。对于不基于TABLE的value sets,设置如下:validation type选择independentFindValue是传入值,description是解释,或者说明。以上两种算是最普遍的,当然,还有时间型的,设置会计科目等比较不常见的,最快学习的方法,就是找标准报表类是的画面,看看ORACLE是如何设置的,这样最快了。3,Define programm的地方如图这个画面中,program就是程式名,short name是唯一的程式代码Executable的地方,就是你要调用的你已经注册过的report的注册名称,这里,同样也是这是concurrent program的地方,那么这里就填procedure的注册名。Colums,rows请写清楚你的报表的长宽,请与你报表中设置的一样。Style对于一般报表,使用landwide,比如80*66最常规的报表,但是如本图所示,是一个1000*66的超宽报表,设置landwide就不行了,设置BACS模式,Colums,rows放空,对于超大报表采用这个。Printer,如果直接在打印机打,设置这个,一般放空。左下enable trace是调试用的trace log,对于那种超大的报表,跑的特别慢的,用来调整performance还是很有用的。如图,display,是否显示Required是否是必选参数Token对应于报表中设置的参数,要传入报表的,请把名字与报表参数对应。Prompt,这个是显示名字,按客户要求来喽。Value set就是你这个栏位采用的Value set的名字。Default type有四种,如图profile,就是抓取系统设置的profile,如org_id,orgnazation_id,set_of_book_id等。Constant就是固定值,预设值,将value set中的某一个值先预设。SQL Statement就是预设一段sql程式,在右边写你要抓取得值。Display size就是显示宽度。4,设置seg的时候,注意数字间隔放宽一些,万一加参数的话,比较方便一些。注意外观,宽度设置合理一些。第五部分:Report的检查、测试策略1. 參數設定1,起迄性質的欄位注意low,high的設定,注意是否顯示,是否必須輸入.2,注意lov有限制條件時出來的值,不能多不能少.3,看看是否有遺漏欄位.2. 外觀檢查1.挨個對照欄位寬度,數值欄位是否靠右,文字時間欄位是否靠左.2.輸出資料排序是否正確?這個檢查重要,但是很不容易看出來,尤其是數據量小的時候.3.分頁控制是否正確?到底是以甚麼值為換頁的方法.4. Column 合計是否正確?從變面上選取部份列check數據是否正確.5.Description性質的欄位,顯示的高和寬是否滿足,檢查是否需要置換REPLACE掉字符串中的換行符”chr(20)”,是否有串接.串接時對於null值有沒有做nvl.6.如果抓出負值,需不需要特殊處理.7.是否有完全相同的資料.是否是重複8.注意時間的顯示方法9.有些表頭表尾只印第一頁,以後不印,或者印最後一頁,或者還要表尾必須在最下面,注意這個問題,當然,也要注意,每頁都印.10,有沒有缺資料,比如顯示空白的時候,要確定是值為空,還是欄位抓錯,或沒有抓.11,注意語言,一般採用細明體10號,12,框架採用無色邊框,沒有填充3. 程式檢查1.程式註解是否足夠清楚?重要,必須符合規範,方便今後維護.2.報表的數字與ERP系統報表核對,去form介面去檢查其中一兩組數據.3.程式中是否有distinct,是否需要distinct.4,注意order by與資料模式中的上下排版是否一致.5,連接時,是否考慮了攔位值為空的情況.6,是否考慮了語言的篩選,有些系統存在多種語言的數據后记:检查报表,起码要首先能运行。如果运行直接就出错了,还是要通过察看log来帮助判断一下。有时候错误非常低级,比较客制table被改变了、删除了,布局中栏位的数据来源忘记设置了等等,大多数人出错发生在框架上,很多人对于框架的属性设置还吃不透,请上去再仔细研究一下框架与布局的关系。检查布局时,采用二分法,一半一半的删除报表布局上的框架,找出到底是哪个栏位出错了。对于能够运行的报表,第一步,起码要把报表上的栏位位置,分页,保证正确性。这里主要

温馨提示

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

评论

0/150

提交评论