润乾问题集锦FAQ
FAQ问题汇总

请各位不要扩散该FAQ,仅供内部参考!谢谢!1.深圳气候状况怎么样?周边的消费水平如何?房租是什么价位?深圳全年气候温和,日照充足,降水丰富。
漫长炎热的夏季和短暂但相对温暖的冬季,使得深圳成为受欢迎的旅游目的地。
吃:工作日吃饭一般在食堂,一荤一素一汤一饭11元左右,周末可以本着改善生活或者减肥为目的自己调节食谱,深圳多湘菜、东北菜、川菜、粤菜、陕西菜、杭帮菜等,还有诸如日本料理、韩国烧烤、泰国菜等外来产品(样本:本人来深六个月体重增加12斤,后通过体育锻炼予以保持和略微下降);住:华为公寓有百草园,入住百草园基本可以宣告小康生活开始了,房租350-800元视房间大小;华为周边(5公里内,公交20分钟左右)有多个比较大的社区,豪华型的比如万科城,舒适型比如四季花城、中海日晖台等,经济型的有金州嘉丽苑等等,以三房一厅为单位,月租范围在1500-3200之内,房租除了看社区,也要看装修,也有相当经济的民房,典型的代表是MTS山庄(中文名“马蹄山”,可百度搜索),紧挨华为百草园,与百草园资源共享,交通便利,还有盛产“港姐”的岗头村,此类房租通常非常便宜,300-600元,如果肯花大价钱,比如800元,可以住的象皇帝一样;如果希望距离公司远一点,可以选择生活非常便利的关内,房租视关内“内”的程度,也可以选择距离梅林检查站(邓爷爷画圈的边缘,目前深圳已经取消“关”之说,提出建立大特区概念等,感兴趣的同学请网上搜索)、布吉等附近住房,交通便利,距离关内近,消费方便,距离公司也不远,上班方便。
此外,公司班车遍布深圳几大区域,住远的不用担心上班挤公交的问题。
行:深圳11年要举办世界大学生运动会,目前政府正在抓紧时间建立发达的地铁系统,目前已经开通三条线,此外正在实施的线路有4条;出租车方便,就不说了;道路交通,这个问题对深圳有点痛苦,对中国大城市都比较痛苦,一个子“堵”,对华为而言,公共交通系统非常发达,有“接近”专门为华为开通的几条周边的公交线,有去深圳几大热点区域的线路,公司旁边还有个比较小的长途汽车站,去周围城市非常方便,坂田地铁线开通后将会更加方便。
润乾报表优化与性能管理

润乾报表优化与性能管理润乾报表优化与性能管理编制者:吴国邦⽬录第⼀章、报表优化 (4)1. 灵活应⽤多数据集 (4)1.1.1. ⽹格式、分组式、交叉式尽量⽤单数据集 (4)1.1.2. 多源分⽚、主⼦报表尽量⽤多数据集 (6)2. 写sql的技巧 (8)2.1.1. 尽量在sql⾥进⾏group (8)2.1.2. 尽量不⽤select * from (10)2.1.3. 尽量在sql⾥排序 (10)2.1.4. 尽量在sql⾥过滤 (10)2.1.5. ⼤数据量可以采⽤存储过程 (11)3. 当前⾏、当前组的概念 (11)3.1.1. select函数 (11)3.1.2. select1()函数 (12)3.1.3. group函数 (13)4.写表达式的技巧 (15)4.1. or/|| 操作符 (15)4.2. and/&& 操作符 (15)4.3. 过滤条件 (16)4.4. ⼆分法查找函数bselect1 (17)4.5. 巧⽤空值判断nvl (19)4.6. 数据类型的考虑 (20)5. 枚举分组 (21)5.1. enumgroup函数 (21)5.2. plot函数 (23)6. 如何减少冗余单元格占⽤内存 (26)6.1. 空⽩单元格的应⽤ (26)6.2. 慎⽤隐藏⾏列 (27)6.3. 慎⽤合并单元格 (27)第⼆章、性能管理 (29)7.单⽤户缓存 (29)7.1.1. 概念定义 (29)7.1.2. 功能背景 (29)7.1.3. 使⽤⽅法 (30)7.2. 多⽤户间共享缓存 (31)7.2.1. 概念定义 (31)7.2.2. 功能背景 (31)7.2.3. 控制⽅式 (32)7.2.4. 使⽤⽅法 (33)7.3. 静态并发控制 (35)7.3.1. 概念定义 (35)7.3.2. 功能背景 (36)7.3.3. 使⽤⽅法 (36)7.4动态并发控制 (37)7.4.1. 概念定义 (37)7.4.2. 功能背景 (37)7.4.3. 使⽤⽅法 (37)7.5. ⼤报表运算中断 (39)7.5.1. 概念定义 (39)7.5.2. 功能背景 (39)7.5.3. 使⽤⽅法 (39)7.6. 集群时缓存同步 (40)7.6.1. 概念定义 (40)7.6.2. 功能背景 (40)7.6.3. 使⽤⽅法 (41)8.7. 表达式预解析 (43)8.7.1. 概念定义 (43)8.7.2. 功能背景 (43)8.7.3. 使⽤⽅法 (44)第⼀章、报表优化1. 灵活应⽤多数据集1.1.1. ⽹格式、分组式、交叉式尽量⽤单数据集看如下的报表:图 1.1.这是⼀个⽐较典型的多层交叉报表,其做法有两种:第⼀种:图 1.2.这种做法设计了五个数据集,每⼀层的表头都来⾃⼀个码表,交叉点的数据汇总时根据条件和表头关联第⼆种:图 1.3.这种做法只设计了⼀个数据集,把码表和事实记录表叉乘起来,在报表中进⾏分组扩展我们试⽐较⼀下两种做法的优缺点:第⼀种做法:1.数据集不需要对多表进⾏叉乘,取数速度快2.事实记录数据集可以在sql⾥先进⾏分组聚集操作,减少取过来的记录书,加快取数的速度和报表运算速度3.表头扩展直接对码表进⾏select操作,运算速度快4.交叉点汇总需要对事实记录表进⾏检索遍历,查找出和表头关联的记录进⾏汇总,交叉点的格⼦数远远⼤于表头单元格的个数,事实记录表的记录数也⼀般远远⼤于码表的记录数,每个交叉点都要对事实记录表遍历检索⼀次,运算速度⾮常慢第⼆种做法:1.数据集需要对码表和事实记录表进⾏叉乘,取数速度慢,但是⼀般情况下码表的字段数只有⼀两个,⽽且数据库有索引,记录数不是⾮常⼤的情况下慢不了很多2.在数据集sql⾥就可以对表头字段先进⾏分组聚集,这样取过来的记录数⼤⼤减少,加快了取数速度和报表的运算速度3.表头单元格是对事实记录表进⾏分组操作,然后再扩展,⽐第⼀种做法慢⼀些,但是由于对数据集只要进⾏⼀次的分组操作,因此慢不了太多4.交叉点汇总不需要再对事实记录表进⾏检索遍历了,⽽是直接对当前组集⾥的记录进⾏汇总,因此速度⼤⼤提⾼了总结:第⼆种的做法性能优于第⼀种1.1.2. 多源分⽚、主⼦报表尽量⽤多数据集看如下报表:图 1.4.这是⼀个⽐较典型的主⼦报表,主表⼀条记录对应⼦表多条记录,是个典型的⼀对多的关系,再引伸⼀下,⼀个主表可以对应多个⼦表,每个⼦表都是多条记录。
FAQ 常见问题解答20120111

FAQ 常见问题解答1.输错员工组或者员工子组或者职位信息怎么办?2.如何查找公司所有人员信息或者特定人员(比如所有退休人员)信息?3.中途调整员工组或者员工子组如何操作(比如试用期转正,或者员工组从岗位工资制转变成业务工资制)?4.如果发现一个人员的职位对应的岗位是错误的,应该怎么修改?5.没有做足一个月,首月工资只能发一部分,应该如何处理?6.如果一个新人入职做到一半没有成功就退出怎么办?7.同时雇佣的操作?8.一个人离职之前另外一个人已经入职应该怎么处理?9.离职开始日期应该选哪一天?10.如何删除人员分配号及其下所有信息?(此功能慎用)11.如何显示SAP菜单中的事务代码?12.如何创建工资范围的控制记录?13.如何人工指定过账日期?14.如何冲销从人事系统正式过账的薪资凭证15.离职人员如何继续发薪?16.年终奖的三个工资项如何区别使用?17.如何批量调整司龄工资(同样方法也适用于增加相同金额的工资项调整)?18.如何将企业年金录入系统?FAQ 常见问题解答1.输错员工组或者员工子组或者职位信息怎么办?这里指的是做”入职”操作时输错信息. 如果需要保留之前的信息,只是中途修改详见问题3的解答.进入PA30事务代码界面,找到这名员工,点击“操作”前的小框选中这个信息类型, 然后点击左上角的概览图标( 见下图圈出的图标)会看到有一条“入职”的记录。
选中这条记录, 然后点复制图标(见下图圈出图标)。
在打开的界面的下放修改员工组或者员工子组或者职位,点执行信息组,然后两次确认以后,到组织分配界面,这个时候就应该已经修改好了。
点保存,出现一个提示框点击一次确定。
来到个人信息(输入姓名)的界面,点上方黄色按钮退出即可。
对于上薪资模块的公司,如果你已经起薪了那么还要检查一下组织分配里面起薪日的那条记录对不对。
概览“组织分配”这个信息类型,找到起薪那条组织记录不对的情况。
如果有这样的情况。
你需要找到正确的那条组织分配,复制一下,然后把日期写为为起薪日的时间,并修改好薪资范围。
润乾报表入门

润乾报表⼊门1 前⾔鉴于⽬前报表开发没有⼀个统⼀的规范,每个开发的风格和习惯也不⼀致,所以动⼿写了这份报表开发⽂档,⼀来有助于统⼀⼤家的报表的风格,提供⼀些常见问题的解决⽅案,⼆来⽅便以后新⼈的学习使⽤。
本⼈也是略懂⽪⽑,有什么错误和不⾜之处,欢迎⼤家补充修改。
2.报表⼯具安装解压后运⾏runqian-v4.5.5-install.exe安装⽂件,按引导完成安装。
其中,在初次打开报表⽂件和发布报表⽂件的时候(后续会提到),会提⽰我们需要lic⽂件,就是下图中的两个lic⽂件。
Figure 13.报表⼯具的使⽤3-1 配置数据源使⽤报表时需要先对数据源进⾏配置:Figure 2选择新建⼀个数据源:Figure 3项⽬中默认使⽤的数据源名称为reportjndi.参考图3进⾏配置后,点击连接,进⾏数据源连接,这样就完成了报表服务器与数据库的连接。
3-2 新建报表⽬前的报表形式分为两部分,⼀是⽤来显⽰查询结果的“报表名.raq”⽂件,另⼀个是⽤来提供查询条件的“报表名_arg.raq”⽂件。
我们只需要在保存⽂件的时候,按上述格式命名,打开.raq⽂件时,会⾃动打开相关的_arg.raq⽂件。
3-3 结果显⽰报表设计⾸先新建⼀张报表,直接点击左上⾓⼯具栏上的即可。
按照给定的表样设计好报表名名、列名。
如下图,这⾥提供⼀种样式当做参考模板,如客户⽆特殊需求,希望各开发按照统⼀的样式标准进⾏设计,有助于提⾼所有报表的统⼀性,后⾯还会提到⼀些规范,希望⼤家也可以遵守起来。
Figure 4报表名这⼀⾏,采⽤⿊⾊、⼆号字,加粗。
列名采⽤⽩⾊、三号字,加粗,背景⾊使⽤淡紫⾊(颜⾊相近即可)。
若每⼀列下⾯还要分列,则使⽤⿊⾊、⼩三号字,结果数据使⽤⿊⾊、四号字。
Figure 5设定好报表样式后,开始根据逻辑进⾏取数,设置每⼀列的宽度时,如果需要在⼀⾏中完整显⽰的,要选择“按单元格内容扩⼤”,并去掉“⾃动换⾏”。
Figure 6报表通过配置的“数据集”进⾏取数。
润乾报表基础知识培训

datasetName.select_one(selectExp{,filterExp}) datasetName.select1(selectExp{,filterExp})
参数说明:
selectExp 选出字段或表达式 filterExp 过滤条件
第29页
Group()
语法:datasetName.group(selectExp {,descExp {,filterExp {,sortExp}}}) 功能说明:
扩展模式下的统计图
第47页
统计图举例
一般统计图 时间走势图 时序状态图 交叉统计图 分组统计图 双轴柱线图 甘特图 雷达图 仪表盘 里程碑
第48页
练习
制作一个统计图, 结果参看右侧图例。
练习模板:饼图和柱 状图-练习.raq
第49页
打印
按纸张大小分页 分栏 行后分页和列后分页 报表分页方式 尺寸调整 套打
从数据集中把符合条件的记录行集取出来,根据参数 进行相应的排序,然后依据selectExp进行分组 当前单元格显示的是selectExp的值 单元格里存放每一组的第一条记录组成的行集,扩展 后每个单元格存放一条记录 这条记录保留了一个指针,指向每一组的基本行集
第30页
Group()
选出字段值和每一组 的第一条记录对应
分组式报表练习
从CONTRACT中查出CONTRACTNO, CUSTOMERID, AMOUNT字段,并按CUSTOMERID分组,用分组报表展现。
第11页
单元格及其属性
一般单元格及其命名规则 合并单元格及其命名规则 属性和表达式
第12页
一般单元格命名规则
单元格的命名方式和excel类似,列上通过A,B,C,D,.......来命名 每一列,行上通过1,2,3,4,......来命名每一行,单元格通过“列 名+行名”来命名,例如:上图中蓝色方框内的单元格命名为 "A1"
润乾报表查询所有汇总

润乾报表查询手册整理:Yangmc1.怎么实现报表中行(列)的按条件隐藏?在报表设计器中,选择相应报表的主格对应的单元格,在其属性“是否隐藏本行”的表达式中输入if(ds1.count()==0,true,false),具体用法请参考润乾报表的函数帮助。
(设计器中的函数帮助查看对应函数的用法)2.怎么实现报表与jsp文件的无缝结合?在Tag页面中输入<body style="margin: 0px 0px 0px 0px>。
扩展:实现定制结合。
如果还不能达到要求,一般到解析报表文件的那个jsp文件中找错误设置。
如我在应用中遇到这样的情况,我在Tag页面中输入<body style="margin: 0px 0px 0px 0px>,但是在页面顶部还是有一块空白区域,经检查发现是多了一个无用的<table></table>所制。
3.报表中参数传递步骤首先,保证报表中设计没问题,具体表现是在设计器中浏览要达到目标。
其次,在解析报表文件的jsp文件的<% …%>设置参数,具体设置参考testinput.jsp。
最后,在连接中设置传递参数值。
如%root%testinput.jsp?report=””?¶m1=””+¶m2=””+ …4.报表样式设计报表样式设计是在设计器中进行的,通过相应的前景颜色或背景颜色来设置颜色样式。
通过相关的属性设置其他的样式。
基本可以满足开发的需要。
5.层效果设置选中要实现层效果的行(1,2,3,……)或列(A,B,C,……),在对应行类型或列类型的属性值中选择值(表头区,标题区,……)。
在网通项目应用中,我们是把表头设置在jsp页面中,这样也可以实现我们需要的效果。
至于具体怎么设好,可以根据具体应用以及方便性来实现。
6.显示特殊字符如果想要显示特殊字符,最好是用英文中的特殊字符,如果用GBK中的特殊字符,在设计器中没有问题,但是在发布的时候显示为问号(?)。
润乾报表实现组内排序报表及改进

润乾报表实现组内排序报表及改进报表开发中经常会遇到需要进行组内排序的报表,如按月份的分组汇总值排序显示,并显示每月销售额前十名的记录。
使用报表工具一般通过隐藏行列辅助可以实现,下面通过实例说明润乾报表的实现过程,以及改进方案。
报表需求根据销售管理系统数据统计客户所在地区的订单总额,地区并按订单总额降序排列,要求每个地区中显示销售额在前五名的销售人员及其订单数量和订单金额,其他人员归入“其他”项中。
报表样式如下:这里应该注意的是地区分组中如果销售人数少于5个则不显示“其他”项(如上图中的西北地区)。
润乾报表实现润乾报表实现主要依靠条件隐藏行实现,根据分组成员数量是否显示“其他”项,报表模板及表达式如下:在润乾报表中,使用ds.group()的多个参数,结合条件判断隐藏行,多种使用方法结合完成了报表开发,可见润乾报表的强大之处。
但是由于要按照分组后汇总的订单金额排序,所以在B3的分组表达式中应用ds1.sum(订单金额)表达式作为ds.group()的参数,对于原始数据量较大的情况下,该表达式效率较低;而且,由于只显示前5名销售,在C3(排名)和D3(其他)中设置了隐藏行表达式,对于分组较多的情况仍然会存在性能问题;另外需要在E3和F3中使用格集过滤表达式计算其他销售人员合计,计算时要带着单元格属性计算,效率仍然不高。
上述提到的问题在传统报表工具中皆是存在的,原因在于数据计算(报表数据源准备)与报表呈现混在一起导致,开发人员不得不再报表中编写较复杂的计算逻辑以完成报表开发,造成报表开发和运行效率都不高。
如果能将两部分分开,势必能提升开发和运行效率。
润乾公司在润乾报表的基础上,推出了可以完全满足复杂报表开发的集算报表,其内置了用于完成报表数据计算(数据源准备)的集算器,从而将数据计算和报表呈现剥离开,进一步梳理了报表开发流程,使得报表开发变得更加清晰。
上述报表需求使用集算报表可以这样完成:集算报表实现编写集算脚本使用集算脚本编辑工具完成计算脚本,并为报表输出计算后结果集:A1:执行sql得到初步汇总订单数据A2:按照地区分组后组内成员按订单金额排序A3-C7:循环A3,取前五名记录,并将超过第五的记录都归入“其他”项,结果写回A3A8:结果按地区总额降序排列后返回给报表报表调用使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(sort.dfx)报表模板及表达式报表模板中根据集算脚本返回的结果集,分别取得地区分组和销售列表等数据,无需复杂表达式即完成报表开发。
润乾报表——精选推荐

润乾报表集算报表5.0在保留润乾报表V4.x的核⼼功能外,进⾏了优化和精简,其中报表函数也做了适当优化,这⾥就常见计算来⽐较⼀下⼆者函数语法之间的差异。
对⽐函数⼀览表1、数据集函数1.1、ds.group()润乾报表:datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})集算报表:datasetName.group(<selectExp>{,filter_exp};{sort1}{:order1},…;{groupSortExp }:{ groupOrderExp })选项:@r 是否root数据集表达式。
主要改变:1、增加@r函数选项,取代原rootGroupExp表达式参数;2、取消分组前记录的排序顺序descExp参数;3、更改排序表达式和排序顺序参数语法。
举例:1.2、ds.select()/ds.select1()润乾报表:datasetName.select( <select_exp>{,desc_exp{, filter_exp{, sort_exp{,rootGroupExp}}}} )datasetName.select1(selectExp{,filterExp{,rootGroupExp}})集算报表:将原ds.select()和ds.select1()合并为ds.select(),语法如下:datasetName.select(<select_exp>{:order_exp},{ filter_exp },{num_exp},{distinct_exp})选项:@r 是否root数据集表达式。
主要改变:1、增加@r函数选项,取代原rootGroupExp表达式参数;2、取消数据的排序顺序descExp参数;3、更改排序顺序参数语法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
配 置 datasource 的名字、数据库 类型、数据编码
如何将定义好的润乾报表在 web 上进行发布? 答:将润乾报表安装包里 web 目录下的所有文件(除了 web.xml) ,拷贝到你的 web 应用目 录下,将润乾报表提供的 web.xml 文件中的内容拷贝到你的 web.xml 文件中;把报表文件部 署在 web 应用的 reportFiles 目录下,在 jsp 中调用 tag 标签来发布报表。tag 标签的写法参照 《润乾报表在 web 中的使用说明》 。 在 webserver 中配置 datasource,将 datasource 的名字在 web.xml 中进行配置。 报表工具是单线程的还是多线程的? 答:多线程的。 日志文件的位置我可以调整吗?还是就是规定好的? 答:可以在 web.xml 里进行配置。 <report:html 标签里面的属性,可以使用变量吗?类似<report:html name="report" reportFileName="tmp.raq" width="2000" params="Time=jsp 变量" 答:和 html 语法相同,需要用到变量的地方,用<%=变量名%>;但是一个属性里只能用一 个变量,所以如果你的属性值是由多个变量组成的,你要在 java 代码里先把这些变量拼成 一个变量 例 如 : <report:html name="report" reportFileName="tmp.raq" width="2000" params="Time=jsp 变量" 要在 java 代码里先这样写:jsp 变量="time="+jsp 变量 然 后 在 标 签 中 这 样 写 : <report:html name="report" reportFileName="tmp.raq" width="2000" params="<%=jsp 变量%>" 报表在编辑器中预览正常,但是在 WEB 发布时,从数据库中取出的汉字乱码 答:检查 web.xml 文件中,对应 datasource 的数据编码配置是否正确。 设计器端报表预览可以出来数据,但是服务器端发布的时候数据出不来: 答:先看应用服务器启动的时候,有没有报错,可能是授权证书没有拷贝到 WEB-INF 的目 录下;然后,再比较 runqianReport.jar 看是否一致;最后检查 datasource 的配置是否正确。
<report:param name="studentParam" paramFileName="studentParam.raq" /> <report:html name="student" reportFileName="student.raq" funcBarLocation="boTh" needPageMark="yes" functionBarColor="#fff5ee" funcBarFontSize="9pt" funcBarFontColor="blue" separator=" " needSaveAsExcel="yes" needSaveAsPdf="yes" needPrint="yes" pageMarkLabel="页号{currpage}/{totalPage}" printLabel="打印" displayNoLinkPageMark="yes" params="class=2;sex=1" saveAsName="学生成绩表" /> </body> </html> 运行结果如下图所示:
在页面发布的时候,把结果形成 PDF 文件,但会出现乱码。 语句如下: ServerletOutputStream outputstream = response.getOutputStream(); response.setContentType("application/pdf"); report.exportToPDF(outputstream); outputstream.flush(); outpurstream.close(); 错在哪里? 答:应该首先设置 response.setContentType("application/pdf"); 然后再获得数据输出流。
集成性和 web 发布
启动 Tomcat 的时候数据源绑定出错是什么原因 答:tomcat 不同版本的数据源 jndi 设置方式不相同,首先请参考 tomcat 相关配置手册,确 认 tomcat 的数据源配置正确。 另外需要特别注意的是在配置数据源之后, 启动 tomcat 之前需要把相关的 jdbc 驱动 jar 包拷 贝 到 tomcat 的 系 统 库 目 录 下 面 , 例 如 tomcat5 需 要 将 相 关 的 jar 包 拷 贝 到 <tomcat_home>/common/lib 下面,否则会报找不到 jdbc 的相关类的错误 其次, 查看 web 应用目录下/WEB-INF/web.xml 文件里配置的 datasource 的名称和您实际配 置的 tomcat 数据源名称是否一致
常见错误信息
out of memery error 内存溢出 答: 该问题可能是由于 web 服务器 java vm 的内存设置太小, 也可能是由于报表数据量过大; 解决办法: 1、 java 虚拟机的设置:java -Xms128m -Xmx384m,根据实际机器的内存配置,灵活调 整 2、 如果虚拟机设置后依旧出现内存溢出,可能是你的报表数据量过大,可以采取数据 集分页的办法或者数据集缓存的办法解决,如下图所示:
如何实现模糊查询? 答:需要模糊时,在 sql 中使用"like ?",然后在参数 tab 页中写上"%"+arg1+"%",如下图所 示:
sql 语句中使 用?
参 数 tab 页 中 使 用 "%"+arg1+"%"
我希望用户不输入参数值时,相当于全部选出,该怎么做? 答:在 sql 中使用 where coln=? or ? is null 等类似的语句
选中 B1 单元格,点击右键在弹出菜单中选择“数据类型及编辑风格” ,在弹出窗口中 设置其编辑风格为“下拉列表框” ,编辑代码值和显示值如下图所示:
选中 D1 单元格,点击右键在弹出菜单中选择“数据类型及编辑风格” ,在弹出窗口中 设置其编辑风格为“下拉数据窗口” ,编辑各项如下图所示:
最后保存此报表,完成参数表单的定制。 现在来看如何在网页中发布,如下 JSP 文件所示: <%@ page contentType="text/html;charset=GBK" %> <%@ taglib uri="/WEB-INF/runqianReport.tld" prefix="report" %> <html> <body>
参数和宏
参数在 SQL 语句中如何使用? 答:在 sql 语句中需要用到参数的地方,写上"?",然后在参数的 tab 页中,根据?的顺序, 依次写入含参数或者不含参数的表达式,如下图所示:
sql 语句中写上 问号
根据问号顺序写 入含参数的表达 式
参数能在单元格中使用吗?和在 SQL 语句中的用法有什么区别? 答:可以,直接引用参数名即可,把参数作为表达式的一个变量来使用,例如:=arg1+1
在此报表中,输入参数名标签,删除多余的行列后,如下图所示:
使 A1、C1、E1 单元格的“是否可写”属性为 false,将此报表存为 studentParam.raq。 选中 B1 单元格,在右边的属性列表中“参数名/JSP 引用变量名”填入此格对应的报表 参数名 sex,如下图所示。同样,对 D1 填入 class,F1 填入 month。
WEB 发布时,如果我自己定制参数输入页面,如何把参数值传递给报表? 答:在 jsp 中获得参数值,然后先在 JSP 代码中将参数串拼好,再传入 Tag 中,如下所 示: <% String params = "param1=" + value1 + ";param2=" + value2 + ";" … … ";macro1=" + value1 + … … %> <report:html … … params="<%=params%>" …… />
宏和参数有什么区别?怎么使用宏? 答:参数是有数据类型的变量,在报表运算过程中作为变量来使用。宏是一个字符串标识, 没有数据类型,报表运算之前,引擎会搜索报表定义,检索到宏名,替换成宏值,全部替换 结束后,才进行报表运算。 宏的引用方式:${macroName} 宏和参数在网页中如何传递? 答:方法一:通过 tag 标签来传递, <report:html … … params="param1=value1;param2=value2;… … ;macro1=value1;… … " …… /> 参数及宏的个数应该与报表中的参数及宏个数相同,参数名及宏名大小写一致。 如果参数值或宏值是变化的,那么应该先在 JSP 代码中将参数串拼好,再传入 Tag 中, 如下所示: <% String params = "param1=" + value1 + ";param2=" + value2 + ";" … … ";macro1=" + value1 + … … %> <report:html … … params="<%=params%>" …… />