快逸報表操作積累.doc_第1頁
快逸報表操作積累.doc_第2頁
快逸報表操作積累.doc_第3頁
快逸報表操作積累.doc_第4頁
快逸報表操作積累.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1. 居中對齊和合并單元格在這里。2. 要隱藏行或列,不選即隱藏3.點配置-控制臺,可看后臺信息。3. 參數(shù)模板 新建一個報表,名字命名為之前的報表_arg,即對應(yīng)報表的參數(shù)模板,快逸報表自帶的showReport.jsp會自動加載參數(shù)模板和報表,頁面上邊顯示參數(shù)輸入,查詢按鈕,下面顯示數(shù)據(jù)。4. 免費版的不能設(shè)置下拉列表為數(shù)據(jù)集。5. 下拉樹,我的表的字段id,name,parentid. 先把輸入設(shè)為下拉樹,再設(shè)置:第一層:parentid=1,第二層:parentid=2,第三層:parentid=$1, ($1表示上一層的節(jié)點的數(shù)據(jù)值,$2表示上兩層)6. 填報屬性更新屬性 更新值為更新值應(yīng)該為這樣:現(xiàn)在更新數(shù)據(jù)點保存成功。ID自動增長Area是參數(shù)的值,改為=area,這樣就保存在報表中,點保存的時候,insert的時候這個字段就有值。7.想讓字全部顯示 8. 當(dāng)對數(shù)據(jù)集運用過濾條件后確定只剩一條記錄時,雖然 select 和 select1的運算結(jié)果一樣,但是 select1 運算效率高,因為他只要找到符合條件的記錄,就不繼續(xù)檢索了,而 select 要檢索完所有的記錄才返回。考慮到顯示值屬性的定義里,幾乎所有情況都只需要返回一條記錄,因此建議大家使用 select1,不要使用 select。9. 動態(tài)計算并顯示計算結(jié)果:$D6+$F6+$H6+$J6+$L6+$N6 10.自動計算顯示格式,保留小數(shù)點后兩位round(D6/C6*10000)/100+%同樣的語句寫到填報屬性的動態(tài)計算就不起作用, 這樣寫:Math.round(D6/C6*10000)/100+%就好了11. 免費版不支持自由填報和行式填報,也不支持多數(shù)據(jù)源,支持屬性中獨立數(shù)據(jù)源。具體解釋在下邊12.匯總:=sum(C7) 這樣上面的幾行數(shù)據(jù)的和就會顯示在這個單元格13.匯總的時候,一個鄉(xiāng)或縣的數(shù)據(jù)1行,用group14.ajax 向后臺傳中文亂碼的解決:因為ajax默認為utf-8編碼,所以把頁面和servlet都設(shè)置為utf-8Jap:Servlet: request.setCharacterEncoding(UTF-8);15. ds2.select1(NAME,ID=bigint(value()頁面上顯示的是文本類型,想轉(zhuǎn)化就這樣bigint16. 填報效驗,比如不能空這樣:D6.length0 或 D6.length!=0 或D6.toSttring()!=” 17.報表組的實現(xiàn) /* 頭部總體 css */.ntab2-head clear:both; height: 21px; border-bottom: #DD531D 2px solid; width:104%; text-align: center;/* 頭部標(biāo)頭的 css */.ntab2-head p float:left; font-size: 14px; font-weight: bold; height: 21px;/* 頭部列表的 css */.ntab2-head li float:left; background: #eeeeee; cursor: pointer; font-size: 12px;font-weight:bold; line-height: 26px; list-style-type: none;.ntab2-head li.current color: #ffffff; cursor: none; background-image:url(/img/menubg.gif);/* 主體內(nèi)容的 css? */.ntab2-body text-align: left; .ntab2-body dl text-indent: 0px; margin: 0px; padding: 0px; function ntab2_register(id, def) var obj = document.getElementById(id); if (!obj | !obj.hasChildNodes() alert(ERROR: the object was not defined for # + id + #); return; / get head & body object var head = null; var body = null; for (var i = 0; i obj.childNodes.length; i+) var node = obj.childNodesi; if (node.tagName = DIV) if (node.className = ntab2-head) head = node; else if (node.className = ntab2-body) body = node; if (!head) alert(ERROR: head elements was not found for # + id + #); return; if (!body) alert(ERROR: body elements was not found for # + id + #); return; / set action & default var items = head.getElementsByTagName(LI); var datas = body.getElementsByTagName(DL); if (items.length = 0) alert(ERROR: empty set for head elements on # + id + #); return; if (items.length != datas.length) alert(ERROR: not equal between body.length and head.length for # + id + #); return; var total = items.length; if (typeof def = undefined) def = 0; else def = parseInt(def)%total; if (def 0) def += total; for (var i = 0; i total; i+) datasi.style.display = (i = def ? : none); itemsi.className = (i = def ? current : ); itemsi.onclick = function() /* for (var k = 0; k total; k+) if(itemsk.className = current) if(k = 0) if(!check_main() return; if(k = 1) if(!check_xj() return; if(k = 4) if(!checkDate(resume_startDate,resume_endDate) return ; if(k = 5) if(!check_train() return; if(k = 6) if(!checkDate(duty_startDate,duty_endDate) return ; */ for (var k = 0; k total; k+) datask.style.display = (this = itemsk ? : none); itemsk.className = (this = itemsk ? current : ); 報表1 報表2 報表3 報表4 報表5 報表6 報表7 ntab2_register(test1, 7); 報表中的名字之前統(tǒng)一是report1,方法名也是,改成不一樣的,這樣在頁面就不會報錯。比如:在jsp頁面這樣寫:report:html name=report2 reportFileName=dbtj.raqfuncBarLocation=needPageMark=yesgenerateParamForm=noneedLinkStyle=yesparams=width=-1exceptionPage=/reportJsp/myError2.jsp/Toolbar里的方法名就相應(yīng)改為:快逸報表集成到已有的項目中1.在已有的 J2EE 項目中使用剛才創(chuàng)建的報表,需要如下步驟: 導(dǎo)入 jar 包和相關(guān)文件 a. 將快逸報表安裝目錄 quieeReportwebappsquieeWEB-INFlib 中的 jar 包導(dǎo)入項目。 b. 將 quieeReportwebappsquieeWEB-INF 目錄下的 reportConfig.xml 、 runqianReport4.tld 、 runqianReportLperties 復(fù)制到項目的 WEB-INF 目錄, c. 將 quieeReportwebappsquiee 目錄下的 j2re-1_4_1-windows-i586-i.exe 、 runqianReport4Applet.ja r 和 images 目錄(用于工具 按鈕的圖片可自選)復(fù)制到項目的 WebRoot 目錄下。 各文件的具體作用參見 3 2. 修改 web.xml 文件 在 web.xml 文件中增加如下內(nèi)容: reportServlet com.runqian.util.webutil.SetContextServlet configFile /WEB-INF/reportConfig.xml 1 reportServlet /reportServlet /WEB-INF/runqianReport4.tld /WEB-INF/runqianReport4.tld 注意,若 web-app 的版本為 2.5 時,需要在 元素外加上 。3.在項目中導(dǎo)入報表文件4.創(chuàng)建 jsp 文件 可以直接使用 quieeReportwebappsquieereportJsp 目錄下的 showReport.jsp 和 toolbar.js p 文件。其中 showReport.jsp 用于顯示報表, toolbar.jsp 用于顯示工具按鈕。5. 添加授權(quán)文件 復(fù)制 quieeReportwebappsquieeWEB-INFclasses 目錄下的 quieeWindowServer.lic授權(quán)文件到項目的 WebRoot 目錄,可能需要修改 reportConfig.xml 文件中的部分內(nèi)容如下: license /quieeWindowServer.lic 6.修改reportConfig.xml 數(shù)據(jù)源 dataSource orcl,oracle,GBK 數(shù)據(jù)源的 JNDI 名稱,數(shù)據(jù)庫類型,數(shù)據(jù)庫字符集編碼,SQL 是否需要轉(zhuǎn)碼;重復(fù) 在tomcat的D:tomcatconfCatalinalocalhost添加一個yldbgz.xml 7.JNDIPrefix表示查找數(shù)據(jù)源時的環(huán)境串前綴,在不同的WEB服務(wù)器中不同, 如 Tomcat 中是 java:/comp/env,而 Weblogic 和 Websphere 中均不需要,可 以不填。什么是快逸報表的獨立多數(shù)據(jù)集快逸報表增強版支持多數(shù)據(jù)集、多源關(guān)聯(lián) 快逸報表免費版支持屬性中獨立多數(shù)據(jù)集都是多數(shù)據(jù)集,但是此多數(shù)據(jù)集非彼多數(shù)據(jù)集,很多免費版的用戶看免費版的功能說明上提到了多數(shù)據(jù)集概念,但是在用到多數(shù)據(jù)集的時候卻又發(fā)現(xiàn)不支持,于是便產(chǎn)生了很多疑問,本文就來給大家解開這個疑問,讓我們看下免費版中的獨立多數(shù)據(jù)集到底是怎么用的。免費版中的多數(shù)據(jù)集全名叫做:報表屬性中獨立多數(shù)據(jù)集,顧名思義,也就是在屬性中可以用到別的數(shù)據(jù)集,現(xiàn)在我們就用一個完整的例子給大家解釋一下這個概念。第一步:用快逸報表自帶的demo數(shù)據(jù)庫,對訂單表建立數(shù)據(jù)集ds1, 數(shù)據(jù)集 sql語句為:SELECT 訂單.訂單ID,訂單.雇員ID,訂單.客戶ID FROM 訂單,并生成相應(yīng)的網(wǎng)格表,效果如下圖:我們可以看到,從訂單表中我們?nèi)〕鰜淼闹皇枪蛦T和客戶的ID ,但是我們實際的報表中這樣肯定是不可以的,因為我們需要知道這個訂單的雇員是誰,叫什么,客戶又是什么名稱,單是一個ID看不出任何東西,也解決不了任何問題,于是我們就需要另外從雇員表和客戶表中去取出他們的名稱,這里就用到了多數(shù)據(jù)集,我們的目的是讓這張報表中出現(xiàn)三個數(shù)據(jù)表中的內(nèi)容,把客戶ID,雇員ID變成相應(yīng)的中文名稱。 請認真看一下兩個步驟:第二步:從客戶表和雇員表增加兩個數(shù)據(jù)集,分別為ds2和ds3 ds2的sql語句為:SELECT 客戶.客戶ID,客戶.公司名稱 FROM 客戶 ds3的sql語句為:SELECT 雇員.雇員ID,雇員.姓氏,雇員.名字 FROM 雇員 于是在就有了3個數(shù)據(jù)集,見下圖:第三步:怎么樣在屬性中使用多數(shù)據(jù)集,這是最關(guān)鍵的一步。 注意,這一步都是在報表右面的屬性欄中完成的。 在快逸的單元格里,我們有實際值和顯示值之分,像上面檢索出來的雇員ID、客戶ID就是真實值,然后我們在右面屬性欄的顯示值里通過關(guān)聯(lián)讓他顯示相應(yīng)的雇員名稱、客戶名稱這就是顯示值。下面我們看具體操作。上圖的紅色小框就是我們顯示值設(shè)置的地方。 首先我們選中B2單元格,設(shè)置雇員ID的顯示值,在顯示值得表達式編輯框中輸入下面的語句:ds3.select1(姓氏+名字,雇員ID=value() 然后在選中C2單元格設(shè)置客戶ID的顯示值:ds2.select1(公司名稱,客戶ID=value() 做好這些以后設(shè)置就完成了,我們預(yù)覽一下效果,如下圖:我們可以看到,雇員和客戶都可以看到具體的名稱了,然后我們把表頭雇員ID,和客戶ID改成雇員名稱和客戶名稱,一張用了多數(shù)據(jù)集的免費快逸報表就做完了。注 :免費版的多數(shù)據(jù)集只能在報表的屬性中使用,所以叫做屬性中的獨立多數(shù)據(jù)集。 增強版的多數(shù)據(jù)集可以直接用在報表的單元格中,是功能更全面的多源關(guān)聯(lián)。報表與頁面一起傳遞參數(shù)給報表7. 快逸報表中參數(shù)模板的使用可以大大提高報表設(shè)計人員設(shè)計報表的效率,而且可以直接使用報表自帶的jsp對整個報表進行展示,在使用中,客戶會有這樣的需求,就是不但使用報表自帶的參數(shù)模板,還需要在系統(tǒng)中得到相應(yīng)的參數(shù)傳遞給報表進行計算,這樣就有很多客戶遇到了相應(yīng)的問題,比如說在報表得不到系統(tǒng)傳過來的參數(shù),或者從系統(tǒng)傳過來的參數(shù)只保存一次,就無法再繼續(xù)查詢了等等,下面就用例子說明一下這樣的報表應(yīng)該如何制作。8. 實現(xiàn)思路:將頁面參數(shù)在jsp中接收后,拼到params中,通過params傳遞給報表,然后在參數(shù)表單里得到相應(yīng)的參數(shù),并且在param標(biāo)簽里使用hiddenParams得到隱藏的參數(shù),這樣就可以實現(xiàn)報表的從參數(shù)模板和頁面得到參數(shù)進行查詢。9. 以如下需求為例,每一條記錄都有添加這條記錄的人員,而每個人員都只能瀏覽自己錄入的記錄。人員在登錄時記錄下了id。10. 數(shù)據(jù)庫中表結(jié)構(gòu)如下:11.12. 設(shè)計報表的數(shù)據(jù)集:13. SELECT * FROM testhong1 WHERE (testhong1.nianfen =? or ? is null )and testhong1.pid = ?14. 其中年份這個參數(shù)是從參數(shù)模板傳遞過來的,人員id這個參數(shù)是從頁面?zhèn)鬟f過來的。15. 設(shè)計報表:16.17.18. 添加參數(shù)并設(shè)計參數(shù)模板:19.20. 用固定的jsp發(fā)布報表,修改showreport.jsp21. 將showreport.jsp重命名為chanliang.jsp,22. 修改report:html name=”report1 reportFileName=” 為 reportFileName=”chanliang.raq”23. 修改report:param name=”form1 paramFileName=” 為 paramFileName=”chanliang_arg.raq”24. 并在 report:param標(biāo)簽中 添加 hiddenParams=”25. 即可,將報表放到應(yīng)用的jsp目錄訪問,url里拼接pid這個參數(shù)作為傳遞過來的人員id,26. :6001/demo/jsp/chanliang.jsp?pid=111127. 由于年份沒有傳遞固定的參數(shù),所以展示如下圖:28.29. 當(dāng)輸入一個年份時,就能按照這個人和年份進行查詢了。30.31. 經(jīng)過如上步驟就成功實現(xiàn)了這一功能。這個功能還可以理解為一種權(quán)限的控制,即當(dāng)此pid為登陸中的session則這個人只能訪問自己的信息,無法瀏覽其他人的信息。如何實現(xiàn)填報表不同單元格的自動關(guān)聯(lián)填充很多做過統(tǒng)計報表的人都遇到過這樣一種情況:每個月填入的新數(shù)據(jù)比較少,絕大多數(shù)都是一些固定的數(shù)據(jù),而這些固定數(shù)據(jù)之間有著關(guān)聯(lián)對應(yīng)的關(guān)系,如果能在報表中加入一些關(guān)聯(lián)關(guān)系,那么只需要填入其中一種數(shù)據(jù),其他的數(shù)據(jù)信息就會根據(jù)關(guān)聯(lián)關(guān)系自動被填充好,這樣即提高了統(tǒng)計人員的工作效率,也減少了可能誤填的情況,那么如何實現(xiàn)填報表不同單元格的自動關(guān)聯(lián)填充呢?實現(xiàn)思路:利用快逸報表中的自動計算功能就可以完成不同單元格信息的自動關(guān)聯(lián),所謂的自動計算,是在填報的時候,當(dāng)用戶錄入了某些數(shù)據(jù)后,系統(tǒng)會自動算出另外一部分單元格的值,由于自動計算大部分時候是在網(wǎng)頁上響應(yīng)的,即用戶在網(wǎng)頁上錄入數(shù)據(jù)時觸發(fā)另外一些單元格自動計算,因此自動計算表達式采用的是javascript表達式或者函數(shù),并且可以引用單元格的值。實現(xiàn)步驟:第一步:制作報表模版設(shè)計一張?zhí)顖蟊恚袷饺缦聢D:其中,B2單元格要在填報屬性中設(shè)置成可寫單元格:在C2單元格的填報屬性中設(shè)置自動計算函數(shù),如下圖中的getName(B2),此函數(shù)的作用是在getName()函數(shù)中傳入B1單元格的值,然后進行自動計算:第二步:編寫自動計算函數(shù)在jsp文件中編寫自動計算函數(shù)getName(),當(dāng)用戶在網(wǎng)頁上錄入數(shù)據(jù)時觸發(fā)此函數(shù)來完成單元格C2自動計算:var idArray = new Array(1,2,3,4,5); /生成部門ID的數(shù)組var nameArray = new Array(市場部,研發(fā)部,技術(shù)支持部,咨詢部,綜合部);/生成部門名稱的數(shù)組function getName(id) /自動計算函數(shù)var name = “”;for(var i=0;iidArray.length;i+) /通過循環(huán)判斷B1單元格輸入的值,來計算出應(yīng)當(dāng)返回的值if(idArrayi=id)name = nameArrayi;break;return name; / 返回自動計算出的值到C2單元格中預(yù)覽效果:設(shè)計好的報表模版和jsp文件放到網(wǎng)頁上展現(xiàn),效果如下圖所示:當(dāng)鼠標(biāo)焦點離開部門ID單元格后,在部門名稱單元格便自動關(guān)聯(lián)填充上此ID相對應(yīng)的部門名稱:利用自動計算函數(shù),我們還可以完成多種業(yè)務(wù)邏輯功能,比如日期的換算,金額的累加或HTML內(nèi)容樣式變換等等,由此簡化用戶的輸入,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論