润乾问题集锦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.引言1.1 概述概述部分的内容:在软件开发过程中,经常需要对报表数据进行处理和展示。
而其中一种常见的方式就是使用报表字符串组参数来实现对数据的格式化和灵活操作。
润乾报表字符串组参数就是一种用于报表设计和定制的软件工具,它能够有效地对报表数据进行处理和展示,并且具有一定的自定义能力。
润乾报表字符串组参数的基本思想是将报表的数据按照一定的格式组织成字符串,并通过字符串的操作和处理来实现对数据的展示和操作。
通过使用字符串组参数,我们可以对报表中的各个数据项进行灵活的排列和格式化,以满足不同的需求和要求。
同时,它还可以在报表设计和定制的过程中,方便地对数据进行修改和调整,以便更好地满足用户的需求。
润乾报表字符串组参数的使用非常灵活和方便。
我们可以通过设置参数的格式和内容,来实现对报表数据的格式化和展示。
例如,我们可以使用字符串组参数来设置表头、列名、数据行等信息,从而使报表具有更好的可读性和美观性。
同时,我们还可以通过设置字符串组参数的格式和样式,来实现对报表数据的精确控制和灵活操作。
这些功能的实现,使得润乾报表字符串组参数成为了报表设计和定制中的重要工具。
总之,润乾报表字符串组参数是一种非常实用和灵活的工具,它能够有效地对报表数据进行处理和展示。
通过使用字符串组参数,我们可以轻松地对报表进行定制和设计,满足不同需求和要求。
它的使用不仅可以提升报表的效果和质量,还能够方便地对报表进行修改和调整。
相信在未来的报表设计和定制中,润乾报表字符串组参数将发挥着越来越重要的作用。
1.2 文章结构在本文中,我们将讨论润乾报表字符串组参数的相关内容。
为了更好地理解和使用这些参数,我们将按照以下结构进行阐述:引言:在引言部分,我们将简要介绍本文的概述、文章结构以及目的,以便读者能够更好地了解本文的背景和目标。
正文:正文部分将分为两个要点进行讨论。
- 第一个要点:在这一要点中,我们将详细探讨润乾报表字符串组参数的定义、特点以及用途。
常见问题汇总FAQ
常见问题汇总FAQ⽬录⼀:门诊医⽣: (3)1、如何查询⾃⼰病⼈的处⽅信息 (3)2、如何添加诊断 (3)3、给⼉童开药的时候,药品剂量如何控制(例如半⽚) (3)4、保存处⽅时,报错提⽰“超出合理范围” (3)5、如何给⾃⼰做⼀个模板: (3)6、⽗⼦医嘱问题 (3)7、⾃备药如何处理 (3)⼆:门诊药房: (3)1、如何给药品增加别名 (3)2、添加了新的药品名称,在药品信息维护⾥找不到 (4)3、针筒滴灌等信息作为西药维护时的注意事项 (4)4、药品名称和药品信息填写完毕后,⼊库时找不到此药品 (4)5、如何查询药品⼊库时的数量 (4)6、如何查询药品库存,当药品数量不多时如何提醒 (4)7、门诊和住院的输液卡分别如何打印 (4)8、审核盘点的时候报错如何处理 (4)9、录⼊处⽅时,在处⽅类型中找不到“草药”或其他类型如何处理 (4)10、药房接收药品如何拆零 (4)12、各类报表如何查询 (5)三:门诊收费: (5)1、不⼩⼼点了发票打印,发票号对不上如何处理 (5)1、如何打印以前某⼀天已经结算过的“实收⽇报” (5)3、如何进⾏退费 (5)4、如何退处⽅中某⼀种或⼏种药品 (5)5、如何查询处⽅明细信息 (5)6、怎么使⽤收费员查询的功能 (5)7、如何修改病⼈名称(或信息) (5)8、诊疗项⽬收费信息如何维护 (6)9、实收实收⽇报加起来与门诊收费系统报表不符的原因 (6)10、关于门诊⼀天对账⽅式 (6)四:住院收费: (6)1、病⼈已经结算,此时发现忘记打印药单如何处理 (6)2、收费员如果发现医⽣医嘱上的药品数量或诊疗收费项⽬开错(多或者少了)如何处理 (6)3、如何给医院加床位 (7)4、如何打印住院病⼈的退药单 (7)5、结算时发现费⽤总数与收取预交⾦的总数不符(相差太多) (7)6、如何修改病⼈姓名、联系⽅式等信息 (7)7、在病⼈清单中,如何控制病⼈的住院时间 (7)8、预交⾦收据忘记打印如何处理 (7)五:住院医⽣系统: (7)1、病⼈ID (住院号)是否可以重复使⽤ (7)2、住院病⼈中药处⽅在什么地⽅录⼊ (7)3、如何对住院病⼈进⾏“退药”操作 (8)4、长期、临时医嘱的开始结束时间问题 (8)5、住院的处⽅模板如何使⽤ (8)6、如果我们发现病⼈的住院医嘱正确,但是收费处收费时却不是这个医嘱的问题 (8)7、病⼈综合查询⾥⾯我们今天看的医嘱费⽤有些查不到的问题 (8)8、停⽌医嘱的使⽤ (8)9、在门诊收费系统中添加⼀项收费项⽬后,住院医嘱中没有,如何添加 (8)六:住院医嘱 (9)1、医嘱药品的领量是怎么算的 (9)2、草药医嘱录⼊完成保存后,药房找不到草药药单 (9)3、停⽌医嘱与在处⽅中直接点击“⽴停”按钮有什么区别 (9)4、如何添加给药⽅式 (9)5、为什么有的时候在⼊院登记的时候⽆法选择床位 (9)6、如何查询病⼈费⽤信息 (9)七:系统维护: (9)1、如何给住门诊或住院的账单码上添加⼀类收费项⽬如“注射费” (9)2、当医院来新员⼯,如何给他/她在系统中添加使⽤权限 (10)⼋:其他⽅⾯ (10)1、病⼈转科处理注意事项有哪些: (10)2、双病区权限设置流程是什么: (10)系统FAQ⼀:门诊医⽣:1、如何查询⾃⼰病⼈的处⽅信息:答:在【综合查询】→“病⼈信息查询”中选择好时间范围点击“我的病⼈”按钮即可查询出⾃⼰的病⼈处⽅信息。
润乾报表调用参数
润乾报表调用参数润乾报表是一种常用的财务报表分析工具,可以帮助企业对财务状况进行全面的分析和评估。
在使用润乾报表时,我们需要了解如何正确调用参数,以获取准确的报表数据。
本文将介绍润乾报表的调用参数及其使用方法,帮助读者更好地使用润乾报表进行财务分析。
一、调用参数的作用和分类润乾报表的调用参数是指在生成报表时需要提供的信息,包括报表类型、时间范围、公司代码等。
不同的调用参数可以实现不同的报表功能。
根据调用参数的不同,润乾报表的调用参数可以分为以下几类:1. 报表类型参数:用于指定要生成的报表类型,比如资产负债表、利润表、现金流量表等。
通过设置不同的报表类型参数,可以获取不同类型的财务报表数据。
2. 时间范围参数:用于指定报表的时间范围,比如年度报表、季度报表、月度报表等。
根据业务需要,可以灵活调整时间范围参数,以获取特定时间段内的财务数据。
3. 公司代码参数:用于指定要查询的公司代码,适用于多公司集团财务分析的场景。
通过设置不同的公司代码参数,可以获取不同公司的财务报表数据。
4. 其他参数:润乾报表还提供了一些其他的调用参数,用于实现更复杂的报表功能。
比如币种参数、科目代码参数、部门代码参数等,可以根据具体需求进行设置。
二、调用参数的使用方法使用润乾报表进行财务分析时,正确设置调用参数是非常重要的。
下面以资产负债表为例,介绍润乾报表调用参数的使用方法。
1. 首先,打开润乾报表软件,在报表模块中选择要生成的报表类型,比如资产负债表。
2. 然后,在报表设置中找到调用参数选项,点击进入参数设置界面。
3. 在参数设置界面中,根据需要设置报表的时间范围参数。
比如如果要生成年度报表,可以选择起始日期和结束日期为一年的时间范围。
4. 接下来,设置公司代码参数。
如果润乾报表支持多公司查询,可以选择要查询的公司代码,以获取相应公司的财务报表数据。
5. 如果需要对报表数据进行进一步筛选,可以设置其他参数,比如币种参数、科目代码参数等。
润乾报表建议反馈
一、总体要求1.所有报表具备在A4纸打印格式;2.所有报表“列”无需显示二级、三级单位名称;3.GL日期显示位置在第一列;4.报表数据具备穿透查询功能;5.所有金额类数字均需要加千位分隔符,保留两位小数,并右对齐显示;(财务报表调整)6.科目说明?账户说明?二者能否用统一名称?7.所有查询报表名称命名规则一致,建议不带单位名称,如“公伯峡发电分公司10月购耗存统计分析表”,再如“黄河上游水电开发有限责任公司购耗余存明细表”不带单位名称恰当;8.“所属产业”=“产能性质”不显示;9.账户组合和科目名称的概念能否统一?10.“品牌”改为供货商或者供应商;11.同类信息集中显示,如发票信息在相近或相邻列显示;12.每一张报表最末端页脚处显示查询日期;13.所有信息均(数字、文字)支持模糊查询;14.支持新需求报表的嵌入及查询。
二、具体情况1.员工借款情况明细表:查询信息:员工姓名基础字段:发票在同一供应商名下按类型排序,并小计同类型发票金额,同时汇总显示所有供应商同类型发票金额。
2.供应商业务明细表:查询信息:供应商名称基础字段:需要显示本季累计;类型的概念不清晰;事务处理编号规律化。
3.供应商余额表:查询信息:供应商名称基础字段:“借方金额”改为“本期借方”,“贷方金额”改为“本期贷方”,“借/贷”改为“方向”。
4.购耗存统计分析表:查询信息:采购情况、消耗情况、库存情况基础字段:“库存结构”概念与习惯概念不符;“累计采购金额”属于本年累计还是历史累计?“去年累计采购金额”改为“上年”;“累计消耗金额”属于本年累计还是历史累计?“同比累计消耗金额差异(+-)”改为“同比消耗增减”。
5.购耗余存明细表:查询信息:物资名称、各类累计金额、基础字段:“物资类别”—通用材料及制品.电工材料.电线电缆.铜塑线,分类的依据及源头?谁在划分类别?意义?“累计采购量”、“累计采购金额”、“累计消耗数量”、“累计消耗金额”概念不清,属于历史累计还是本年累计;增加“期初存货单价”显示,也可用合并单元格汇总显示期初及期末情况;“期末存货金额”改为“期末余额”。
润乾报表使用技巧分享
润乾报表
1.关于隐藏列的导出问题:
如果报表中使用了隐藏列,则在保存为EXCEL后会出现如下情况:
(1)被隐藏的列或单元格中的值会显示出来。
2.如何分页打印表头:
在分页打印报表的时候,如果想将表头在每页都打印出来,则可以将表头做冻结。
3.如何确定表格的分页方式:
在设计器中选择属性报表属性。
在弹出的窗口中可以设置报表的分页方式。
4.创建报表时应注意的问题:
创建报表时通常选空白报表选项,使用其它模板创建出来的报表,会出现一些扩展后不显示之类的奇怪问题。
5.扩展时注意事项:
(1)在选取字段的时候尽量使用数据集函数group();
(2)这个函数中字段与条件之前是两个“,”号分开的,他省略了一个对数据集的排序方式选项。
(3)尽量在数据集中排序,在报表级排序对性能有一些影响。
6.属性格中的一些使用技巧:
在属性窗口中每一个属性后都会有一个“…”按钮,这个可以用来写表达式控制该属性是否起作用。
如:
当满足某种条件是该行显示,则可以这样写
也可以设置满足某种条件后,某行或某单元格的背景色等等。
7.报表列过多:
有时报表计算的列过多会报JA V A堆空间不足异常,这时可以修改一下TOMCAT JVM 中内存区的值。
润乾报表教程
润乾报表V4.0 高级教程北京润乾信息系统技术有限公司第1章序言中国式报表有别于西方报表,中国式报表很复杂!润乾报表是专门用于解决中国式复杂报表的报表工具!润乾报表软件的核心特点在于开创性地提出了非线性报表数学模型,采用了革命性的强关联语义模型、多源关联分片、不规则分组、自由格间运算、行列对称等技术,使得复杂报表的设计简单化,以往难以实现的报表可以轻松实现,避免了大量的复杂SQL编写与前期数据准备,报表设计的效率提高了一个数量级。
润乾报表采用JA V A开发,由两个部分构成:报表设计器和报表服务器。
润乾报表是一个很容易掌握的报表工具,对于复杂的中国式报表,完全不需要编程和复杂sql,只需要学习简单的表达式规则,就可以完成。
为了帮助读者快速掌握润乾报表的非线性模型用法,我们在《快逸报表V4.0入门教程》的基础上编写了这份《润乾报表V4.0高级教程》,希望读者先学习《快逸报表V4.0入门教程》,再来学习这份文档,效果更好。
本教程沿袭《快逸报表V4.0入门教程》的思路,避免复杂的概念,通过由浅入深的实例,深入浅出的讲解,辅以有针对性的练习题,一步一步帮助读者迅速掌握润乾报表的非线性报表模型的理论和操作。
只要你照着本教程去做,半天就可以初步掌握润乾报表。
希望在轻轻松松的过程中,你能很快地掌握非线性报表设计!第2章多源关联分片这份文档的思路,不再强调界面操作上的东西,比如某个按钮在哪里点,某个对话框怎么打开,更多地强调表达式怎么写,模型的原理是啥,表达式的规则是啥,用到的函数等2.1 多层交叉报表2.1.1一个例子我们先看下面这个多层交叉报表:[截图]从上面这个报表可以看出,这是一个多层的交叉报表,上边有两层动态横向扩展的上表头,左边有两层动态纵向扩展的左表头,中间的交叉点进行汇总统计,统计值和上表头、左表头息息相关。
我们看一下这样的报表在润乾报表中是如何设计的:1、首先定义数据集:[列出这个报表用到的数据集及其sql即可]2、写入单元格表达式,如下图所示:[设计界面截图,把格子拉大,表达式尽量看全]从上图可以看出,上表头分别通过[ ]格和[ ]格横向扩展形成,左表头通过[ ]格和[ ]格纵向扩展形成,中间的交叉点利用[sum]函数进行汇总,于是一个多层交叉报表很轻松就完成了。
润乾报表实用技巧大全
=floor(3451231.234,1)
返回: 3451231.2
round()
对数据在指定位置上 进行截取,剩余部分 四舍五入
=round(3451251.274,1)
返回: 3451251.3
字符串函数
函数名称 函数说明
去掉字符串左右的空 串
实例
实例说明
trim()
trim(" abc ")
常用单元格函数
函数名称 函数说明
对可扩展单元格或集 合表达式求平均值
实例
实例说明 表示当前主格扩 展区域内所有扩 展后的B1单元 格的平均值
avg()
avg(B1{})
if()
根据布尔表达式的不 同计算结果,返回不 同的值。
求当前格的值大 if(value()>100,-65536) 于100时,返回65536颜色值 求当前主格扩展 区域内所有扩展 后的B1单元格 的个数
相同的大小写,并将电子签名文件存放到润乾文件目录下的统一目
录中。如下所示。
2.在需要签名的单元格上右击,选择“数据类型”,在弹出的对话框中 选择图片文件。
制作电子签名
3.修改内容为:=“reportFiles/image/”+RNAM+“.jpg” 点确定保存。
制作电子签名
4.在浏览器中查看签名
网格式填报表-自动计算
• 基本概念
– 在客户端浏览器中跟据输入自动实现单元格值计算
输入自动计算的表达式的规则如下:
• 自动计算的表达式语法规则全部采用 操作 JavaScript 的语法规则。 • 自动计算的表达式中,如果需要相对引用单元格,即当报表进行扩展 注意
打印补空行
关于润乾报表的补充说明
分页说明:为方便大家开发,本人在工资系统中作出一个DEMO,经过测试后能正常使用。
先将部分代码与注意事项发给大家看一下第一步:如果该报表需要分页的话,请将下面的<form action="${ctx}/rq/report/showExt"method="post"id="reportForm"> <input type="hidden"name="raq"id="raq"/><input type="hidden"name="param"id="param"/><input type="hidden"name="countSql"id="countSql"/></form>替换掉原先的。
第二步:增加$j("#countSql").val("分页语句");请注意字符串的要写单引号:并且写成如下形式:\\'${字符串}\\'ShowExt.jsp 修改成<report:extHtml name="report1"reportFileName="<%=raq%>"funcBarLocation=""params="<%=param.toString()%>"needPageMark="yes"pageCount="20"totalCountExp="<%=countSql%>"paperHeight="600"/>附录:3.8. 分页计算标签本功能采用报表组的原理来实现,因此需要支持报表组的授权3.8.1. 概念定义使用分页计算标签可以在报表比较大的情况下实现以页为单位对数据进行读取和展现及导出等操作。
润乾内存溢出解决方案
内存溢出作为软件使用过程中极其不希望看到的难题,一直困扰着软件开发与使用者。
当然在报表应用的使用过程中,如果配置或使用不当也会出现内存溢出的问题。
出现内存溢出的问题我们要敢于面对,要通过适当的排查方法和相应的解决步骤一步一步找到问题出现的原因并最终解决掉该问题。
本文对使用报表过程中出现内存溢出问题进行简单地分析,给出一些建议性的排查步骤和解决方法。
排查步骤与解决办法1 定位问题首先我们要判断出现的问题是否是由于内存溢出引起的,典型的后台信息是带有Out Of Memory字样,但是也不排除其他内存溢出的提示,如tomcat内存溢出可出现三种提示信息:Java heap space、PermGen space和unable to create new native thread。
而有时线程死锁也会导致应用挂掉。
所以我们看到具体出错信息如果判断不出是何种问题,最好上网查询确认一下。
2 判断是否与报表有关一般来说,任何应用都可能出现内存溢出,所以当我们确定出现了内存溢出,接下来要做的就是划分区域,判断内存溢出是哪部分引起的。
一般报表应用与客户自己应用相结合的系统出现内存溢出的问题,需要判断该问题是否是由报表引起的?具体方法是单独部署报表应用并执行原操作,看是否会出现内存溢出。
若此步骤问题重现,则按照如下步骤进行;否则,可能说明与报表无关,当然也可以按照下面的步骤继续进行排查。
3 查找问题出现的共性一般内存溢出不会只出现一次,这就要求我们记录每次出项问题的共性。
如:是否访问某张特定报表时出现?是否访问量达到一定程度时出现?是否访问一些大数据量报表时出现?下面给出在如下情况下的建议设置:3.1 访问某个特定报表时若我们发现,内存溢出每次均出现在访问系统中某张报表时(一般后台信息也有体现),这时我们就需要拿这张报表看看了,主要查看报表设计是否合理、表达式以及sql语句是否性能极其低下、报表计算是否非常复杂等。
润乾集算报表提升性能之格间计算
润乾集算报表提升性能之格间计算如果报表存在很多单元格间计算,会对其性能影响很大。
这是因为1、单元格之间的计算无法分步骤编写,很难优化。
2、单元格计算可能会多次遍历单元格集才能完成。
3、单元格计算要利用较多的隐藏单元格作为中间变量,隐藏单元格除了单元格值外,还记录了很多显示属性值,比如:字体、颜色、显示方式等等。
虽然单元格隐藏了,但是这些属性还在,而且带着这些属性计算,也会影响计算速度。
下面这个《雇员销售情况排名》报表就是比较典型的格间计算影响性能的例子:报表要求按照员工姓名排序,根据订单总价来排名,并且计算“和上一名的差距”。
下面用格间计算来设计报表,并分析计算的性能:首先定义sql数据集ds1,其sql如下:SELECT EMPLOYEE.EID,MAX() 姓名,sum(订单明细.数量*订单明细.单价) 订单总价FROM EMPLOYEE,订单,订单明细WHERE 订单.订单ID = 订单明细.订单ID AND EMPLOYEE.EID = 订单.雇员ID group by EMPLOYEE.EID order by 姓名可以看到,由于输出结果要按姓名排序,就只能写作ORDER BY姓名。
姓名、订单总价都是从数据库中用sql计算出来,不需要讨论。
“排名”C2单元格利用了格间计算,对每一行的订单总价,找出所有订单总价中比本行值大的个数。
也就是说每计算一个雇员的排名,就要遍历一边所有的订单总价。
类似地,D2计算“和上一名的差距”,要再做一次按条件寻找的层次坐标。
这个遍历还存在引用关系的处理,要等排名列计算完才能算差距列,但报表计算次序一般是从上到下的,会导致多次失败的试算(试图计算某格,如果发现该格引用的格未计算就要存放等待着下一轮再计算)而浪费时间。
因此,格间计算对订单总价遍历了n次,n是雇员个数。
两个格间运算的总体复杂度是2*N*N。
采用润乾集算报表方案,可以编写过程化的集算脚本解决格间计算影响性能的问题。
润乾问题集锦FAQ
常见错误信息
out of memery error 内存溢出 答: 该问题可能是由于 web 服务器 java vm 的内存设置太小, 也可能是由于报表数据量过大; 解决办法: 1、 java 虚拟机的设置:java -Xms128m -Xmx384m,根据实际机器的内存配置,灵活调 整 2、 如果虚拟机设置后依旧出现内存溢出,可能是你的报表数据量过大,可以采取数据 集分页的办法或者数据集缓存的办法解决,如下图所示:
宏和参数有什么区别?怎么使用宏? 答:参数是有数据类型的变量,在报表运算过程中作为变量来使用。宏是一个字符串标识, 没有数据类型,报表运算之前,引擎会搜索报表定义,检索到宏名,替换成宏值,全部替换 结束后,才进行报表运算。 宏的引用方式:${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%>" …… />
- 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%>" …… />