當前位置:首頁 » 編程語言 » ireport的sql在哪裡寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ireport的sql在哪裡寫

發布時間: 2022-07-26 21:26:16

Ⅰ ireport的使用技巧

1)配置數據源.
選擇 DATA-資料/來源 (估計這個是台灣或者香港或者海外華人翻譯的菜單),然後在出現的界面選擇NEW.

點擊next後,按照出現的下圖,選擇JDBC驅動以及資料庫鏈接路徑,輸入用戶和密碼.(假設安裝的時候有hr方案).
2)新建一個文檔或者說是新建一張報表,菜單是檔案->開啟新檔 (CTRL+N)典型的台灣翻譯.

"欄位數「原文是column count,其實翻譯為」列數「更好一些,意思是一個頁面按照縱向分為幾個部分,例如有輸出為
id, name .如果你選擇欄位數=2,那麼輸出的就是形如:
1 Jack
2 Mike
3 Tony
4 BeckHam
5 Rose

3)設置需要的表格區域.
默認的可用區域包括(這在所有的報表中英文都是band):TITLE,PAGEHEADER,COLUMNHEADER,DETAIL,COLUMNFOOTER,PAGEFOOTER,LASTPAGEFOOTER,SUMMARY.
不是所有的表格區域都是需要的,常用就是title,columnheader,detail,pagefooter,summary我們可以把不需要的隱藏起來. 在報表空排區域右鍵單擊,在彈出的菜單上選擇"欄的屬性",把bandheight參數設置為你需要的值,如果不想顯示該區域(或者是band或者是欄)可以設置BANDHEIGHT=0.

4) 輸入sql
建議用快捷的圖標,就是最上一排,大概中間靠右的地方有個圓柱體的圖標(滑鼠移動到上面會出現database的提示),
點擊一下,在出現的窗口輸入sql語句如下:

5)擺放欄位和設置標題
有工具還是好的,否則工具就沒有什麼意義了. 點擊菜單預覽->docking panes->document structure,然後你自己擺放好文檔結構欄板,在出現的欄板上展開fileds節點,如圖:

注意,這里很重要的: 選中"姓名",按住左鍵不放,拖到detail 欄目上,然後依次拖動其它三個欄位.
順便說一下,這樣的操作對於document structure 中的variables和parameters中的成員也是成立的,對於LIBRARY中變數也是一樣的(就是上圖的下面部分,顯示"page number"等等的地方).
至於對齊這些報表元素,不用說了吧? 看看最下面一欄的快捷按鈕你應該明白的.
從最上面一排快捷按鈕中找到"不回動的文字"(別扭的翻譯),其實就是文本標簽. 先點擊左鍵然後放開,然後移動滑鼠到columnheader區域,再按住左鍵不放,在區域中拉出一個矩形區域,則可在該區域放上一個文本標簽.依次操作放上其它三個,也可發揮ctrl+c,ctrl+v的功能完成其它三個.
6)設置pagefooter和summary內容.
通常我們都會在頁腳放置諸如 "x頁/共y頁"的字樣. 按照前面所說的拖動方法,從library欄板中拖動"page x of y"到pagefooter區域. 然後你可以分別修改需要顯示的內容為:"第 " + $V{PAGE_NUMBER} + " 頁 " ,"共" + $V{PAGE_NUMBER} + "頁".
7)第一次預覽.

8)加sql參數條件和計算行數.
通常我們的SQL都會有條件存在的,首先我們假設要查詢月薪>=特定數值的員工的報表,則先在DOCUMENT STRUCTURE 欄板(或者面板)中右鍵單擊,選擇菜單 add->parameter,
如果你自己不知道應該選擇什麼類型,但是又需要知道新的參數是什麼類型,那麼最好的辦法是查看detail區域上月薪欄位的數據類型,一看是java.math.BigDecimal,那麼好,就設置為java.math.BigDecimal.

如果是字元串類型,一般你就不要new然後再轉換了,直接輸入字元串即可,不過需要加上引號.
修改sql(如前,點擊圓柱體圖標即可),加上以下語句:
where salary>=$P{salary} ,注意$P表示參數的前綴,$V表示變數的前綴,$F表示欄位,名稱則在中括弧輸入.
在summary 欄板中添加變數report_count,然後修改數據類型為字元串,並修改表達式為:"累計人數:"+$V{REPORT_COUNT}.
9)試驗一個簡單的ireport 折線圖
做圖是比較有意思的地方,因為美啊! 必須說明的是,例子用的ireport 是2.0.0.

本來想下載jasper的說明,一看要錢,還是$的,就打消了主意,還是自己來吧。
做折線圖是比較常見的,沒有什麼特別的,不過有幾點還是需要注意的:
1)構建可用的sql語句,這里有很奇怪的技巧要求,也許以後jasper會修改它們的解析機制.
2)設置圖數據集,包括x,y軸的參數,
3)把chart圖放置在正確的列印區域(band)
9.1 正確的sql
首先從sql說起,由於在設置series expression(不知道如何翻譯更加妥貼一些,暫時翻譯為分組表達式)時候是務必要有值的,如果用x或者y的值去作為表達式,直覺來說是不恰當的,所以想想是不是用個常量了,結果還真是.
例句:select mons,cjl,10 N from test_value where jjr='LZF' ORDER BY MONS.
以mons作為x軸,以cjl為y軸,那麼N就是連線變數了.N是什麼值什麼類型不重要,可以是字元串可以是有理數.
這樣就可以形成了報表的欄位變數$F{MONS},$F{CJL},$F{N}
如果你想多畫幾條線,那麼就用一個會變化的欄位來替代N,譬如可以假設有sql如下:
select mons,cjl,jjr n from test_value ORDER BY MONS.
9.2 設置x,y等圖象要素
在圖上右鍵點擊,在彈出的菜單上選擇"char properties",然後在彈出的窗口中選擇「char data"頁面,然後選擇"char data"頁面中的「details"子頁,這是關鍵的地方,然後點擊「ADD"按鈕,在下圖中填入:

"Label expression(optional)"可以不要輸入,這是可選項目。"item hyperlink"可以不要理睬,這是用於設置元素超鏈用的,暫時不要搞這么復雜的.
然後就是設置圖的顯示屬性,如下圖(這是選擇"chart properties"時候首先就出現的部分):

基本名詞解析:

chart title expression 圖標題表達式

chart subtitle expression 圖副標題表達式

show legend 顯示圖例

category axis label expression x軸標簽表達式(意譯了)

value axis label expression y軸標簽表達式

9.3 放置在正確的區域
對於chart務必不能放在detail區域,否則會有奇怪的顯示,不知道是本人不精熟還是ireport的bug(也不能要求太多,畢竟這是個非盈利產品,除了它的部分資料).
如果放置在detail區域,那麼當sql結果集存在多個行的時候,圖就會被畫對應的次數,譬如有N行,則圖也會出現N個一樣的。 所以通常放置在匯總區域(即summary band),不要越界.
最後,用ireport自帶的預覽工具,可以看到下圖:
一條線的,series是固定值。

Ⅱ 是否可以在 ireport 中執行 函數或者存儲過程[oracle]

sql中自定義的函數可以用的,沒有鏈接上資料庫應該會報錯的,不管報錯直接編譯執行試試

Ⅲ ireport5.6版本里sql查詢語句查詢欄位在資料庫表李沒有該欄位該怎麼寫sql語句

上處的欄位名是指的表中的列名 還是指的 列中某一個 值。
如果是指的列名的話,很簡單
select sysobjects.name as tablename,syscolumns.name as columnname
from syscolumns join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%此處為列名%'

Ⅳ 用ireport做報表的時候在ireport里寫了一個SQL語句: select '用戶('||username||『)' username from s

使用concat()試試

Ⅳ 誰知道如何使用iReport 和jasper生成報表(SQL傳參數及中文文件名)

1.首先下載所需要的工具和架包。這里不在多說了。2.這里只介紹幾個難點。1)用ireport創建完成jrxml文件後,到ireport的安裝目錄找到相應的jasper文件,然後放到項目的一個目錄中。(由於讓程序每次都編譯jrxml很浪費時間,再說模板也不容易改變,建議只編譯一次就OK)2)使用代碼如下Session session = HibernateUtil.currentSession();
Connection con = session.connection(); //得到鏈接
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQ ry("select * from applications_list where app_id='" +appId+"'"); //用數據集傳入帶參數的SQL語句
System.out.println("select * from applications_list where appl_list_id='" +appId+"'");
String appPath = req st.getSession().getServletContext().getRealPath("/"); //得到以便於好的jasper文件
if (appPath.lastIndexOf("\\") != appPath.length() - 1)appPath += "\\";
String reportFileName = appPath+ "jasper\\untitled_report_1.jasper";
Map parameters = new HashMap();
parameters.put("Title", "設備申請列表");//注意可以有很多個參數
JasperPrint jasperPrint = JasperFillManager.fillReport(reportFileName, parameters, new JRResultSetDataSource(rs));
JRRtfExporter exporter = null;
exporter = new JRRtfExporter();
response.setContentType("text/html; charset=UTF-8");
response.setContentType("application/msword");
String applicatiosname = ToUTF8.toUtf8String("設備申請單"); //處理下載後文件名中文問題
response.setHeader("Content-disposition","attachment;filename="+applicatiosname+".doc");
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exporter.exportReport();? * 返回字元編碼UTF-8 */
p lic static String toUtf8String(String s) {
StringB?r sb = new StringB?r();

Ⅵ 怎麼用sql控制ireport

請堅持使用@Override註解: 如果在每個方法中使用Override註解來聲明要覆蓋父類聲明,
編譯器就可以替你防止大量的錯誤.

Ⅶ 怎樣使用ireport工具寫匯出匯款的sql語句

首先確定你的資料庫建立好了
IREPORT是這樣的,你可以在IREPORT里設置好jrxml(或者jsper)
這東西裡面已經包含了資料庫鏈接方式,驅動,以及表名,欄位名,查詢語句,還有相對應的顯示方式(當然是以pdf,html等方式顯示)
然後你把jasper或者jrxml放在java目錄下,在代碼中載入使用
比如
你可以在ireport里設置資料庫鏈接,並且給一個主鍵來查詢
select * from user where name='xxx',完成其他ireport設置後把jasper文件放到對應的java project目錄下
然後你在java代碼中載入這個jasper,然後傳入這個name的參數
執行後,jasper會根據這個參數執行sql語句,然後取出欄位,根據你事先設定的顯示方式生成pdf或者html或者其他格式的報表

如果你只是要在jsp裡面顯示一下欄位而已,那麼你就直接在jsp里取資料庫吧
ireport是報表工具,你不做報表就不需要用ireport
有什麼問題再問吧

你也可以不用資料庫鏈接,那麼你首先在ireport中手動設定欄位
生成jasper後在項目的代碼中你必須主動為這個jasper輸入對應欄位的值,然後執行即可

Ⅷ jasperireport的SQL query中寫死的中文讀取出來之後顯示為問號

頁面編碼和資料庫編碼保持一致就可以了,可以修改頁面編碼, 切換GB2312和UTF-8

試試就可以了