那棵在風(fēng)中搖曳的狗尾巴草
posts - 84, comments - 54, trackbacks - 0, articles - 0
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
Web application 中使用Crystal Report(一)
Posted on 2007-04-11 23:26
馬達(dá)+斯加
閱讀(1755)
評(píng)論(8)
編輯
收藏
所屬分類:
Java Report
最近的項(xiàng)目中使用了Crystal Report作為報(bào)表工具,與Jasper Report不同,在報(bào)表的靈活性和開發(fā)速度上要?jiǎng)俪龊芏啵坏┯蒙暇筒辉敢鈸Q其他了。
在Web application中使用CR,主要可以通過兩種方案實(shí)施:
一種是將rpt文件嵌入application中,該方案實(shí)施簡(jiǎn)單、快速,最重要的不受license限制,是普通項(xiàng)目開發(fā)的絕佳選擇。我們可以直接去Business Objects上面下載一個(gè)已經(jīng)集成了CR開發(fā)插件的Eclipse,或者只下載插件也可以。利用該插件中的開發(fā)向?qū)В梢苑浅H菀椎倪M(jìn)行開發(fā)了。
生成HTML報(bào)表也是相當(dāng)?shù)暮?jiǎn)單,我們可以通過CR提供的標(biāo)簽庫(kù)生成:
<%
@ taglib uri
=
"
/WEB-INF/tld/crystal-tags-reportviewer.tld
"
prefix
=
"
crviewer
"
%>
<
crviewer:viewer
isOwnPage
="true"
displayGroupTree
="false"
printMode
="ActiveX"
allowDrillDown
="false"
hyperlinkTarget
="false"
displayToolbarViewList
="false"
displayToolbarFindButton
="false"
displayToolbarToggleTreeButton
="false"
displayToolbarCrystalLogo
="false"
reportSourceType
="reportingComponent"
viewerName
="CrystalReport1-viewer"
reportSourceVar
="CrystalReport1"
>
<
crviewer:report
reportName
="Test.rpt"
/>
</
crviewer:viewer
>
也可以通過自己寫代碼讀取report source,然后作為一個(gè)javabean供表現(xiàn)層使用:
/** */
/**
* Retrieve embedded report source by the specified report name.
*
*
@param
reportName
*
@return
*/
private
static
IReportSource getEmbeddedReport(String reportName)
{
IReportSource reportSource
=
null
;
String report
=
CRConstant.EMBEDDED_RPT_FOLDER
+
reportName
+
"
.rpt
"
;
ReportClientDocument reportClientDoc
=
new
ReportClientDocument();
try
{
reportClientDoc.open(report,
0
);
}
catch
(ReportSDKException e)
{
log.warn(
"
Cant get embedded report source
"
);
log.error(e.getMessage());
}
reportSource
=
reportClientDoc.getReportSource();
return
reportSource;
}
非標(biāo)簽方式生成HTML報(bào)表
<%
@ page
language
=
"
java
"
contentType
=
"
text/html; charset=UTF-8
"
pageEncoding
=
"
UTF-8
"
%>
<%
@ page import
=
"
com.crystaldecisions.reports.reportengineinterface.*
"
%>
<%
@ page import
=
"
com.crystaldecisions.report.web.viewer.*
"
%>
<%
CrystalReportViewer viewer
=
(CrystalReportViewer)session.getAttribute(
"
crViewer
"
);
viewer.processHttpRequest(request, response, getServletConfig().getServletContext(),
null
);
%>
另外一種是集成Crystal Enterprise Server進(jìn)行報(bào)表開發(fā)。所有的rpt都在server上,application 可以通過包括Enterprise account,LDAP,Windows NT(如果是Window服務(wù)器)等多種方式登陸Server讀取報(bào)表。該方案中rpt可以提供多個(gè)應(yīng)用使用,并且方便管理及二次開發(fā),但是license非常貴,因此,主要是應(yīng)用在大型項(xiàng)目中。
其中最簡(jiǎn)單的便是使用Enterprise Account方式登錄了:
/** */
/**
* Loging Crystal Enterprise server
*
*/
private
void
createEnterpriseSession()
throws
SDKException
{
String cms
=
CRConstant.CMS;
String userName
=
CRConstant.AUTH_USERNAME;
String password
=
CRConstant.AUTH_PASSWORD;
String authMode
=
CRConstant.AUTH_MODE;
try
{
ISessionMgr sessionMgr
=
CrystalEnterprise.getSessionMgr();
iEnterpriseSession
=
sessionMgr.logon(userName, password, cms, authMode);
log.info(
"
Got Enterprise session successfully
"
);
}
catch
(SDKException e)
{
log.warn(
"
Cant log on CMS:\nCMS:
"
+
cms
+
"
\nUserID:
"
+
userName
+
"
\nPassword:
"
+
password
+
"
\nAuthMode:
"
+
authMode);
throw
e;
}
}
但是,這里特別需要注意的是,CMS的值必須是Enterprise server的名稱,而不能使用IP地址。
在此方案中,可以使用一個(gè)iFrame直接將Server中生成的報(bào)表包含進(jìn)來(CR enterprise portlet就是這樣干的)。
評(píng)論
#
re: Web application 中使用Crystal Report(一)[未登錄]
回復(fù)
更多評(píng)論
2007-05-04 17:57 by
我們走在JAVA的光明大道上
很好的經(jīng)驗(yàn)!謝謝分享
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 17:37 by
Alan.xiao
通過eclipse的插件打開一個(gè)用crystal reporst 10做的報(bào)表,提示要連接數(shù)據(jù)庫(kù),因此通過它的數(shù)據(jù)庫(kù)資源管理器連接了sql server,結(jié)果發(fā)現(xiàn)只能看到數(shù)據(jù)庫(kù)中的表,存儲(chǔ)過程看不到,所以它把那張報(bào)表里面的數(shù)據(jù)按名字對(duì)應(yīng)表里面去了,而實(shí)際上本應(yīng)對(duì)應(yīng)一個(gè)存儲(chǔ)過程的,所以顯示數(shù)據(jù)庫(kù)中沒有該表。請(qǐng)問您,這是怎么回事,該如何解決
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 17:48 by
回樓上
好久沒用了,記得好像cr里面只能看到table,view。碰到很復(fù)雜的報(bào)表,我們一般是建一個(gè)working table,很少用存儲(chǔ)過程。
另外想問一下,為什么存儲(chǔ)過程的名字會(huì)和table一樣呢?一般會(huì)避免這種情況才是。
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 17:50 by
Alan.xiao
如果以上描述您不是很理解,那我換個(gè)說法:
報(bào)表已經(jīng)存在,我目前要做的是在jsp中生成,而這樣做需要輸入?yún)?shù),輸入?yún)?shù)就需要“報(bào)表源”,得到報(bào)表源就需要“jdbc數(shù)據(jù)源”,而原來的的報(bào)表是通過DSN連接的數(shù)據(jù)庫(kù),所以不得已重新配置,結(jié)果配好數(shù)據(jù)源后發(fā)現(xiàn)沒法讀取數(shù)據(jù)庫(kù)中的存儲(chǔ)過程。
(要是能截圖就好了)
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 17:52 by
Alan.xiao
只有存儲(chǔ)過程,沒有改名字的table,但因?yàn)槟莻€(gè)插件讀不到存儲(chǔ)過程,就把那個(gè)當(dāng)table了,而該table又不存在,所以就報(bào)錯(cuò)啦
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 18:00 by
回樓上
沒有做過這種case,如果沒記錯(cuò)的話,使用哪個(gè)數(shù)據(jù)源不是在rpt中定義的嗎?
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 18:05 by
Alan.xiao
是啊,是在rpt中定義的,但幫組文檔中有這樣一句話:
要使用 Java Reporting Component 創(chuàng)建報(bào)表源,必需指定要查看或?qū)С龅膱?bào)表所在的位置。將使用相對(duì)或絕對(duì)路徑指定報(bào)表位置。而且,為使 Java Reporting Component 正確地為報(bào)表檢索數(shù)據(jù),必須通過 JNDI 正確指定報(bào)表的數(shù)據(jù)源,或必須依據(jù) JDBC 數(shù)據(jù)源設(shè)計(jì)報(bào)表。
#
re: Web application 中使用Crystal Report(一)
回復(fù)
更多評(píng)論
2007-12-20 18:08 by
回樓上
或者,你可以嘗試用JDBC數(shù)據(jù)源新建一個(gè)使用到stored proc的非常簡(jiǎn)單的報(bào)表,看看在你的application里面能否正確運(yùn)行。
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
2招解決Adobe PDF Form的緩存問題
Cognos ReportNet 的排序BUG
How to conditionally hide rows in Cognos report?
AIX上使用JasperReport碰到的問題
Web application 中使用Crystal Report(二)
Web application 中使用Crystal Report(一)
Powered by:
BlogJava
Copyright © 馬達(dá)+斯加
日歷
<
2007年4月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(9)
給我留言
查看公開留言
查看私人留言
隨筆分類
ClearCase(1)
Database(1)
Display Tag library(1)
Java Report(6)
My life recorder(59)
Websphere Portal(10)
WSAD(4)
隨筆檔案
2010年3月 (1)
2009年11月 (2)
2009年7月 (1)
2009年5月 (3)
2009年4月 (1)
2009年3月 (2)
2009年2月 (2)
2008年12月 (5)
2008年10月 (2)
2008年8月 (1)
2008年6月 (2)
2008年5月 (3)
2008年3月 (1)
2008年1月 (2)
2007年12月 (1)
2007年10月 (3)
2007年9月 (7)
2007年8月 (5)
2007年7月 (4)
2007年6月 (5)
2007年5月 (6)
2007年4月 (8)
2007年3月 (13)
2007年2月 (2)
相冊(cè)
我的鏡頭
涂鴉
朋友
Panoramio Space
陳胖子的blog
搜索
最新評(píng)論
1.?re: 五一,香港,租房,心得
樓上看來不了解廣東啊,因?yàn)榘鞘侄嗟年P(guān)系,所以出門背包都要背在胸前。
--VIIV
2.?re: 五一,香港,租房,心得
終于可以把背包背在后面走路了,覺得特舒服
怎么個(gè)意思?O(∩_∩)O
--淺蘭色
3.?re: 五一,香港,租房,心得
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--小市民
4.?re: 從Websphere Portal5移植Web應(yīng)用到Websphere Portal6時(shí)fmt:formatDate報(bào)錯(cuò)的解決
謝謝啦 我正好遇到這個(gè)問題 都暈了
--Amber
5.?re: WPS 5.0 中一例"Unable to compile class for JSP"錯(cuò)誤
謝謝,非常感謝
--胡浩瀾
閱讀排行榜
1.?美資軟件公司JAVA工程師電話面試題目(5839)
2.?五一,香港,租房,心得(2786)
3.?聲討《蘋果日?qǐng)?bào)》——居然在同胞死傷無數(shù)時(shí)發(fā)表這樣的評(píng)論(2197)
4.?旺角紅燈區(qū)(1975)
5.?Web application 中使用Crystal Report(一)(1755)
評(píng)論排行榜
1.?聲討《蘋果日?qǐng)?bào)》——居然在同胞死傷無數(shù)時(shí)發(fā)表這樣的評(píng)論(10)
2.?Web application 中使用Crystal Report(一)(8)
3.?五一,香港,租房,心得(4)
4.?赴港JAVA開發(fā)工程師的面試題目(3)
5.?決定了去HK(2)
主站蜘蛛池模板:
亚洲AV无码一区东京热
|
亚洲第一成年网站大全亚洲
|
A级毛片高清免费视频在线播放
|
久久香蕉国产线看观看亚洲片
|
曰曰鲁夜夜免费播放视频
|
成人免费大片免费观看网站
|
亚洲av无码一区二区三区人妖
|
激情综合色五月丁香六月亚洲
|
亚洲三级在线免费观看
|
老司机午夜性生免费福利
|
亚洲国产香蕉碰碰人人
|
国产成人在线观看免费网站
|
久久精品视频免费播放
|
久久亚洲精品11p
|
91大神亚洲影视在线
|
免费看男女下面日出水视频
|
59pao成国产成视频永久免费
|
久久久久女教师免费一区
|
国产成人精品亚洲2020
|
亚洲成亚洲乱码一二三四区软件
|
欧美a级在线现免费观看
|
日本免费人成网ww555在线
|
深夜福利在线免费观看
|
亚洲av无码久久忘忧草
|
亚洲av日韩av无码黑人
|
免费大片在线观看网站
|
久九九精品免费视频
|
日韩免费电影网站
|
羞羞视频免费网站日本
|
亚洲综合色一区二区三区
|
亚洲天堂中文资源
|
中文字幕亚洲一区二区三区
|
日本大片在线看黄a∨免费
|
182tv免费视视频线路一二三
|
日韩精品人妻系列无码专区免费
|
男人扒开添女人下部免费视频
|
亚洲熟妇av一区
|
亚洲av无码国产精品夜色午夜
|
亚洲欧洲日本在线
|
全部免费国产潢色一级
|
永久黄网站色视频免费观看
|