日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

集算报表用Java动态修改报表数据源

發布時間:2024/4/14 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 集算报表用Java动态修改报表数据源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 實際應用中通過程序動態修改報表模板的情況很常見,其中動態修改數據源SQL就是一種典型場景。常見于系統中有一些結構相同而數據源不同的報表,為減少報表開發工作量,只開發一套報表模板,使用時通過程序動態修改數據源來滿足實際需要。

??下面通過一個使用JAVA程序修改集算報表數據源SQL的例子說明使用過程。

編輯報表模板:

由于不同數據源的字段不同,因此這里使用動態表達式ds1.fname()獲取字段名,ds1.field()獲取字段值。此外,第一行和第一列為輔助行列,設置其隱藏。

?

編寫代碼:

1.讀入報表

StringreportPath = request.getRealPath("/reportFiles/demo.rpx");

??? ReportDefinerd = (ReportDefine)ReportUtils.read(reportPath);

?

2.更改報表數據源

DataSetMetaDatadsmd=newDataSetMetaData();?? //構造數據集元數據

??? SQLDataSetConfigsdc=newSQLDataSetConfig();?? //構造數據集定義

??? sdc.setName("ds1");?? //設置數據集名

??? Stringsql = "";

??? //根據不同參數,為報表設置不同數據源SQL,實際使用中可以從配置文件中讀取

??? switch(Integer.parseInt(type)){

?????? case 1:

?????????? sql="select * from 員工表";

?????? ??? break;

?????? case 2:

?????????? sql="select * from 訂單明細 order by 訂單ID";

?????????? break;

?????? default:sql="select * from 客戶銷售表";

??? }

??? sdc.setSQL(sql);??? //設置 sql語句

??? dsmd.addDataSetConfig(sdc);?? //把數據集定義添加到數據集元數據

??? rd.setDataSetMetaData(dsmd);?? //把數據集元數據賦給ReportDefine

?

3.??????ReportDefine存入request后使用defineBean方式發布報表

??? rd.setDataSetMetaData(dsmd);?? //把數據集元數據賦給ReportDefine

??? request.setAttribute("reportDefine",rd);

?

???????? <report:html name="report1"

??? ?????? srcType="defineBean"

??? ?????? beanName="reportDefine"

??? ?????? exceptionPage="/reportJsp/jsp/myError.jsp"

? />

?

實現效果:

??type=1時顯示員工信息表數據:

? ?type=2時顯示訂單明細表數據:


【附】changeds.jsp完整代碼:

<%@?page?contentType="text/html;charset=GBK"%> <%@?taglib?uri="/WEB-INF/raqsoftReport.tld"prefix="report"?%> <%@?page?import="java.io.*"%> <%@?page?import="java.util.*"%> <%@?page?import="com.raqsoft.report.usermodel.Context"%> <%@?page?import="com.raqsoft.report.model.ReportDefine"%> <%@?page?import="com.raqsoft.report.util.ReportUtils"%> <%@page?import="com.raqsoft.report.usermodel.SQLDataSetConfig"%> <%@page?import="com.raqsoft.report.usermodel.DataSetMetaData"%><html> <link?type="text/css"href="css/style.css"?rel="stylesheet"/> <body?topmargin=0?leftmargin=0?rightmargin=0?bottomMargin=0> <%request.setCharacterEncoding("GBK");Stringtype?=?request.getParameter("type");//取得報表真實路徑StringreportPath?=?request.getRealPath("/reportFiles/demo.rpx");?ReportDefinerd?=?(ReportDefine)ReportUtils.read(reportPath);?DataSetMetaDatadsmd=newDataSetMetaData();???//構造數據集元數據SQLDataSetConfigsdc=newSQLDataSetConfig();???//構造數據集定義sdc.setName("ds1");???//設置數據集名Stringsql?=?"";//根據不同參數,為報表設置不同數據源SQL,實際使用中可以從配置文件中讀取switch(Integer.parseInt(type)){case?1:sql="select?*?from?員工表";break;case?2:sql="select?*?from?訂單明細?order?by?訂單ID";break;default:sql="select?*?from?客戶銷售表";}sdc.setSQL(sql);????//設置?sql語句dsmd.addDataSetConfig(sdc);???//把數據集定義添加到數據集元數據rd.setDataSetMetaData(dsmd);???//把數據集元數據賦給ReportDefine?request.setAttribute("reportDefine",rd);%>?? <jsp:include?page="toolbar.jsp"flush="false"?/> <table?id="rpt"align="center"?width=100%?height=100%><tr><td?align=center?valign=top?height=100%><report:html?name="report1"?srcType="defineBean"beanName="reportDefine"exceptionPage="/reportJsp/jsp/myError.jsp"/>?</td></tr> </table></body> </html>


轉載于:https://blog.51cto.com/report5/1633839

總結

以上是生活随笔為你收集整理的集算报表用Java动态修改报表数据源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。