Archive for the ‘web报表应用’ Category

季度与月份的关系

08.19.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

润乾报表为客户提供了非常多的功能函数,可以让用户方便的取到年,月,日等信息,但现在还没有提供季度之类的函数,本文就来介绍一下月份与季度的关系:

一、根据已知月份数求出该月份所在的季度数和该季度的最小月,最大月

A、季度最小月份求法:
季度最小月份=已知月份-(已知月份-1)%3 或 季度最小月份=已知月份-(已知月份+2)%3
B、季度最大月份求法:
季度最大月份=已知月份-(已知月份-1)%3+2 或 季度最大月份=已知月份-(已知月份+2)%3+2
C、季度数求法:
季度=(已知月份-(已知月份-1)%3+2)/3 或 季度=(已知月份-(已知月份+2)%3+2)/3

二、根据季度数求该季度的最大月最小月份

A、季度最小月份求法: 季度最小月份=季度*3-2
B、季度最大月份求法: 季度最大月份=季度*3

下面以几个事例来简单说明一下:

有了这几个公式就可以轻松的转换了。

下面以季度统计额来说明,以年份分组,然后统计出每个季度的订单数和销售额,有了季度,就可以知道此季度中的最大月、最小月,进而统计最大月、最小月的销售额了。

利用隐藏列对扩展格显示值求和

08.17.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

润乾报表中,获取报表中单元格显示值的函数是disp(),然而这个函数却无法计算扩展单元格的显示值,从而无法直接对扩展格显示值求和。

在下图中,需要计算D3单元格的显示值之和。

D3值为:ds1.再订购量

D3显示值为:value()+ds1.订购量

实现思路

用隐藏单元格技术,将显示值转换为值,然后调用sum()函数,从而对扩展格显示值求和。

具体步骤

1.追加一个数据列,选择该列,在设计器右侧属性栏中”隐藏列”选中。

2.将E3的值表达式设为 int(disp($D3))。由于E3的默认左主格为B3,D3和E3会同时扩展。

3.将D4的值表达式设为sum(E3{})。

最终的显示效果如下所示:

注明:disp(cell),取单元格的显示值,参数cell为单元格,返回值为字符型。

润乾报表中获得指定日期为当年第几天

08.10.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

在使用润乾报表的过程中,有些时候会遇到这样的一些情况,就是希望获得一个日期是那个星期的第几天,那个月的第几天或者是那一年的第几天。

对于前面两个需求,我们可以使用day() 函数和dayNo()函数。对于获取指定日期在那一年中属于第几天,可以使用daysAfter()函数和year()函数来实现。如下图所示我们分别算 出了2010.07.27(使用=now()函数)、2008.08.08(特定日期)和2009.02.01这三个日期分别属于同年的第几天。

下面来看这个功能是如何实现的。

使用=now()函数实现当天的计算:”=daysAfter(datetime2(year(dateTime(now()))+”0101″,”yyyyMMdd”),now())+1″,先求出今天属于哪年,求出当天和当年第一天”0101″的差距,然后加一即可。

对于第二个和第三个指定日期可以使用这样的公式来计 算:”=daysAfter(datetime2(year(datetime2(”20080808″,”yyyyMMdd”))+”0101″ ,”yyyyMMdd”),datetime2(”20080808″,”yyyyMMdd”))+1″。首先还是使用指定的日期获得其年份并求出年初第 一天,然后与其进行比较后加一。

关于计算的正确性可以通过第三个日期进行一下验证:20090201这个日期之前一月份有31天,所以这一天很明显是09年的第32天。

润乾报表中主子表引用问题

08.06.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

人们在使用润乾报表的过程中,常常希望某个报表中间包含了一片或者多片单元格,这些单元格片段和报表之间往往有一个共同关注的对象,但是同 时各自又有一个独立的主题,片与片之间往往没有直接关联。这样的报表我们称为主子报表或者复合报表,有着共同主题的单元格片段称为子报表,而复合报表本身 称为主报表。

关于主子表的制作,在润乾帮助文档中,已经有了很详细的介绍。这里就不做阐述。

如下图所示即为一个最简单的主子表。

在设计主子表的时候需要注意的一个问题是,在正常的使用中,主子表大多数情况都是以相对路径的方式来引用的。然而在使用相对路径的时候,都会有一个 路径的检查过程,如果不是将报表直接发布到应用资源路径下,在这个路径下另外还有文件夹的话,其子报表的引用路径需要手工填写,不能直接添加否则报错。

本例中,作者就是直接选择的路径,但是由于作者在目标路径下建立了一个名为mc的子文件夹,于是选择子报表是报错。对于这样的情况我们可以手动填写相对路径的url为:mc/hz.raq即可。

通过给定日期判断其属于第几季度

08.05.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

熟悉润乾报表的人都知道,润乾报表为广大用户提供了功能非常强大、数量非常多的数据处理函数。sql中涉及的函数几乎全部被包括,sql中没有涉及到但是在学习和工作中经常会使用到的函数也被润乾报表收录了很多。这些函数为报表工具的使用提供了便利条件。

很多人在使用润乾报表提供的日期处理函数时会发现这样一个问题,润乾报表26个日期时间函数中,涉及到了获得指定日期时间的年份、月份、日期、小时、分钟等等。如此多的函数中唯独缺少了获得指定日期季度的函数。然而这个函数还经常会被用到。

网络上有一些获得指定日期所属季度的sql语句,但是效果普遍不好。有些语句还依附于指定的数据库,换成其它的数据库则无法达到相同的效果。

下面介绍一种方法获得指定日期所属季度。

例如:下面这张报表对销售业绩进行季度汇总

上表中的数据是按照季度进行汇总的。

(1)在单元格中使用=ds1.group(int((month(订购日期)+2)/3),false),这个公式可以帮助我们获得指定的日期属于第几个季度。先获得指定日期所属的月份,然后根据得到的月份来计算其所属的季度。

(2)这种方法将计算过程放在了数据库中,定义如下sql语句:SELECT *,(month(订购日期)+2)/3 as jd FROM 订单。然后在单元格中直接使用=ds1.group(jd,false)。即可知道指定的日期属于第几季度。

如何给报表加水印

08.04.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

报表加上水印,实际上就是给报表增加一个背景图,然后将这个背景图随着报表展现、打印及导出。下面就介绍一下如何给报表加水印。

首先将需要增加水印的报表准备好,在属性,报表属性里找到背景图页签

1.png

在url路径里选取背景图的url路径,并在url或类名里写绝对路径即可。

然后在报表,报表属性,打印页签里勾选上打印背景图,

2.png

这样在设计展示的时候就会都有背景图了,浏览,打印,导出pdf的时候就都会有水印了。

为报表添加背景图需要注意以下问题:

这种添加背景图的方式中背景图大小最好以纸张大小为准,因为在展示,打印,导出的时候背景图不会拉伸和扩展,如果不以纸张大小为准的话,可能出现有的地方出现空白,没有背景图,或者背景图被截取的现象。

URL或类名:与”配置类型”选项相对应,URL可以是绝对路径名,也可以是相对路径名。如果是相对路径,在WEB 应用中发布,相对于应用根目录,在设计器中不可用相对路径。

主子表添加背景图:这样的添加方式可能引起子报表展现遮住背景,解决方法是将子报表的背景色设置为透明色即可。

背景图的路径需为绝对路径,在设计器设计时只能是固定的,如果需要动态改变背景图的路径的话,需要通过api来实现,在展现报表的jsp中加入相关的设置,例如:

//定义 reportDefine rd

//获取报表相关信息

……

BackGraphConfig backGraphConfig = new BackGraphConfig();
backGraphConfig.setURLOrClassName(backImageUrl);
backGraphConfig.setType(BackGraphConfig.TYPE_URL);
backGraphConfig.setDispMode(BackGraphConfig.DISP_PER_PAGE);
rd.setBackGraphConfig(backGraphConfig);

以上就是添加水印的相关方法,当您选中单元格后,右键选择数据图层,这样可以在单元格内添加前景图和背景图,使用的方法也跟上述方法类似,其中前景图可以作为电子签章,这个功能也有很广泛的用途。

图例超连接

08.03.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

◆ 背景说明

统计图中,有图形超连接,对有些特殊的要求,需要在图例上也能有超连接。快逸报表中,为满足用户的需求,在统计图中也增加了图例超连接。
◆ 应用举例

在制作统计图超链接时,在统计图属性定义-显示外观–图形超链接的左边,添加了图例超连接,如下图:

1.png

只要将原先在图形超连接里写好的超链接,复制到图例超连接中,就可以了。

对于没有图例超链接的用户,重新在润乾官网上下载新程序就可以了。

Weblogic集群配置__部署润乾应用

07.29.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

◆ 环境:

Windows xp

Weblogic:wls1031_ccjk_win32.rar(内部下载:\\192.168.0.38\SystemInstaller\4WebServer\weblogic\wls1031_ccjk_win32.rar)

◆ 配置部署

Weblogic 10 的安装,这里就不介绍了。

启动weblogic

从”开始”菜单中-”WebLogic”-” User Projects”-” base_domain”-”Start Admin Server”就启动weblogic管理服务器了。

(命令行方式启动管理服务器:进入目录user_projects\domains\ base_domain \bin>startWebLogic.cmd

回车,随后按提示输入用户名,密码就启动了。)

在浏览器中输入http://192.168.0.132:7001/console (ip为本地机器的ip),输入用户名、密码就进入了管理界面,如下图:

1.gif

点击”环境”-”服务器”-配置两个受管服务器,取名为Server3,Server4:

2.gif

点击”环境”-”群集”-配置群集,取名为Cluster-0:

3.gif

然后为群集添加服务器:

4.gif

将Server3,Server4勾选,点添加,就可以了。

到此,集群,服务器就都配置好了,下面就部署应用。

点击”部署”-”安装”-”上传文件”,将打好的war包上传,就可以了:

5.gif

一直点”下一步”,为应用分配集群,如下图:

6.gif

到最后,”完成”-”保存”结束,部署就完成了。

启动受管服务器:

命令行进入目录user_projects\domains\ base_domain \bin> startManagedWebLogic.cmd Server-3 http://192.168.0.132:7001(注意:服务器名大小写相关),回车,随后按提示输入用户名,密码就启动了。

两个服务器起来后,点击部署上的应用,点启动,就启起来了。

在浏览器中输入http://192.168.0.132:7004/demo,就能看到你的应用了。

到此,整个集群部署润乾应用,就完成了。

Olap导出excel问题

07.28.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

◆ 背景说明

Olap展现,在页面上,有导出excel功能。有时,导出的excel为一空表,没有数据,后台有相应错误信息:

org.xml.sax.SAXParseException: Element type “title” must be followed by either attribute
specifications, “>” or “/>”。

◆ 原因分析

在olap页面中,有title标签,它是olap的标题。应用中用户都用自己的css样式,而在给title定义字体时,定义了一些特殊的字体,使得excle不能识别这种字体,所以导出的excel是一个空表,后台出现以上的错误信息。

要验证是否是css样式中定义字体的原因,很简单,将页面中引入的css换成润乾默认的css就可以了。

◆ 解决方法

1 用润乾默认的css样式文件

2 修改应用中的css,将字体定义成常规字体,excel中能识别的字体。

与数据有关的问题

07.27.2010 by zangmingkun - 0 Comment - 0
Posted in web报表应用

◆ 背景说明

在为用户排查问题,解决问题时,有一种情况是不容易引起大家注意的,那就是用户的数据;比如,数据中有某些特殊字符,引起展现不了或展现不正常;本文简要介绍在哪些条件下需要考虑用户的数据。

◆ 应用举例

为了突出说明问题,将整个服务分为两部分,一个为服务器环境,一个为报表应用。将服务器环境当作A,报表应用当作B,两个变量,就会出现如下四个结果。

条件1:A正常,B正常 结果:展现正常;

条件2:A正常,B异常 结果:展现异常;

条件3:A异常,B正常 结果:展现异常;

条件4:A异常,B异常 结果:展现异常;

条件1:服务器环境正常,报表应用正常,结果:展现正常;这是一个服务都要调整到的状态。其他的几种情况,我们都是要往条件1上调整的,一直到跟条件1一致为止。

还有一种情况,就是在条件1的前提下,应用中的大部分报表都正常展现,有那么一两个报表,不能正常展现。这时,就需要看用户的数据了。看是不是数据 里有某些特殊字符,比如:数据中有分隔符,分号,双引号等。出现这种情况,一般都会去怀疑是服务器环境不正常,会花很多时间去查用户的环境,这时应该想到 可能是数据引起的问题。

这个情况在报表的其他功能模块,也是会发生的,在其他功能模块,它的隐蔽性更强。因为其他功能模块跟页面的牵连更多,支持人员对功能模块的熟悉程度不如报表人员等。