那棵在風(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)
主站蜘蛛池模板:
波霸在线精品视频免费观看
|
久久久久久99av无码免费网站
|
中文字幕久精品免费视频
|
成年男女男精品免费视频网站
|
我要看免费的毛片
|
国产大片91精品免费观看男同
|
亚洲一区二区三区国产精品
|
亚洲综合一区国产精品
|
日本视频免费高清一本18
|
亚洲福利精品一区二区三区
|
久久久久久亚洲av成人无码国产
|
亚洲一区电影在线观看
|
国产婷婷成人久久Av免费高清
|
1区1区3区4区产品亚洲
|
亚洲久热无码av中文字幕
|
57pao国产成视频免费播放
|
久久精品国产精品亚洲下载
|
亚洲av永久中文无码精品综合
|
中文在线免费观看
|
免费看男女下面日出水视频
|
亚洲av午夜精品无码专区
|
99久久精品国产免费
|
青青青国产免费一夜七次郎
|
亚洲免费网站在线观看
|
日本一道本不卡免费
|
亚洲欧洲∨国产一区二区三区
|
亚洲黄色激情视频
|
黄色成人免费网站
|
亚洲宅男永久在线
|
免费无码AV一区二区
|
免费看美女被靠到爽
|
日本亚洲色大成网站www久久
|
a毛片在线免费观看
|
毛茸茸bbw亚洲人
|
亚洲中文无码卡通动漫野外
|
国产高清免费视频
|
亚洲精品无码MV在线观看
|
91av免费在线视频
|
永久久久免费浮力影院
|
亚洲另类激情综合偷自拍
|
免费网站看av片
|