<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.2" -->
<rss version="0.92">
<channel>
	<title>quiee</title>
	<link>http://www.quiee.com.cn</link>
	<description>又一个 WordPress Blog</description>
	<lastBuildDate>Tue, 01 Jul 2008 10:38:07 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>授权错误的一个特殊原因</title>
		<description>问题:
系统hpunix，weblogic，现在启动没有抱错，但是访问报表的时候抱错，授权license错误，怎么解决？
问题解决方法:
检查授权以及授权文件的配置都没有问题,最终发现是web.xml中这里写的-1，正确的为2，为-1的话表明没有加载servlet。所以才会出错。
 </description>
		<link>http://www.quiee.com.cn/archives/147</link>
			</item>
	<item>
		<title>两个数据集间传递参数</title>
		<description>问题:
数据集中有两个数据集，要求把第一个数据集的结果当做参数传到第二个数据集中。
解决办法:
ds2数据集中写成SELECT * FROM test2 where id in (?)然后在相应的参数处写ds1.select(id)，这样即可，注意一点就是当计算ds2时，ds1数据集必须已经产生，也就是说ds1必须放在ds2上边。 </description>
		<link>http://www.quiee.com.cn/archives/146</link>
			</item>
	<item>
		<title>参数为空取全部数据的几种用法</title>
		<description>当输入参数为空时要取全部数据通常是在sql写语句 id=? or ? is null形式，但是有几种情况这种方法并不适用。
(一) sql语句用in(?)形式，如果写id in (?) or ? is null，如果输入多个参数时会报语法错误。
解决办法：
sql语句写成 SELECT * FROM test2 where id in (?) or ?=’!EOF’,然后在对应的第二个参数处写if(arg1==null,”!EOF”,”!EMF”)即可。
(二) informix数据库不支持 id=? or ? is null语法,同样sql中写 id=? or ?=’!EOF’， 然后在对应的第二个参数处写if(arg1==null,”!EOF”,”!EMF”)即可。
(三)DB2数据库不支持 id =? or ? is null语法
解决方法同第二种方法。 </description>
		<link>http://www.quiee.com.cn/archives/145</link>
			</item>
	<item>
		<title>web swing和快逸报表headless冲突的问题</title>
		<description>当快逸的报表系统和报表用户的系统同时发布的时候，就会造成报表用户系统的一个生成图片的servlet无法正常运，但是如果把快逸报表中的10注释掉，报表用户的系统就不会出现问题，可是快逸的报表系统就无法正常运行。这个问题是因为报表用户的系统的应用中使用了类似java.net的技术，就是web swing，而swing的很多控件是不支持headless模式的，而快逸的报表系统中默认地将headless设为true，即System.setProperty( “java.awt.headless”, “true” )。所以建议 先把report4.jar更新后，在把headless配置放在web.xml文件中，即为:



如果报表用户系统是x-windows的环境，就配置成false；否则先配置x-windows环境，再配置成false。 </description>
		<link>http://www.quiee.com.cn/archives/143</link>
			</item>
	<item>
		<title>快逸报表连接数据源</title>
		<description>用快逸报表设计器连接自己的数据库很简单，基本全部的操作都在设计器中完成。下面就以使用快逸报表设计器连接MYSQL数据库为例，演示如何连接自己的数据库。

第一步：把数据库的驱动拷贝到，快逸报表的安装目录下的JDBC文件夹下这个文件夹是快逸报表数据库驱动存放的地方。公司已经预存了常用数据库的驱动，要是运行时候报数据库驱动的错误，可以手动的把数据库的驱动拷贝过来，然后确认数据库已经打开即可（一般是到服务里把相应的数据库打开）





第二步：打开设计器，依次打开配置—数据源—新建—关系型数据库就会看见数据库连接配置的界面。









第三步：进行数据源的详细配置，数据源的名字：就是起个自己配置这个数据库的名字，这个名字是以后要是数据库连接池中使用的要和那的名字一致就行了（runqian）数据库类型：就是你选择连接的数据库，我们提供的产用的数据库要是没有您的数据库您可以自定义。（mysql）

	客户端字符集：默认GBK，（GBK）
	数据库字符集：默认GBK，（GBK）
	驱动程序：如果您上面选择了数据库类型的话，这里就会有默认的驱动程序出来，选择默认的（com.mysql.jdbc.Driver）
	数据源URL：跟上面的一样要是选择数据库的话也是有默认的。注意的就是要替换括号里的内容这里填写的一般就是数据库的IP 端口相关信息（jdbc:mysql://localhost:3306/mysql1）
	用户名和口令：就是您自己数据库的用户名和密码（root root）



第四步：连接数据库，配置好了以后进到数据源那个页面进行连接，要是还不成功检查上面的操作进行验证。



注意：要是数据库连接不上报驱动的错误，就换个自己数据路的驱动，SQLSERVER的数据库要打SP2以上的补丁才能连接数据库的。 </description>
		<link>http://www.quiee.com.cn/archives/133</link>
			</item>
	<item>
		<title>Tomcat下配置快逸报表</title>
		<description>第一步：把想连接数据库驱动拷贝到\Tomcat 5.0\common\lib下

第二步：然后用报表设计器连接一个数据源（配置—数据源—新建—关系型数据源）然后连接，然后建个报表





第三步：利用刚才连接的数据源新建报表，保存在默认的目录（quieeReport\webapps\quiee\reportFiles）注意在这里新建报表一定要指定数据源不要可能会报错





第四步：把设计器目录下的quiee文件（这个文件夹就是个J2EE的项目的框架，建议初学者直接拷贝这个当作项目的框架）拷贝到Tomcat 5.0\webapps下

第五步：增加配置文件 在Tomcat 5.0\conf\Catalina\localhost下新建与你项目名称一样的配置文件quiee.xml

内容是（根据版本不一样而不一样）

5.0版本：



5.5版本以上：



第六步：在Tomcat 5.0\webapps\quiee\WEB-INF 里配置reportConfig.xml。
这里只要配置1地方



第七步：打开服务器预览报表，在IE上输入http://localhost:8080/quiee/在左边报表例子里，点你刚才设计的报表就能浏览了

 </description>
		<link>http://www.quiee.com.cn/archives/115</link>
			</item>
	<item>
		<title>动态背景色</title>
		<description>对于清单型的报表，由于记录数普遍较多，且列数也不少，用户往往阅读起来感觉有些困难，眼花缭乱，常常看错行。于是用户顺理成章地提出：能否单双行不同背景色？

这也许不算困难，可是用户接下来还会顺理成章地提出：能否鼠标选中哪一行，哪一行就变个背景色？这个需求也很合理，用户阅读哪行哪行就变颜色，这样看起来直观也不容易看错行。可是这个需求的实现就稍微有点麻烦了，需要写javascript脚本来动态控制。

接下来，用户还可能会提出：能否满足某些条件的记录行变一种背景色？这个需求也一样很合理，因为用户在阅读清单型报表的时候，往往只关注满足某些条件的记录，比如成绩不合格的学生或者是优秀的学生等，这个就要求写一些程序来动态计算了。

有了这些需求做铺垫后，用户会发现动态修改行、列、单元格的背景色或者前景色好处多多，似乎可以更加灵活的使用，可以派上更大的用场，于是更加复杂的需求提出来了。

当用户在录入修改数据的时候，如果修改页面的记录数很多，列数也很多，而用户只需要修改其中一部分单元格，此时用户会发现改了一半的时候，他自己都糊涂了：究竟哪些改过哪些没改？于是复杂需求粉墨登场了：能否把修改过的格子变一种颜色？

这个需求在网页上可不简单，它意味着必须记住每个单元格的原始值、用户录入的新值，然后写一个Javascript函数，动态比较用户录入的新值和原始值是否一样，如果一样说明没有修改，如果不一样，说明有修改，要变颜色。

随着用户不断地提出更加复杂的需求，程序员慢慢地感觉吃不消了，如果都编程实现，太麻烦了，而且保不定什么时候又提出新的需求，改程序，永远都改不完。

当然，也不是完全没有办法，润乾报表提出了一整套完整的单元格显示外观的解决方案，包括字体、字号、前景色、背景色等等，均可通过表达式来动态控制，可以由当前格、当前行、当前列、甚至是有主子格关系的非同行同列的格子的值来动态决定。

对于网页上的背景色动态改变，润乾报表提供了许多现成的javascript函数，程序员不需要为此费任何脑筋，只需要在jsp里指定颜色值即可，非常简单方便。

实现步骤

	设计报表，在单元格的外观属性中根据业务需要定义表达式，如前景色、背景色等
	如果需要网页上脚本动态控制背景色，则在jsp里定义相关的颜色值，设定相应的tag属性即可。

效果演示

动态背景色

鼠标选中行变换背景色
 </description>
		<link>http://www.quiee.com.cn/archives/112</link>
			</item>
	<item>
		<title>单元格的尺寸调整</title>
		<description>单元格里的数据超出单元格的原定尺寸时，需要动态调整单元格的尺寸，或者缩小单元格里的内容。

比较简单的做法就是调整单元格的尺寸，动态被撑宽。这个算法很简单，字符宽度*字符个数 就得出了单元格的宽度，最多再考虑两端的缩进等。可是有些时候不允许这么做，比如说，当对报表的宽度有要求时，此举就行不通了。

接着想到了自动折行，通过折行，不改变单元格的宽度，但是改变单元格的高度。自动折行的算法也不难，用字符串的长度除以单元格宽度，就可以算出行数，再用字符高度*行数，基本就算出了单元格的高度，顶多再考虑一下字符间隙、与边框的间隙等。这种方式可以满足一部分用户的需求，但是对于套打等对报表高宽都有严格要求的情况也行不通。

于是想到像excel一样缩小字体填充，根据格子的宽度除以字符的个数，从而算出字号。这种办法也不难，可是，这种情况仅仅适用于数据长度比单元格宽多的不太多的情况。一旦多出比较多的时候，字符被压缩的太小了，很可能导致看不清楚。

因此必须把折行和缩小字体综合起来使用，既折行又缩小字体填充，这样字符被压缩的比例比较小，仍旧具有可读性。但是这种算法就有一定的难度了，需要考虑的情况比较多。

当然，除了文字单元格，还有图形单元格，图形单元格一样存在需要放大或者缩小或者撑大等情况。所有这些情况如果都要编程实现，尤其是做得通用的话，工作量的确不小。如果采用快逸报表，这些细节都解决得非常好。快逸报表的实现步骤:

实现步骤：

	设计报表
	为单元格设置尺寸调整方式，可以把尺寸调整方式和自动换行结合使用。





效果演示：
设计界面

缩小字体填充

自动折行

既缩小字体填充又折行

撑大单元格 </description>
		<link>http://www.quiee.com.cn/archives/101</link>
			</item>
	<item>
		<title>冻结表头HTML报表制作方法</title>
		<description>报表显示在网页上，拖拽网页查看报表时允许报表上表头和左表头被固定。对于高度/宽度都比较大的报表，实现表头锁定会给报表使用者提供很大的方便，快逸报表可以实现上、左双向单独表头锁定，甚至是双向同时锁定，报表浏览者查看“高大”报表时再也不必上下左右拉动滚动条来对照表头了。

上图显示的是一个还未固定表头的报表，如果我们拉动滚动条，表头也会跟着数据区一起滚动，下面就以这个报表为例，详细讲解一下如果实现表头固定，数据区滚动的效果。

第一步，设置表头属性。

如果要固定上表头，那就要把作为上表头的行的行类型设置为“报表头”，方法如下：
选中上表头所在行的行首格，将设计器右边属性列表中将行属性－行类型属性设置为报表头，如下图所示：



设置好后，行首格会显示为表头区域，如上图蓝色线框所示。
同理，如果要固定左表头，则选中左表头所在列的列首格，将选中列的列类型设置为左表头，如下图所示：



设置好表头属性，点击保存后，报表制作方面就完成了。

第二步，在jsp中设置滚动条标签属性

我们的报表做好保存为一个raq文件后，在web端是通过一个标签发布的，比如，在这个标签里有个needScroll属性，如果发布的报表是需要固定表头的，那么在完成第一步后，还需要在jsp中将needScroll这个标签属性设置为yes。

&#60;report:html name="report1" reportFileName="djbt.raq" needScroll="yes" scrollWidth="400" scrollHeight="400" &#62;

如果默认的滚动条的宽度和高度不合适，可以通过scrollWidth，scrollHeight设置合适的值。
这样，在web上访问这个页面就可以看到固定表头的效果了。如下图所示：

 </description>
		<link>http://www.quiee.com.cn/archives/98</link>
			</item>
	<item>
		<title>套打报表制作方法</title>
		<description>        快逸报表采用底图描绘的方案解决套打时的报表绘制问题。可将需要套打的票据扫描成图片，作为报表设计的底图，然后依照图片上格线进行报表描绘，可保证绘制出的报表能够精确地套打进入印刷票据中。
制作方法如下：
第一步：打开快逸报表设计器，新建一张报表。
        提示：如果套打报表的数据是直接从数据库取出来的，那么新建一个“仅供统计”报表即可；如果套打报表的数据需要在页面上输入的，那么就需要新建一个“可以填报”的报表。
       “仅供统计”和“可以填报”在属性-报表属性-填报类型里设置。
第二步：点击【插入】菜单中的【背景图】，在弹出的报表属性窗口中：



显示方式选择为：每页显示，即在web端展现时，每页都显示背景图；然后点击 “URL或类名”上方的按钮，选择背景图 套打.png 的存放路径。点击确定，关闭报表属性窗口，该背景图就显示在当前报表中了。


第三步：拖动格线与底图格线对齐，如上图。以B2单元格为例，该单元格填入献血者的姓名。调整好该行的行高后，在该单元格内输入姓名，如“张三”，适当调整位置以保证输入的文字正好打印在该行的空白处。同样操作，输入该证中的其他信息。
        如果是从数据库里取数据，那么就与做普通报表一样，在对应单元格写表达式即可。
        如果是页面填写数据，那么调整好格线位置，将需要输入数据的单元格设置为“可写”即可。
第四步：点击【属性】菜单中的【报表属性】，在【打印】Table页中，将左下方的“打印背景图”选中，则打印该报表时同时打印背景图，如果不选，则不打印背景图。



第五步：保存报表为套打.raq。
第六步：在jsp中调用标签，发布该报表，即可在页面上预览该报表。
&#60;report:html name="report1" reportFileName="套打.raq"
needPrint="yes" &#62;
点击打印按钮，即可对该报表进行打印预览和打印。



 </description>
		<link>http://www.quiee.com.cn/archives/87</link>
			</item>
</channel>
</rss>
