水晶易表—JSP—数据库

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

在易表的数据管理里新建一个xml数据连接,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那里,设置好输入输出数据的位置,就可以了,你自己试一试吧。


...全文
1050 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xubin2002 2012-10-10
  • 打赏
  • 举报
回复
楼主,可否发一个完整的实例让我学习一下啊。最近正忙这个事情呢。愁死了。。。。
xubin2002 2012-09-06
  • 打赏
  • 举报
回复
很有意思,我玩水晶易表从无到有,08年开始使用。
ganjianhao 2012-02-15
  • 打赏
  • 举报
回复
楼主能不能发个实例让我们学习一下
snop8002 2011-09-23
  • 打赏
  • 举报
回复
刚接触 看得云里雾里的 易表连数据库好麻烦
lodachi 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 babyt 的回复:]
看了那个例子有沈浩老师的标记
再仔细一看原来楼主可能还是和沈老师合著《数据展现的艺术-精通水晶易表》谢聪阳先生本人。
这本书是为数不多的水晶易表著作之一,中文目前也仅此一本
即使英文的貌似也只看有xc24008(除了User Guide外)。


我觉得在BO体系里,最难写的书就是水晶易表,不是因为它难,而是它的手操太多了。
写书的人除了技术上的娴熟外,还要有足够的耐心~~
敬佩:……
[/Quote]看来兄弟是个内行,小弟只是最近的一个项目中用到了易表,感觉这个产品很有潜力所以就研究了一下,让你见笑了。那个案例确是沈浩老师的一个新作品,我是在他博客里面找到的。
lodachi 2010-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 feixianxxx 的回复:]
引用 6 楼 lodachi 的回复:
引用 2 楼 fredrickhu 的回复:
楼主是叫我们来学习的

学习

小F哥哥,你可是我的偶像啊,没想到你来顶我的帖子,我好感动啊。


小F 姐姐。。。。你叫错了
[/Quote]
啊。。真的是姐姐吗
阿泰 2010-03-14
  • 打赏
  • 举报
回复
看了那个例子有沈浩老师的标记
再仔细一看原来楼主可能还是和沈老师合著《数据展现的艺术-精通水晶易表》谢聪阳先生本人。
这本书是为数不多的水晶易表著作之一,中文目前也仅此一本
即使英文的貌似也只看有xc24008(除了User Guide外)。


我觉得在BO体系里,最难写的书就是水晶易表,不是因为它难,而是它的手操太多了。
写书的人除了技术上的娴熟外,还要有足够的耐心~~
敬佩:)
阿泰 2010-03-14
  • 打赏
  • 举报
回复
易表做动态图表貌似目前还没有工具可以匹敌
他比较明显的缺点就是不能分析大数据量。
feixianxxx 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lodachi 的回复:]
引用 2 楼 fredrickhu 的回复:
楼主是叫我们来学习的

学习

小F哥哥,你可是我的偶像啊,没想到你来顶我的帖子,我好感动啊。
[/Quote]

小F 姐姐。。。。你叫错了
lodachi 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]
SQL code
不懂,帮顶,学习,蹭分.
[/Quote]没想到我的这个帖子引来了如此重量级的人物。。
lodachi 2010-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
楼主是叫我们来学习的

学习
[/Quote]
小F哥哥,你可是我的偶像啊,没想到你来顶我的帖子,我好感动啊。
dawugui 2010-03-12
  • 打赏
  • 举报
回复
不懂,帮顶,学习,蹭分.
Mr_Nice 2010-03-12
  • 打赏
  • 举报
回复
学习......................
sql_sf 2010-03-12
  • 打赏
  • 举报
回复
这个
帮顶
顺便学习
--小F-- 2010-03-12
  • 打赏
  • 举报
回复
楼主是叫我们来学习的

学习
lodachi 2010-03-12
  • 打赏
  • 举报
回复
另外可以有的朋友不知道水晶易表是什么,做出的东西什么样,我这有个高手做的案例大家赏析一下:

http://www.bizinsight.com.cn/xiecongyang/airport/t123.swf

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧