`
lodachi
  • 浏览: 11069 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

水晶易表—JSP—数据库

阅读更多

水晶易表毕竟是做报表的,离开数据库它是飞不远的。从目前的版本来看,易表连接数据库虽然有好几种方式,但都比较麻烦,而且还有很多局限性。其中通过xml方式连接数据库还算比较灵活,我要说的就是这种方式。


在易表的数据管理里新建一个xml数据连接,如下图:



 

我的是英文版的,不好意思,以前是中文版来着,后来被windows优化大师给弄成英文版的了,汗。。。

图中标红框的地方最重要,XML Data URL这里填xml的地址,既可以是本机地址也可以是网络地址,左边的红框里是易表传给xml的数据,右边是易表接收xml的数据。

如上图所示,我让易表把年月、税务机关、状态这三个参数传给xml,然后xml用这三个参数查询数据库,把查出的数据再传给易表。



那么关键是这个xml怎么接收数据,怎么查数据库呢?

我来告诉你吧(呵呵,我有种讲课的感觉。),这个xml是不存在的,是让JSP生成的。

因为全是Java代码,所以我没写JSP,直接写了个servlet。废话少说,上代码:

    /**

     * 与水晶易表进行交互

     * 这个方法你可以看做是servlet的doPost方法。

     */

    public void getXcelsiusData(HttpServletRequest request,

           HttpServletResponse response, IErrorHandler errorHandler,

           IMessageHandler messageHandler, ViewHelper viewHelper)

           throws IOException, LiteJdbcException {

       // 接收水晶易表数据:

       // 这些数据一般作为参数用,当然也可以看做表单(flash表单,酷吧)提交。

       // 水晶易表发送过来的数据是xml格式的,我没有想到更好的办法获取这些数据,

       // 而是把它们当做字符串来处理的,它的层次结构是data/variable/row/column



       // 大概是这段字符串后面是个等于号,这样竟把后面的所有的内容取了出来

       String strData = request.getParameter("<data><variable name");

       // 我打算把易表传过来的数据放到map里面,格式为<String,String[]>,

       // key存放variable的名称,value存放这个variable里面包含的column

       Map map = new HashMap();

       // 根据这段xml字符串的格式特征,我对它进行了解剖,把有用的数据放到了map里面。

       // 正式因为易表传过来的xml格式是固定的我才能这样做。

       String[] strVariables = strData.split("<variable name=");

       for (int i = 0; i < strVariables.length; i++) {

           // 取variable值

           int pos1 = strVariables[i].indexOf("\">");

           String var = strVariables[i].substring(1, pos1);

           // 取column值

           String[] strColumns = strVariables[i].split("</column>");

           String[] cols = new String[strColumns.length - 1];

           for (int j = 0; j < strColumns.length - 1; j++) {

              int pos2 = strColumns[j].indexOf("<column>");

              cols[j] = strColumns[j].substring(pos2 + "<column>".length());

           }

           map.put(var, cols);

       }

       // 下面把数据取出来打印一下看看

       System.out.println("variable共有" + map.size() + "个,分别是:");

       Iterator it = map.keySet().iterator();

       while (it.hasNext()) {

           String key = (String) it.next();

           String[] values = (String[]) map.get(key);

           System.out.print(key + " = ");

           for (int i = 0; i < values.length; i++) {

              System.out.print(i == values.length - 1 ? values[i] : values[i] + ",");

           }

           System.out.println();

       }

       // 数据就接收完了,根据你的需要,可以把它们存到数据库,或者用在下面作为查询数据库的参数

       // -------



       // 给水晶易表发送数据:

       // 这里就是组成一个xml格式的字符串,里面的数据就随便你从哪取了。

       // 我这里为了方便使用静态的数据,查数据库我想大家都会我就不献丑了。

       StringBuffer xml = new StringBuffer();

       xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

       xml.append("<data>");

       xml.append("<variable name=\"aa\">");

       xml.append("<row>");

       xml.append("<column>").append("lo").append("</column>");

        xml.append("<column>").append("da").append("</column>");

       xml.append("<column>").append("chi").append("</column>");

       xml.append("</row>");

       xml.append("</variable>");

       xml.append("</data>");

       // 把这段字符串打印在页面上,那么这个页面就是xml格式的了。

       response.getWriter().println(xml);

    }
 


虽然我写的代码很长,但其实很简单,也许还有更简单的办法,如果您知道请告诉我,另外必须告诉您,我还远远算不上是高手,研究出这点东西就很洋洋得意了,毕竟用水晶易表的太少了,而认真研究过的就更少了。


好了,写好代码以后,把它发布在应用服务器上,把这个方法的网络地址填在易表的XML Data URL那里,设置好输入输出数据的位置,就可以了,你自己试一试吧。

 

  • 大小: 45.2 KB
0
0
分享到:
评论
4 楼 chenyuwww 2011-01-10  
lodachi你好,
您的这个代码我尝试了,结果很理想。

但是当遇见这样的情况是怎么解决?BS的客户端的一个请求,带参数访问一个水晶易表导出的文件(比如swf),如果设置了在水晶易表的连接为xml连接时,那么在对应的servlet中如何获取客户端请求的参数呢?

初学水晶易表,不熟悉,请指教!
3 楼 lodachi 2010-05-04  
hrwhat 写道



flash参数只能由外部传给水晶易表吧 可以由水晶易表传给外部?
2 楼 hrwhat 2010-04-27  
 String strData = request.getParameter("<data><variable name");  


取参数根本用不着这么麻烦,直接用request.getParameter("xx")就行了,xx是变量名称,
比如说你文中的yyyymm,只不过在页面载入flash的代码中加入参数传递就行

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"
                width="516" height="501" title="report">
            <param name="movie" value="test.swf">
            <param name="quality" value="high">
            <PARAM NAME=FlashVars
                   VALUE="para=%3Cdata%3E%3Crow%3E%3Ccolumn%3E<%=para %>%3C%2Fcolumn%3E%3C%2Frow%3E%3C%2Fdata%3E&para2=%3Cdata%3E%3Crow%3E%3Ccolumn%3E<%=para2 %>%3C%2Fcolumn%3E%3C%2Frow%3E%3C%2Fdata%3E">
            <embed src="test.swf" quality="high"
                   pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
                   type="application/x-shockwave-flash" width="516" height="501"
     ></embed>
        </object>

FlashVars对应的就是参数,这里传了两个参数para和para2
1 楼 hu437 2010-04-23  
用晶易表用的少一是太贵了,二是局限也大

以前一个系统也是有水晶易表后来又改成ChartDirector了~~

水晶易表接受数据怎么都方便,XML或者WebServices都挺方便的

相关推荐

    水晶报表的jsp实现(开发工具bea weblogic workshop)

    总结来说,要在JSP中实现水晶报表,你需要配置数据库连接,设计报表模板,然后在JSP中加载报表并设置参数,最后通过`CrystalReportViewer`进行展示和导出。在整个过程中,对JDBC、JSP编程以及水晶报表API的熟练掌握...

    java jsp水晶报表详解

    ### Java JSP水晶报表详解 #### 一、水晶报表简介 水晶报表(Crystal Reports)是一款功能强大的报表设计与生成工具,广泛应用于多种开发环境之中。对于Java开发者来说,通过集成Crystal Reports及其Java Reporting ...

    使用eclipse在jsp上显示水晶报表

    本文将详细介绍如何在Eclipse中创建一个JSP项目,并配置环境来展示水晶报表。 首先,我们需要准备一个支持水晶报表的开发环境。在Eclipse 3.2版本中,我们可以创建一个新的Web项目,选择Target runtime为Apache ...

    水晶报表的jsp实现sn

    在JSP环境下,通常会使用JDBC(Java Database Connectivity)来连接数据库,并通过数据集的形式传递给水晶报表。 4. **参数化报表**:为了提高报表的灵活性和重用性,可以设置参数化的报表,允许用户在查看报表时...

    JSP使用水晶报表实例

    本实例以"JSP使用水晶报表"为主题,将介绍如何在JSP项目中集成并利用水晶报表来展示数据。首先,你需要确保已安装了水晶报表的相关库,包括水晶报表的Java API和运行时环境。这些组件通常可以通过官方渠道或第三方库...

    jsp中如何实现水晶报表

    水晶报表在JSP中的实现涉及多个步骤,包括环境配置、数据库连接设置以及报表的展示与导出功能。下面将详细介绍这些关键环节: #### 1. 安装Crystal Reports for BEA WebLogic Workshop 首先,确保已安装Crystal ...

    水晶报表的jsp实现(开发工具bea weblogic workshop).doc

    ### 水晶报表在JSP中的实现方法 #### 一、引言 水晶报表(Crystal Reports)是一款功能强大的报表设计工具,它被广泛应用于多种应用程序中,包括B/S架构的应用程序。对于基于Java技术的B/S架构系统,特别是在使用...

    Crystal Reports for java jsp web 案例

    《水晶报表在Java JSP Web应用中的实践案例》 水晶报表(Crystal Reports)是一款强大的报告生成工具,广泛应用于各类企业级应用系统中,为用户提供数据可视化和报告制作的能力。在这个“Crystal Reports for java ...

    水晶报表java web实现

    在水晶报表的实现中,JSP页面通常会包含用于渲染报表的Java代码或JSP标签。用户通过浏览器请求JSP页面,服务器端执行JSP,生成报表内容,并返回给客户端显示。 4. **Tomcat服务器**:Tomcat是一个开源的、轻量级的...

    水晶报表应用在java解决方案

    总的来说,集成水晶报表到Java应用中涉及到数据库连接配置、报表设计、参数处理、报表展示和导出等多个环节,需要对Java、JSP和水晶报表API有深入理解。在实际操作中,可能还会遇到其他问题,如兼容性、性能瓶颈等,...

    java水晶报表案例

    在这个“java水晶报表案例”中,我们将会探讨如何在JAVAWEB环境中集成并使用Crystal Reports,以及如何在不依赖数据库的情况下直接部署到Tomcat服务器上。 首先,让我们了解Java水晶报表的基本概念。水晶报表提供了...

    java水晶报表解决方案

    本文将详细介绍如何在Java Web应用(具体为JSP应用)中集成水晶报表,并实现其动态显示及多种格式导出的功能。 #### 二、水晶报表简介 水晶报表是由Business Objects公司开发的一款报表设计工具,后被SAP收购。它...

    酒店人事管理系统源程序,报告,数据库备份文件

    在酒店人事管理系统中,MYeclipse 8.5被用来开发和调试后端服务,支持Java语言编写服务器端代码,如Servlet、JSP、Struts、Spring等框架,提供了强大的代码编辑、调试和部署功能,便于开发者构建高效稳定的系统架构...

    java 水晶报表环境

    水晶报表(Crystal Reports)由SAP公司开发,它允许程序员利用丰富的数据源,如数据库、Excel表格等,来创建复杂的业务报告。在Java环境中集成水晶报表,可以提供用户友好的界面和强大的报表生成能力,为数据分析和...

    Crystal水晶报表经典范例

    "Crystal水晶报表经典范例"中可能包含多种类型的报表设计实例,如:基本的表格报表、分组报表、交叉表(pivot table)、图表报表等。这些范例将帮助开发者了解如何创建复杂的数据布局,如何设置分组和排序,以及如何...

    crystalreportviewers

    1. **灵活的报告设计**:水晶报表提供了丰富的设计工具,支持多种数据源连接,包括数据库、XML文件、Excel表格等,使得用户能够创建复杂的布局和格式化的报表。 2. **数据过滤和排序**:报表设计时,可以设置条件...

    Java水晶报表中文文档

    - Servlet集成:在Web应用中,水晶报表可以嵌入到Servlet或JSP中,实现Web端的动态报表生成。 3. **水晶报表的主要功能** - 数据源管理:支持多种数据源类型,包括关系型数据库、XML、文本文件等。 - 报表设计:...

    jsp+mysql的化工通用软件介绍

    用半年时间将以前的asp.net项目改写到linux平台下,编程语言由c#改为java,数据库由sqlserver改为mysql.自己完成类似水晶报表的图标功能,可导出excel报表,可自动设计网上设计报表格式,克服水晶报表的缺点。样品...

    水晶报表开发

    - 创建一个名为`test.jsp`的JSP文件,用于展示水晶报表。在这个文件中,你需要导入必要的Crystal Reports类库。 - 通过`JRC_ResultSet_DataSource`对象,你可以设置报表的数据源,这通常是从数据库查询得到的结果...

    超简单超炫的J2EE报表制作

    总结来说,"超简单超炫的J2EE报表制作"项目涵盖了J2EE应用开发、MYECLIPSE IDE使用、水晶报表设计与数据可视化、MVC模式、数据库操作以及可能的Spring框架应用等多个关键知识点。这些技术的结合使得该项目能够提供一...

Global site tag (gtag.js) - Google Analytics