锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍦ㄤ嬌鐢ㄦā鎷熷櫒寮鍙戞椂錛屽彲浠ラ氳繃紜洏鏉ユā鎷烻D鍗°傚叿浣撳仛娉曟槸錛?/p>
1.鍒涘緩涓涓猄D鍗¢暅鍍忔枃浠?/strong> 鎵撳紑cmd錛屾垜鏄繘鍏ュ埌c鐩樻牴鐩綍涓嬶紝杈撳叆濡備笅鍛戒護錛歮ksdcard 1024M sdcard.img 2.鍏寵仈SD鍗″拰妯℃嫙鍣?/strong> 灝辨槸璁╂ā鎷熷櫒鐭ラ亾瀹冪殑SD鍗℃槸璋侊紝璺緞鏄粈涔堛?/p>
鍦╡clipse涓嬌鐢ㄤ簡ADT鎻掍歡銆俥clipse -> windows->Android AVD Manager 錛屽脊鍑轟竴涓獥鍙o紝 鍦⊿DCard鍚庨潰鐨勬涓緭鍏ワ細c錛歕sdcard.img 錛屽嵆鏄涓姝ュ垱寤虹殑SD鍗¢暅鍍忔枃浠剁殑浣嶇疆銆傚厛鐐瑰嚮create avd錛?/p>
鐒跺悗鐐瑰嚮 finish 緇撴潫銆?/p>
3銆佸悜SD鍗′腑瀵兼枃浠?/strong> 鍦╟md涓紝鍛戒護濡備笅錛歛db push test.mp3 sdcard/test.mp3 榪欎細灝嗘湰鍦板綋鍓嶇洰褰曚笅鐨則est.mp3鏂囦歡鎷峰埌sdcard涓紝鏂囦歡鍚嶄笉鍙樸傚墠涓涓猼est.mp3鏄湰鍦版枃浠剁殑璺緞錛宻dcard鏄洰鐨剆d鍗¢暅鍍忕殑鏂囦歡鍚嶏紙鍘繪帀鍚庣紑錛夈?/p>
4銆佸湪妯℃嫙鍣ㄤ腑浣跨敤SD鍗′腑鐨勬枃浠?/strong>
瀵煎叆鏂囦歡鍚庯紝濡傛灉瑕佸湪妯℃嫙鍣ㄤ腑璁塊棶錛岃繕闇瑕佸湪妯℃嫙鍣ㄤ腑鐨凞ev tools閲岄潰Media scanner scan 涓涓嬪獟浣撴枃浠躲?br /> 5銆佽鏄?/strong>
榛樿鏃禷db.exe鍦╬latform-tools璺緞涓嬨?br />
璇ュ懡浠や細鍦ㄥ綋鍓嶇洰褰?鎴戝嵆鏄痗鐩樻牴鐩綍)涓嬬敓鎴愪竴涓猻dcard.img鏂囦歡錛岃鏂囦歡灝辨槸Android妯℃嫙鍣ㄧ殑SD鍗¢暅鍍忔枃浠躲?br />
1024M琛ㄧず1024鍏嗭紝鍗寵SD鍗℃湁1涓狦鐨勫閲忥紝涔熷彲鐢↘鍋氬崟浣嶏紙1M=1024K錛夛紝K,M蹇呴』澶у啓銆?br />
鐩墠Android鏀寔8M~128G鐨凷D鍗°?/p>
榪欎竴姝ラ渶瑕佹妸妯℃嫙鍣ㄨ繍琛岃搗鏉ャ?/p>
杞嚜錛?a >http://www.iteye.com/topic/396263
]]>
<head>
<title></title>
<script>
function showLeftFrame() {
if (document.all.leftTd.style.display == 'none'){
document.all.middleTd.innerText = '3';
document.all.leftTd.style.display = '';
} else {
document.all.middleTd.innerText = '4';
document.all.leftTd.style.display = 'none';
}
}
</script>
</head>
<body>
<table width="800" height="423" align="center">
<tr>
<td height="100" colspan="3">
<iframe name="top" src="top.htm" scrolling="no" frameborder="0"
marginheight="0" marginwidth="0" width="100%" height="100%"></iframe>
</td>
</tr>
<tr>
<td id="leftTd" width="150" height="500">
<iframe name="left" src="left.htm" scrolling="no" frameborder="0"
marginheight="0" marginwidth="0" width="100%" height="100%"></iframe>
</td>
<td id="middleTd" width="10" onclick="showLeftFrame()"
bgcolor="#ddeeff" style="font-family:Webdings;cursor:hand;">
3
</td>
<td height="500">
<iframe name="content" src="content.jsp" scrolling="no"
frameborder="0" marginheight="0" marginwidth="0" width="100%"
height="100%"></iframe>
</td>
</tr>
</table>
</body>
</html>
鎵撳紑鎶ヨ〃鏂囦歡.rpt錛屽湪瀛楁璧勬簮綆$悊鍣ㄩ噷錛屽彸鍑誨弬鏁幫紞銆嬫柊寤?/font>
鍦ㄤ笅闈㈢殑閫夐」灞炴ч噷鍙互璁劇疆鍙傛暟鐨勫悕縐幫紝綾誨瀷錛屾彁紺烘枃鏈紝鏄惁鍏佽澶氫釜鍊鹼紝鍊艱寖鍥寸被鍨嬶紙濡傛灉鏄瓧絎︿覆鐢ㄧ鏁o紝鏃ユ湡鎴栨暟瀛楃敤鑼冨洿錛?/font>
娉ㄦ剰錛氫笂闈㈤兘鏄瘮濉殑錛屽鏋滃弬鏁版槸鐢ㄦ潵瀵瑰簲鏌愪釜瀛楁鐨勶紝綾誨瀷蹇呴渶璺熻瀛楁涓鏍楓?/font>
鍦ㄥ煎睘鎬ч噷鍙互寤轟竴涓肩殑鍒楄〃錛岀偣涓婂幓錛岀劧鍚庣偣鍙寵竟鐨勬寜閽氨榪涘叆鍊煎垪琛ㄧ紪杈戞浜嗭紱鏄惁鎻愮ず鏃朵粎鏄劇ず璇存槑錛涚紪杈戞帺鐮侊紝鍙互緇欏弬鏁扮殑鎸囧畾涓瀹氱殑鏍煎紡錛涙渶灝忛暱搴︼紱鏈澶ч暱搴︼紱
鐜板湪浣犲彲浠ョ粰榪欎釜鎶ヨ〃鍒涘緩涓涓煡鐪嬪櫒jsp錛屽姞viewer鏍囩鐨勫氨琛屼簡銆?/font>
娉ㄦ剰榪欎釜jsp鐨勯〉闈㈢紪鐮佽緗負UTF-8.
浜? 鍙傛暟鎵闇鍖呰窡鐩稿叧瀵硅薄
1. 闇瑕佺殑java綾誨拰鍖?nbsp;
com.crystaldecisions.sdk.occa.report.data.*
com.crystaldecisions.reports.sdk.DataDefController
2. 鍒涘緩涓涓瓨鍌ㄥ弬鏁板瓧孌電殑 Fields 瀵硅薄銆?鍙傛暟瀵硅薄閮芥槸鏀懼湪榪欎釜閲岄潰錛岄氳繃Fields瀵硅薄鍙互娣誨姞銆佸垹闄ゅ拰鏌ユ壘鍙傛暟瀵硅薄
Fields fields = new Fields();
3. ParameterField 鍙傛暟瀛楁瀵硅薄銆?
ParameterField paramField1 = new ParameterField();
4. 涓烘兂璁劇疆鐨勬瘡涓弬鏁板瓧孌靛垱寤轟竴涓?Values 瀵硅薄銆俈alues瀵硅薄鏄敤鏉ュ瓨鍌≒arameterFieldDiscreteValue 瀵硅薄鎴?ParameterFieldRangeValue 瀵硅薄
Values newVals1 = new Values();
5. 紱繪暎鍊煎璞arameterFieldDiscreteValue 瀵硅薄
ParameterFieldDiscreteValue newDiscVal1 = new ParameterFieldDiscreteValue();
ParameterFieldDiscreteValue[ ] newDiscVals = new ParameterFieldDiscreteValue[ ];
鑼冨洿鍊煎璞arameterFieldRangeValue 瀵硅薄
ParameterFieldRangeValue newRangeVal1 = new ParameterFieldRangeValue();
ParameterFieldRangeValue[ ] newRangeVals = new ParameterFieldRangeValue[ ];
浠栦滑鐨勫ぇ姒傚叧緋伙細涓涓狥ields錛嶃嬪涓狿arameterField
涓涓狿arameterField錛嶃嬩竴涓猇alues
涓涓猇alues錛嶃嬪涓狿arameterFieldDiscreteValue 鎴朠arameterFieldRangeValue
涓? 鍚庡彴璁劇疆鍙傛暟
1. 鍙傛暟鐨勭鐞嗛兘鏄氳繃 鎶ヨ〃DataDefController 鏉ユ帶鍒剁殑銆?/strong>
DataDefController dataDefController 錛?new DataDefController();
瀵逛簬涓繪姤琛?dataDefController = reportClientDoc.getDataDefController();
瀵逛簬瀛愭姤琛?/p>
dataDefController = clientDoc.getSubreportController().getSubreport(reportName).getDataDefController();
2. 鍙傛暟鐨勮緗俊鎭槸閫氳繃 IDataDefinition 鏉ヨ幏鍙栫殑銆?/strong>
IDataDefinition dataDefinition = dataDefController.getDataDefinition();
濡?Fields fields = dataDefController.getDataDefinition().getParameterFields() ;
鑰屽鍙傛暟鐨勮緗敼鍔ㄦ槸閫氳繃 ParameterFieldController 鏉ユ帶鍒剁殑
ParameterFieldController paramfieldcontroller= dataDefController.getParameterFieldController( );
濡? 緇欎富鎶ヨ〃鍙傛暟瀛楁璁劇疆鍗曚釜鍊?/p>
paramFieldController.setCurrentValue("", "StringParam", new String("Hello")); //瀛楃涓茬被鍨?br />
paramFieldController.setCurrentValue("", "BooleanParam", new Boolean(true)); //甯冨皵綾誨瀷
paramFieldController.setCurrentValue("", "CurrencyParam", new Double(123.45));//璐у竵綾誨瀷
paramFieldController.setCurrentValue("", "NumberParam", new Integer(123)); //鏁板瓧綾誨瀷
緇欐煇涓弬鏁板瓧孌佃緗涓鏁e?/p>
Object [] multiVals = {"String1", "String2", "String3"}; //娉ㄦ剰瑕佸搴斿弬鏁板瓧孌電殑綾誨瀷
paramFieldController.setCurrentValues("", "StringMultiParam", multiVals);
3. 鍙栧緱Fields
Fields fields = dataDefController.getDataDefinition().getParameterFields() ;
4. 瀵瑰凡緇忓緩绔嬬殑鍙傛暟瀛楁錛岄氳繃Fields鐨勫湪鐭ラ亾鍚嶅瓧鐨勬儏鍐典笅閫氳繃Find鏂規(guī)硶鍙栧緱
ParameterField paramField = (ParameterField)dataDefController.getDataDefinition().getParameterFields().findField(parameterName, FieldDisplayNameType.fieldName, Locale.getDefault());
鍙傛暟瀛楁涓冧釜鍩烘湰綾誨瀷
甯冨皵(Boolean) 銆佽揣甯?Double)銆佹暟瀛?Integer)銆佸瓧絎︿覆(String)銆佹棩鏈熴佹棩鏈熸椂闂淬佹椂闂?Date)
鍙傛暟鐨勫煎繀欏昏窡鍙傛暟鐨勭被鍨嬬鍚堟墠琛?
5. 濡傛灉鏄柊寤虹殑鍙傛暟瀛楁錛岄偅蹇呴渶璁劇疆鍙傛暟瀛楁鐨勬姤琛ㄥ悕縐拌緗負涓庡弬鏁板叧鑱旂殑鎶ヨ〃鍚嶇О銆傚鏋滃弬鏁板瓧孌電敤浜庝富鎶ヨ〃錛屽垯浣跨敤絀虹櫧瀛楃涓?("")銆備嬌鐢?setReportName 鏂規(guī)硶璁劇疆鎶ヨ〃鍚嶇О銆?/strong>
paramField1.setName("Country"); //璁劇疆鍚嶅瓧
paramField1.setReportName(""); //濡傛灉涓?" "灝辨槸鐢ㄤ簬涓繪姤琛?濡傛灉瀛愭姤琛紝瑕佽緗瓧鎶ヨ〃鍚?/p>
濡傛灉鏄凡緇忓湪rpt涓瓨鍦ㄧ殑鍙傛暟錛屽氨涓嶇敤璁劇疆鍚嶅瓧鍜屾姤琛ㄥ悕縐頒簡錛屼篃涓嶇敤娣誨姞鍒癋ields涓?/strong>
newDiscVal1.setValue("China"); //璁劇疆紱繪暎鍊鹼紝鍚庨潰灝嗘坊鍔犲埌鍙傛暟鍊煎垪琛ㄤ腑
newDiscVal1.setDescription("The country is China.");//榪欎釜瑕佷笉瑕侀兘娌″叧緋?/p>
灝嗗弬鏁板瓧孌靛兼坊鍔犲埌 Values 闆嗗悎瀵硅薄銆?nbsp;
newVals1.add(newDiscVal1); //鍙互娣誨姞澶氫釜
涓哄弬鏁板瓧孌佃緗?Values 闆嗗悎銆?/p>
pfield1.setCurrentValues(vals1);
鍚?Fields 瀵硅薄娣誨姞姣忎釜鍙傛暟瀛楁銆?Fields 瀵硅薄鐜板湪鍙敤浜庢煡鐪嬪櫒
fields.add(pfield1); //闈炴柊寤哄弬鏁頒笉鐢?/p>
涓嬮潰鏄噸鐐瑰暒銆傝櫧鐒跺緢綆鍗曪紝浣嗘槸鎶樼(浜嗘垜涓夊ぉ
6. 鏀瑰姩鏌ョ湅鎶ヨ〃JSP欏甸潰鐨勫弬鏁板瓧孌電鏁e煎垪琛ㄦ垨鑼冨洿鍊煎垪琛?/strong>
鍏堢敤鍙栧緱paramField瀵硅薄錛岃繖涓墠闈㈡湁璇存庝箞鍙栧緱錛岃繖閲屼笉澶氳浜?/p>
瑕佹坊鍔犵殑紱繪暎鍊?/p>
ParameterFieldDiscreteValue newDiscValue = new ParameterFieldDiscreteValue();
newDiscValue.setValue(newValue);
鍙栧緱鍘熸潵鐨刅alues闆嗗悎錛屽湪鎶奦alues闆嗗悎鍏嬮殕鍒頒竴涓柊鐨刅alues闆嗗悎銆傛垜鍘熸潵鏄敤paramField.getValues()錛屼笉鐭ラ亾鏄疛RC涓嚭閿欒繕鏄粈涔堬紝榪欎釜鏂規(guī)硶绔熺劧瀹屽叏娌$敤錛宲aramField.getDefaultValues().鎵嶈兘鐪熸鐨勫彇寰楀弬鏁板璞$殑Values闆嗗悎
Values newVals = (Values)paramField.getDefaultValues().clone(true);
鍦ㄥ師鏉ョ殑紱繪暎鍊間腑鍐嶆坊鍔犲涓鏁e?/p>
newVals.add(newDiscValue);
涓哄弬鏁板瓧孌佃緗柊鐨刅alues闆嗗悎銆傝繖閲屽師鏉ユ槸鐢╬aramField.setCurrentValues(newVals)錛屼篃鏄笉琛岋紝瑕佺敤涓嬮潰鐨?nbsp; paramField.setDefaultValues(newVals);
paramField.setDefaultValues(newVals);
7. 紱佺敤鐢ㄦ埛鎻愮ず錛岃嚜鍔ㄤ嬌鐢ㄨ緗殑鍙傛暟瀛楁鍊箋傝繖鍦ㄤ互涓嬫儏鍐典腑鐗瑰埆鏈夌敤錛氭墍璁劇疆鐨勫弬鏁板瓧孌靛煎浜庣敤鎴蜂負鏈煡錛堜緥濡傜郴緇熺敓鎴愮殑鍙傛暟錛夈?/strong>
銆閫氳繃boolean multiValue = paramField.getAllowMultiValue();鍒ゆ柇鎶ヨ〃鏄惁鍏佽澶氬箋?br />
銆涓嶅厑璁稿鍊肩殑鎯呭喌涓嬶細
銆銆clientDoc.getDataDefController().getParameterFieldController().setCurrentValue(reportName, parameterName , newValue);
銆銆濡傛灉鏄敤浜庝富鎶ヨ〃,reportName涓? ",鍚﹀垯涓哄瓙鎶ヨ〃鍚嶇О銆?/p>
銆銆鍏佽澶氬肩殑鎯呭喌涓嬶細
銆銆鈶犲鏋滀笉鑰冭檻鍘熸潵鐨勭鏁e煎垪琛?/p>
銆銆 String[] newValues = new String[]{"China","USA",..........};
銆銆clientDoc.getDataDefController().getParameterFieldController().setCurrentValues(reportName, parameterName ,newValues);
銆
銆銆鈶″湪鍘熸潵紱繪暎鍊煎垪琛ㄧ殑鍩虹涓婃坊鍔犳柊鐨勭鏁e鹼紝騫惰緗?/p>
DataDefController dataDefController = null;
if(reportName.equals(""))
dataDefController = clientDoc.getDataDefController();
else
dataDefController = clientDoc.getSubreportController().getSubreport (reportName).getDataDefController();
ParameterField paramField = (ParameterField)dataDefController.getDataDefinition().getParameterFields().findField(parameterName, FieldDisplayNameType.fieldName, Locale.getDefault());
ParameterFieldDiscreteValue newDiscValue = new ParameterFieldDiscreteValue();
newDiscValue.setValue(newValue);
Values newVals = (Values)paramField.getDefaultValues().clone(true);
newVals.add(newDiscValue);
clientDoc.getDataDefController().getParameterFieldController().setCurrentValue(reportName, parameterName ,newVals);
鏌ョ湅鍣ㄧ殑璁劇疆
crystalReportPageViewer.setParameterFields(fields);//榪欎釜鎰熻鐢ㄤ笉鐢ㄩ兘娌″叧緋?/p>
crystalReportPageViewer.setEnableParameterPrompt(false);
鎶ヨ〃鐨勫弬鏁拌緗ソ鍚庯紝鍒欒皟鐢ㄦ煡鐪嬪櫒鐨勫埛鏂版柟娉曚互搴旂敤鏂扮殑鍙傛暟銆?/p>
if(session.getAttribute("refresh")==null){
crystalReportPageViewer.refresh();
session.setAttribute("refresh","true");
}
璋冪敤 processHttpRequest 鏂規(guī)硶浠ュ湪褰撳墠鐨勬祻瑙堝櫒紿楀彛涓惎鍔ㄦ鏌ョ湅鍣ㄣ?nbsp;
crystalReportPageViewer.processHttpRequest(request, response, getServletConfig().getServletContext(), null);
娉ㄦ剰涓嶈鍦ㄦ煡鐪嬪櫒閲岄潰璁劇疆鍒鋒柊鎸夐挳錛屼竴鎸夊氨浼氫涪澶卞弬鏁拌緗傞〉闈㈢紪鐮乁TF-8銆傚鏋滀笉琛屽氨tomcat profect錛嶃媟eload this context
<%@ taglib uri="/crystal
<crviewer:viewer viewerName="CrystalViewer" reportSourceType="reportingComponent" >
姝ゆ爣璁版寚瀹氳鏄劇ず鐨勬姤琛ㄤ互鍙婅鐢ㄤ簬緙撳瓨鎶ヨ〃婧愮殑浼氳瘽鍙橀噺銆?/p>
浜? 鑷畾涔夋姤琛ㄦ簮寮?/strong>
1. 灝嗕竴涓寚鍚戞煡鐪嬪櫒鏍囪搴撴弿榪扮鏂囦歡鐨勫紩鐢ㄦ坊鍔犲埌 JSP 欏甸潰鐨勯《閮ㄣ?鍚屾椂蹇呴』紜繚鐩稿簲鐨?JAR 鏂囦歡鍜岄檮鍔犳敮鎸佹枃浠墮兘瀛樺湪銆?
<%@ import="com.crystaldecisions.reports.sdk.ReportClientDocument">
<%@ taglib uri="/crystal-t ags-r eportviewer.tld" prefix="crviewer" %>
娉ㄦ剰錛?nbsp; 鍙互涓?prefix 灞炴ф寚瀹氫換浣曞悕縐般俻refix 紜畾瑕佷嬌鐢ㄤ粈涔堟爣璁板墠緙鏉ヨ闂爣璁板簱鐨勬爣璁般?/font>
2. 鍒涘緩鎶ヨ〃婧愶紝璁劇疆鎶ヨ〃婧愮殑灞炴э紝鎶婃姤琛ㄦ簮緙撳瓨浜巗ession鍙橀噺涓紙蹇呴渶鐨勶級
<%
final String reportName="rpt/Sample.rpt";
ReportClientDocument crDoc = new ReportClientDocument();
crDoc.open(reportName,0);
crDoc.getDatabaseController().logon("sa","");
session.setAttribute("reportSource",crDoc.getReportSource());
%>
娉ㄦ剰錛氬鏋渧iewer鏍囪鐨剅eportSourceVar灞炴х殑榛樿鍊兼槸crystalReportSource錛屽鏋滅敤榪欎釜鍋歴ession鍙橀噺鐨勫悕縐幫紝閭e彲浠ヤ笉鐢ㄨ緗畆eportSourceVar銆?/font>
3. 鍒涘緩涓涓紑濮?viewer 鏍囪銆?鍦ㄦ鏍囪涓紝鎸囧畾鏌ョ湅鍣ㄥ悕縐板拰鎶ヨ〃婧愮殑綾誨瀷銆?
<crviewer:viewer viewerName="CrystalViewer" reportSourceType="pageServer" reportSourceVar="reportSource">
4. 緇撴潫 viewer 鏍囪銆?JSP 欏甸潰鐜板湪鍗沖彲鏌ョ湅鍚嶄負 Sample鐨勬姤琛ㄣ?/font>
</crviewer:viewer>

]]>
棣栧厛錛屽簲璇ュ氨鏄寤虹珛涓涓疄浣撶被浜嗐?/p>
鎴戣繖閲岀敤涓涓狾rderItems.java鍋氫緥瀛愶紝浠g爜
濡傛灉浣犺繕娌″緩濂芥姤琛紝鏂板緩涓涓姤琛ㄥReport.rpt錛屽茍鎵撳紑榪欎釜鎶ヨ〃
鍦ㄩ」鐩祫婧愮鐞嗗櫒涓紝鐐瑰嚮OrderItems.java鍓嶉潰鐨? 錛堝彂涓嶄簡鍥劇墖錛夛紝鍙互鐪嬪埌 “緇跨偣 OrderItems”錛屽氨鏄繖涓簡錛屽彸鍑伙紞銆媍rystal reports錛嶃嬫坊鍔犲埌褰撳墠crystal鎶ヨ〃銆傛垨鑰呬綘鍙互鐩存帴鎶?#8220;緇跨偣 OrderItems”鎷夊埌鎶ヨ〃涓?/p>
榪欐牱OrderItems灝卞湪鎶ヨ〃鐨勬暟鎹腑浜嗭紝鍦ㄦ姤琛ㄦ暟鎹腑鍐嶆坊鍔犱竴涓暟鎹簱琛紝濡俻roducts錛坧roduct_id錛宲roduct_name,product_price,....,錛?/p>
濡傛灉娌″嚭浠涔堥棶棰橈紝閭eport.rpt鎶ヨ〃鏁版嵁涓湁浜哋rderItems琛ㄥ拰products琛紝宸﹂敭鎸夌揣OrderItems琛ㄧ殑id錛屾妸浠栨媺鍒皃roducts琛ㄧ殑products_id涓婏紝浣犲彲浠ュ彂鐜頒粬浠腑闂存湁鏉$嚎銆?/p>
榪欐牱OrderItems.id灝辮窡products.products_id鍏寵仈璧鋒潵浜嗐備腑闂寸殑綰塊粯璁ゅ睘鎬ф槸絳変簬錛屼綘涔熷彲浠ユ敼鎴愬叾浠栫殑銆?/p>
鍙沖嚮 Report.rpt錛嶃婥rystal Reports錛嶃嬪垱寤烘煡鐪嬪櫒JSP鈥斻嬮夋嫨鏌ョ湅鍣ˋPI浠g爜鎻掑叆錛嶃嬮変腑 浣跨敤POJO濉厖鎶ヨ〃銆佽繛鎺rystal鎶ヨ〃欏甸潰鏌ョ湅鍣紞銆嬬‘瀹?/p>
涓涓柊鐨凴eport-viewer.jsp欏甸潰灝卞嚭鏉ヤ簡銆備笉榪囩幇鍦ㄥ緢涓嶈兘鐢紝浣犺紼嶅井鏀逛笅閲岄潰鐨勪竴涓佺偣涓滆タ鎵嶈銆?/p>
娉ㄦ剰:Report-viewer.jsp涓敤鍒癑RCHelperSample綾伙紝榪欎釜鍦紙涓錛変腑寤虹珛鐨凜R欏圭洰涓湁錛屾槸闈炲父闈炲父濂界殑宸ュ叿綾伙紝娌′簨灝辨妸瀹冩嫹鍒頒綘鐨勯」鐩笅鍚э紝鏈夊緢澶氬湴鏂硅鐢ㄥ埌榪欎釜綾匯傝繖涓被鍦ㄥ寘com.businessobjects.samples閲岄潰
浣犲彲浠ョ敤OrderItems鐨勬瀯閫犲嚱鏁版坊鍔犳暟鎹泦,浣犲彲浠ョ敤鍒板緢澶氭柟娉曟潵娣誨姞dataSet鏁版嵁闆嗙殑錛屽彧瑕佹坊鍔犵殑鏄噯紜湁鏁堢殑OrderItems瀹炰綋瀵硅薄灝辮浜?/p>
娉ㄦ剰瑕佹妸閲岄潰鐨?* */榪欎簺鍘繪帀
鍚姩tomcat錛岃繍琛孯eport-viewer.jsp鍚?/p>
榪欓噷鏄垜鍋氱殑綆鍗曠敤sql璇彞榪囨護鏁版嵁鐨勪緥瀛愩?/p>
欏圭洰榪樻槸鐢ㄇ?鈹滈敥濞磋問omcat欏圭洰銆?/p>
寤轟竴涓疄鐜拌繖涓姛鑳界殑綾?/p>
JRC_ResultSet_DataSource.java
榪欓噷瑕佹敞鎰忔暟鎹簱鏌ヨ緇撴灉闆嗙殑瀛楁鏁扮洰瑕佽窡鎶ヨ〃閲岄潰鐨勫瓧孌墊暟鐩竴鏍鳳紝綾誨瀷涔熻涓鏍鳳紝涓嶇劧灝變細鍑洪敊銆?/p>
sql璇彞涓殑琛ㄧ殑鍚嶅瓧瑕佸畬鏁達紝濡傛暟鎹簱鍚?dbo.鏁版嵁搴撹〃錛屾渶濂藉仛涓埆鍚?/p>
鏄劇ず欏甸潰
Result_viewer.jsp
娉ㄦ剰涓婇潰鍑犵偣搴旇灝辨病闂浜?/p>
PS錛歋nippets瑙嗗浘鏈涓嬮潰鏈塁rystal reports鐨勪竴浜涘疄鐢ㄤ唬鐮佹
CR鏌ョ湅鍣ㄦ爣璁般佹墦寮騫舵煡璇㈡姤琛ㄣ佹墦寮鎶ヨ〃銆佹煡鐪嬫姤琛ㄣ佹煡鐪嬫姤琛ㄥ茍璁劇疆鏁版嵁搴撶櫥褰曘佸皢鎶ヨ〃瀵煎嚭涓簆df銆佸皢鎶ヨ〃瀵煎嚭涓簉tf 絳夌殑浠g爜孌碉紝綆鍗曟槗鐢?/p>
榪欑瘒鏂囩珷鏁欎綘濡備綍鑷繁鍐欎唬鐮佹潵浜彈姘存櫠鎶ヨ〃鐨?/p>
report_source.jsp
涓婇潰鐨勫彲浠ュ皝瑁呭埌javabean閲岄潰
璁劇疆鏁版嵁搴撶殑鐧婚檰鐢ㄦ埛,濡傛灉嫻忚榪欎釜鎶ヨ〃鐨勭敤鎴烽渶瑕佽緗笉鍚岀殑鏉冮檺鐨勮瘽,閭e氨闇瑕佽緗笂闈㈣繖涓簡
CrystalReportViewer.jsp
絎簩縐嶆柟娉曠洿鎺ョ敤涓涓〉闈?/p>
CrystalReportViewer.jsp
涓漢鎰熻絎竴縐嶆柟娉曞ソ,鎶ヨ〃婧愯窡鏄劇ず鍒嗗紑,瀹夊叏,閲嶇敤鏂逛究
鏂板緩涓涓?Crystal reports web欏圭洰
鍦═arget runtime閫夋嫨apache tomcat v5.5
涓嬩竴姝ヤ腑crystal reports java reporting component銆乨ynamic web module銆乯ava鏄粯璁ら変腑鐨勶紝榪欎笁涓槸蹇呴渶鐨勶紝浣犱篃鍙坊鍔爏truts錛屽悗闈㈢殑璁劇疆浼氳姹備綘娣誨姞struts鐨勭被搴撱傚湪鏈鍚庨潰榛樿鍔犲叆紺轟緥鐨勬暟鎹簱鍜屾姤琛ㄣ?/p>
榪欐牱涓涓狢rystal Reports web欏圭洰灝卞緩绔嬩簡錛堜笂闈㈢殑姝ラ搴旇鏄湴鐞冧漢閮藉彲浠ュ畬鎴愬惂錛?/p>
鍦ㄩ噷闈㈡湁涓狢rystalReport1.rpt鍜孋rystalReport_viewer.jsp
鍙抽敭CrystalReport_viewer.jsp錛?gt;榪愯鏂瑰紡->Run on Server,鐐瑰嚮瀹屾垚銆?/p>
浣犲簲璇ュ氨鍙互鐪嬪埌涓涓┖鐨勬按鏅舵姤琛ㄤ簡鍚э紙涓轟粈涔堢┖鐨勶紝褰撶劧鍟︼紝CrystalReport1.rpt鏈韓鏄┖鐨勶級
鍦ㄧ湅鐪媠ample reports鏂囦歡澶歸噷闈紝鏈?涓ず渚嬬殑.rpt鎶ヨ〃鏂囦歡錛屽彸鍑誨叾涓換浣曚竴涓紝閫変腑Crystal Reports錛嶃嬪垱寤烘煡鐪嬪櫒JSP錛屽氨浼氬垱寤轟竴涓?錛峷iewer.jsp鏂囦歡銆傝繍琛岃繖涓枃浠訛紝浣犲簲璇ュ彲浠ョ湅鍒頒竴涓按鏅舵姤琛ㄤ簡鍚с?/p>
鎴戞兂榪欏澶ч儴鍒嗕漢搴旇閮芥槸娌℃湁闂鐨勶紝鍓╀笅鐨勪簨鎯呭氨鏄ソ濂藉垎鏋愯繖涓」鐩噷闈㈡墍鏈夌殑涓滀笢浜?/p>
-------------------------------------------------------------------------------------------------------------------------------------------------------
涓婇潰浠涔堜笢瑗挎槸鍦ㄤ換浣曢」鐩腑瀹炵幇閮藉繀欏葷殑鍛?涓烘鎴戠壒鎰忓緩绔嬩竴涓柊鐨則omcat欏圭洰,鏈濂藉緩涓涓畝鍗曠殑jsp欏甸潰嫻嬭瘯涓嬩綘鐨則omcat欏圭洰鏄惁鍙互姝e父榪愯.
閫氳繃鏈漢鐨勫疄楠?鍦ㄥ叾浠栭」鐩腑JSP榪愯姘存櫠鎶ヨ〃鐨勮瘽,闇瑕佺殑綾繪枃浠惰窡閰嶇疆.
1. 娣誨姞涓涓敤鎴峰簱濡?CrystalReports Libraries,鎶婁笅闈㈢殑*.jar娣誨姞榪涘幓
commons-collections-3.1.jar,commons-configuration-1.2.jar,
commons-lang-2.1.jar,
commons-logging.jar,
Concurrent.jar,
CrystalCharting.jar
CrystalCommon.jar
CrystalContentModels.jar
CrystalDatabaseConnectors.jar
CrystalExporters.jar
CrystalExportingBase.jar
CrystalFormulas.jar
CrystalQueryEngine.jar
CrystalReportEngine.jar
CrystalReportingCommon.jar
derby.jar
icu4j.jar
jrcadapter.jar
jrcerom.jar
keycodeDecoder.jar
log4j.jar
MetafileRenderer.jar
msbase.jar
mssqlserver.jar
msutil.jar
rasapp.jar
rascore.jar
ReportPrinter.jar
rpoifs.jar
serialization.jar
URIUtil.jar
webreporting.jar
webreporting-jsf.jar
xercesImpl.jar
xml-apis.jar
Xtreme.jar
(鎬誨叡36涓猨ar,閲岄潰鏈変竴浜涘湪鍏朵粬鐨勫簱宸茬粡鏈夌殑浜?鍦ㄩ」鐩腑娣誨姞榪欎釜鑷畾涔夊簱灝辮浜?
2. 鎶婁笂涓緥瀛愪腑鐨刢rystalreportviewers鏂囦歡澶規(guī)斁鍦╓EB-INF鏂囦歡澶瑰悓涓鐩綍涓嬨傝繖涓氨鏄綘鑳界湅鍒版按鏅舵姤琛ㄧ殑鍩烘湰妗嗘灦錛岀浉褰撲簬.net閲岄潰鐨勬按鏅舵姤琛ㄦ帶浠朵簡鐨勬簮浠g爜浜嗐?/p>
3. 鎶奵rystal-tags-reportviewer.tld鏀懼湪WEB-INF涓?涓昏鏍囩
4. web.xml 鍦?lt;web-app>涓棿娣誨姞錛屼富瑕佹槸璇誨叆crystalreportviewers
5. 鎶奀RConfig.xml鏀懼湪src鏂囦歡澶逛笅,姘存櫠鎶ヨ〃鐨勯厤緗枃浠?濡傛灉浣犳湁娉ㄥ唽,娉ㄥ唽鐮佷篃浼氬湪榪欐枃浠墮噷闈?/p>
CRConfig.xml
鍒╃敤 鎰熻鍍忓湪鐢?net閲岄潰鐨勬按鏅舵姤琛ㄦ帶浠朵竴鏍?涓嶅彧viewer,榪瀙artviewer涔熷彲浠ョ殑.CRConfig.xml
鏂囦歡涓緗?
<%@ taglib uri="/crystal-tags-reportviewer.tld" prefix="crviewer" %>
<crviewer:viewer reportSourceType="reportingComponent" viewerName="rcname-viewer" reportSourceVar="rcname" isOwnPage="true">
<crviewer:report reportName="rcname.rpt" />
</crviewer:viewer>
]]>