请上传宽度大于 1200px,高度大于 164px 的封面图片
    调整图片尺寸与位置
    滚轮可以放大缩小图片尺寸,按住图片拖动可调整位置,多余的会自动被裁剪掉
取消
shockway(uid:1380)
职业资格认证:尚未取得认证
参数界面的展开效果有点问题
这个比较容易还原。截图的模板见附件。 这个要么报表主体和参数界面一起往下滚,要么参数界面滚的时候把报表主体盖住,这样多出块白的感觉不和谐。
表单会出现双层滚动条
不光是报表块,其他的块也是有这个问题的,比如视图树块。
表单中报表块的预览图
原因是表单中的报表块的预览是以图片的形式保存在表单里的,只有点击表单的保存按钮这个图片才会更新,所以如果是在报表编辑完不回到表单界面进行保存就不会更新图片,感觉这个有问题,会让人觉得奇怪,不晓得修改成功没有。 附件图片是删掉了报表块的二三四行,重打开看到还在,但是进入编辑已经没有了。
表单中加报表块的保存触发时机有问题
点击保存的话整个cpt会重写一次,如果到了后面的版本打开之前版本做的就会重写成新版本了。
gis地图设置了自动刷新有问题
其他图表自动刷新数据点提示没问题 不知道是不是bug
表单数据集删除后撤销有问题
很容易还原 就不上传模板了
论坛昨天晚上注册用户过万了,发个水贴mark
rtrtrtrtrtrt
fedora17下遇到的mysql密码问题以及解决方法
最近搞linux下的mysql,听说fedora好装,就用fedora17装了,安装过程很傻瓜很顺利。参考资料http://www.if-not-true-then-false.com/2010/install-mysql-on-fedora-centos-red-hat-rhel/ 但是重启后杯具了,死活登不进去。应该是密码错误,搜了搜没解决,重装fedora重装mysql,又在那地方同样的杯具了。 最后终于找到了原因和解决方法。 在windows下装mysql定义密码都是直接写的,但是fedora17下装的5.5.27默认需要手动给设置的密码加密。需要用到password方法。所以正确的修改或定义密码的语句是 update user set password=password('skw') where user='root'; 其实这个我一开始就怀疑是这个问题,后来第二次装的时候设置密码用的password函数说函数找不到。也不晓得啥原因。 这时候没有密码进入mysql的方法是编辑/etc/my.cnf文件。 在socket=/var/lib/mysql/mysql.sock后面加上skip-name-resolve和skip-grant-tables,加了第二句登录的时候就不会对权限表进行验证,没密码直接就登录进去了。这样登录进去后不能添加用户,只能执行修改操作。 所以update user set password=password('skw') where user='root';这时候就没说password方法有问题。然后注释掉my.cnf中的加入的两句,重启,搞定。
FR几个模块的语法特点简介
一、公式编辑框 FR用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式,虽然那个编辑框非常不像。 简单的说下自己感觉的公式要注意的几个地方: 1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3))。 2.switch语句也是,具体函数我不说了。 3.对于判断用单等号和双等号都行。 4.对于字符串用单引号和双引号都行。 4.1bool只有true或者false。与逻辑还是&&或逻辑还是||。 4.2判断为空的话用isnull()。 4.3format公式。format公式比较灵活。format($$$,"0.00")可以把当前单元格的数字转换成两位小数的形式,也可以用format(12,"预算值:0.00万元")把12变成预算值:12.00万元,这个是不是和自定义显示数据字典神马的有异曲同工之妙啊。有一点要注意的是,满位数年月日的话样式是"yyyy-MM-dd",而不是"yyyy-mm-dd",小写的mm的意思是分钟(minute)。 5.公式中取单元格的话直接用A1这种或者b2,跨sheet取值的语法是sheet1!A1.(英文情况)这些文档有。 6.sql函数,这个是在公式中直接调用数据库的方法。 7.数据集公式。 数据集公式是公式直接调用数据集的方法。这个公式说明中没有(有几个零散的和数据集相关的函数),我说一下。 比如有个模板数据集ds1,其字段为地区、销售员、销量,则可以用ds1.group(地区)获取ds1的地区字段,group是分组,从而容易知道select是列表,ds1.select(销售员)便是列表形式获取销售员字段,可以加上限制条件,比如ds1.select(销售员,销量=111)就是获取销售量为111的销售员集合。 跟数据集相关的几个函数有colcount colname row rowcount 等。 8.层次坐标。 层次坐标是公式里面比较难点的,“可玩性”非常强,东西比较多,只能记住最常用的几个,能解决各种各样BT的需求。较为常用的一个就是排名公式了=count(B3{B3 > $B3})+1。自己看吧。http://www.finereporthelp.com/help/1/4/7.html 9.过滤公式。 过滤有两个条件类型,其一是公式条件。这个公式有一点点不同的是,可以直接写当前单元格的字段所在数据集的任何字段,相对于普通公式要灵活很多。还拿自带的销量表为例,给地区字段所在单元格过滤,公式条件可以直接写:销量==111。 10.条件属性。 条件属性要说的不是公式方面的,用的多了感觉很自然,但是刚接触的时候感觉不太好理解。简单说下。条件属性面板,上面是属性,下面是条件。当下面的条件满足,也就是返回值是true的时候,执行上面的属性设置。 ------------------分割线-------------------- 二、sql编辑框 数据集定义的面板,也是报表中最常用的模块之一。 1.我理解的执行过程。 这里其实是生成一个字符串,FR将这个字符串通过设置的数据连接传递到报表中执行。在这个过程中报表应该是先把报表规则的东西(比如现在6.5和7.0的规则是${}中放参数),替换成大家都认得的字符串后,对应的数据库执行完,会反馈值,有可能返回报错信息,也有可能返回数据集。这个报错信息应该是对应的数据库给的。所以说同样的sql语句,不同的数据库用不同的sql语法来执行有可能是不同的结果。比如select 'sdf'在access和sqlserver正常显示,在oracle就抛错。用select version()或者show status或者show tables能在mysql的数据集定义里正常执行,其他则不行。 sql中的and和or要和公式区别开,有人可能在公式里面把&&用成and。还有公式里面的或||在oracle中是字符串的连接符。 2.sql中调用公式 报表通过公式和参数实现与sql语句的交互。 公式放在框架${}中。于是${"select * from t1"}其实就等价于select * from t1。 数据集中用公式的难点在于拼接起来比较繁琐。 我想很多人接触到的第一个例子应该是帮助文档上参数为空返回全部的sql语句:SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")} 下面举个调用FR中format的例子: select ${"'"+format(p1,"yyyy-MM-dd")+"'"} from aa 如果漏掉format函数前后的单引号,就会得到错误的结果。其实有的时候可以通过一些方法简化处理的,比如再声明一个变量p2,引用这个变量的定义是format(p1,"yyyy-MM-dd"),这时候上面的sql就变成了select '${p2}' from aa 【当然如果没有加引号的话那p2就被解析为一个字段名了,这是动态字段的实现方法了】 对于存储过程,数据集定义这地方其实是支持call和exec的调用方法的。7.0中把存储过程移到服务器设置里面,是在引导大家用这种更简易的调用方法,但是6.5旧的调用方式也是支持的。 3.sql中调用sql函数 前面说到,sql语句其实是字符串。其实是可以从数据库调用字符串作为一个sql语句进行操作的。这个要用到sql函数了,说例子: =sql("FRDemo",sql("FRDemo","select testtext from test where id=2",1,1),1,1) test这个表里面的第二条数据的testtext字段就是字符串 select top 1 地区 from 销量 可以把这个字符串用在sql公式中作为sql语句执行 数据集定义那边这么写是可以的 ${sql("FRDemo","select testtext from test where id = 2",1,1)} -------------------分割线---------------------- 三、js编辑框 1.FR的js。 作为一款BS产品,browser端的JavaScript是必不可少的。 FR中的js是已经调用了finereport.js的。 大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FR的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法。上面是盗用FR官方文档上的一段话。自己写的web想用FR现成的东西的话需要先引用finereport.js。 2.区别。 js大致有两种,页面相关状态的事件还有就是按钮相关的事件。按钮有三类,一类是工具栏的,一类是参数面板或者表单模式的,还有一类是填报页面的。不同按钮的某些语句稍微有些区别的。 表单是form,填报是write,以获取控件并给控件赋值为例 this.options.write.getWidgetByName("p1").setValue("aaa");//填报 this.options.form.getWidgetByName("p1").setValue("aaa");//表单,参数界面 7.0加了contentPane.getWidgetByName("p1").setValue("aaa");//对于工具栏的按钮,和单元格中的不在同一个框架或者容器,不能简单套用 js取值可以通过控件或者单元格,6.5的参数面板也是单元格的形式,这其实有点误导的地方在于,不能通过参数面板的单元格获取东西的,参数面板其实是没有单元格的,写了后会产生逻辑错误,调用了报表主体中的单元格,我们都知道有参数面板的话,参数面板是在报表主体之前加载的,甚至是在报表的加载起始事件之前,所以这样就有可能会调用还没产生的报表主体单元格。 3.js编辑框调用公式。 公式放在框架"${}"中。 比如var v1="${len('sdf')}";那么v1就为3. 这个跟数据集定义和公式交互可以比较一下。js中""下面的就是字符串,sql其实就是字符串,sql定义的地方是${}里面的是公式,于是推理下JS编辑框中"${}"就应该是公式。 但是这里要注意下,不能就这样简单类比了,毕竟处理方式上还是有区别的,sql那边是把公式参数什么的都一股脑的在报表中拼接完了,再一起送到数据库来跑,js却不能这么简单拼接。 -------------------分割线--------------- 四、URL地址栏 这边就谈不上什么语法特点了,实际应用中也不会在url中直接写,大多是嵌入或者跳转的时候用。简单说下url中的参数吧。 首先是op参数。文档:http://www.finereporthelp.com/help/6/3/3.html 报表在默认情况下的预览方式是分页预览,当op参数为write时为填报预览,op=view是数据分析,op=form是表单模式 op=fs,数据决策系统 op=fr_platform,报表平台管理 op=excel_submit,后台excel导入填报 op=auth_login,登录的中间页面,需要fr_username和fr_password参数 op=fr_adhoc&cmd=ac_init_analysispane&viewname=数据集名字,单独打开BS设计器 其他的参数: __bypagesize__ :控制是否分页 __pi__ :是否显示参数界面 __filename__ :控制导出文件名,没有的话默认用模板名 就说这些吧,需要注意一点的是,7.0版本相对于6.5版本很多参数都改动了。至少目前来说文档上有些不对应的地方,大家遇到也不要太奇怪,跟FR反映一下就可以了。
新版本设计器的小问题@701
自定义父格面板的问题。 选择行列后,鼠标点到单元格上,输入的行列结果不会生效。必须是按enter或者继续在那个属性面板上做些其他的操作才能保存父格。 另外,修改阿拉伯数字的列,会在后面自动多一个0,这个记得在655版本的填报属性设置面板出现过,7.0中改好了。希望这个也改一下。 4803
罗列下FR使用中遇到的常见报错及解决方法
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志(6.5的日志在设计器的菜单栏有窗口视图日志)。下面简单罗列下常见的问题,大多文档上都有提到的。 address pool is full: 地址池满,连接数超过并发数上限。 文档 使用了未注册的功能: 未注册的版本是可以试用所有功能的。注册的lic是勾选过功能点的,如果制作的模板使用了未注册的功能就会报这个错误。一般容易分辨,有的客户可能禁掉报错界面,这样测试是好的,一放到服务器上就出不来,没有报错界面就不太容易发现了。 文档 提示注册: 注册常见问题处理方法:http://www.finereporthelp.com/help/9/4.html 文档 session timed out: session超时。 文档 没有返回数据集: 在存储过程中的操作语句之前加上set nocount on 或者在数据集exec调用存储过程的前面加上这句。 当SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。 如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 文档 模板文件损坏,或者打开模板没有反应: FR的cpt模板由设计器做出源文件是一组组的标签括起来的语句。像HTML的结构那样,可以用文本编辑器打开。有些客户的模板可能做的比较BT,或者高低版本乱捣鼓,或者正操作着出现什么DT的情况导致模板不完整。一般报错会告诉出错的位置。655版本可以用bak文件还原下,7.0就不太好办,可以尝试填补部分语句主要是标签来抢救部分模板。 找不到模板: 找不到模板可能的原因看看是不是URL的问题,直接在模板中写中文的话,有些浏览器是会自动转码的(记得chrome、搜狗好像是),有些不会,比如IE。 文档 java heap space、stack overflow: 这个问度娘。常见的原因是模板做的很复杂,用了上百字段,上百行的sql语句,各种嵌套,尤其要注意有没有死循环。也有可能是服务器端的问题,比如tomcat最大内存太小了用了默认的64M。 数据集定义中有下拉复选框参数出问题: 下拉复选框控件返回值默认情况下是数组,参数取到的字符串是不带引号的(所以在数据集定义的sql语句中调用字符串类型的参数的话要手动加上单引号才行)。多个值用in,sql的in语句参数是字符串数组,每个都要求带单引号。所以要转化下,把控件的返回值改成字符串,间隔符用','。 文档 本地预览的效果和服务器上的效果不一样: 首先检查jar包等是不是有问题。也有可能是嵌入平台后出现的问题。 文档 平台管理忘了密码或者登不进: 报表平台管理只有一个账号,用户名和密码放在web-inf/resources/privilege.xml中。655密码没加密,7.0密码是加密的,密码在标签中,把里面改成密码就是一个1.用这个密码登进去再重新设置。 图表中文乱码(方框): 这个Linux环境下装了oracle后容易出现这样的情况,方框是缺少中文字体的缘故(常见英文字体各种环境应该都有的)。安装对应的中文字体即可解决。 大块头的数据库搞坏字体环境并不少见,上次在win7里面装domino,好多软件的字体都被搞了,重装了系统的中文字体重启了计算机才恢复正常。 数据集预览的时候中文乱码(全问号): 乱码有几种情况:一种是方框,这个是字体的原因,画不出来汉字。一种是问号,这个是编码的问题,比如mysql数据库默认的编码是latin1,库里面没有中文对应的编码,就解析不了中文,解决方法是改变编码,比如把mysql的编码改成utf8或者gbk。这里要注意下的是,数据库有服务器编码,客户端编码,具体的某一个数据库和具体的表也有编码,只有在建数据库建表的时候选对了编码才行(没选的话就用的默认的)。 repeated column width is larger than paper width: 这个看这段话应该是很好理解的。比如做的模板页面宽度只能放开5列,结果给6列做了重复和冻结,这个逻辑上肯定是说不过去的。 文档 模板打不开,拒绝访问: 可能是win7操作系统对文件有权限。 安装设计器后无法预览报表(404报错): 文档 对象不支持此属性或者方法、XXX未定义: 文档 THREE未定义: 自己没碰到过没解决过。 日期比较导致出错: 我测试用的是自己搭的sqlserver2005.2012/01/01这种格式的日期和FR上的2012-01-01这种格式的是不能比较的,直接从数据库中读取的日期格式都比较长,不光是年月日,而且读不出来,不知道是为什么,预览时可以看到的。然后我加了个在条件属性中加了个left(todate($$$),10)转化了一下就解决了,todate转化成了-连接,前10是年月日。 由一个单元格扩展出来的行高不一致(填报预览): 但是分页预览却是没有问题的。最后发现时因为设置了数据字典。设置了数据字典的单元格其真实值一行显示不了的,就换行了,所以变宽了。难道是填报预览时计算需要空间的时候用的是真实值计算的?解决方法,注意点,拉宽点就好了。 使用程序数据集出错: 654和655都有个问题是加载了有问题的class文件作为程序数据集,下次就打不开了,655是设计面板单元格界面没有了。7.0版本没这个问题。 程序数据集class文件必须放在class com fr data目录下。 编译好了后的class名也是不能修改的。 自定义数据字典显示等号问题: FR的像自定义数据字典这种地方,跟单元格还有提示定义框一定,如果不是‘=’号开头是当做字符串处理,‘=’号开头当做公式处理。所以单写一个等号就是空白的。显示等号的话用="=" 一个单元格内容过多报错: 临时解决方法,直接合并多个单元格可以增加输入内容。 长长的省略号。。。。。。。。。。。。
个人成就
内容被浏览64,572
加入社区12年40天
返回顶部