報表制作過程_第1頁
報表制作過程_第2頁
報表制作過程_第3頁
報表制作過程_第4頁
報表制作過程_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、報表編輯過程報表的部署過程1.首先,如果是第一次部署報表,首先拷貝報表引擎所需的文件:· 從%安裝路徑%DeploymentJSP下拷貝Ming.tld到Web應(yīng)用程序的WEBINF目錄下· 從%安裝路徑%DeploymentJSP下拷貝mr.jar(文件名可能不同,可能如mr_Trial.jar等)到Web應(yīng)用程序的WEBINF/lib目錄下,如果lib目錄不存在則創(chuàng)建。· 選擇一個目錄作為報表根目錄(RootPath),如/YourApp/Reports/,從%安裝路徑%DeploymentJSP下拷貝ReportCenter.jsp到報表根目錄/YourAp

2、p/Reports/。· 從%安裝路徑%DeploymentJSP下拷貝文件MREp到目錄/YourApp/WEB-INF/下。MREp文件中包含一個MRViewerVersion參數(shù),類似MRViewerVersion=2,1,1,0,“2,1,1,0”描述的是報表瀏覽器的版本號碼,瀏覽器升級之后,需要在此指定新版本的版本號,這樣客戶端才可以自動下載新版本的瀏覽器插件。關(guān)于配置文件MREp中參數(shù)的詳細說明請參考配置文件里面注釋。· 從%安裝路徑%Deployment下拷貝Viewer文件夾到報表根目錄/YourApp/

3、Reports/下,Viewer文件夾中有MRViewer.cab文件,這就是報表瀏覽器插件。2.拷貝已經(jīng)用報表設(shè)計器設(shè)計好的報表模板到報表根目錄或者根目錄下的子文件夾下面注意:如果你的應(yīng)用程序是YourApp,那么你可以指定這個應(yīng)用程序YourApp下的目錄“/Reports/”作為你的報表的根目錄。即:“/Reports/”。3.創(chuàng)建JSP頁面,嵌入報表瀏覽器、為報表準備數(shù)據(jù):新建一個JSP文件,用于顯示報表,如FirstReport.jsp,加入下面代碼:· 引用Tag Library <% taglib uri="Ming.tld" prefix=&

4、quot;ming" %>· 引用需要的包<% page import="com.ming.webreport.*" %>· 創(chuàng)建MREngine對象MREngine engine = new MREngine(pageContext);· 設(shè)置報表根路徑engine.setRootPath("/Reports/");注意此處不應(yīng)該包含應(yīng)用程序的虛擬目錄“YourApp”,而是從虛擬目錄的根開始,應(yīng)該是“/Reports/”。· 添加數(shù)據(jù)集在數(shù)據(jù)組件中添加一個數(shù)據(jù)集,其中"ti

5、tles"用來指定數(shù)據(jù)集名稱,這個名稱與用報表設(shè)計器設(shè)計報表模板時指定的數(shù)據(jù)集名稱對應(yīng);rs可以是一個和,或者,包含了報表所需數(shù)據(jù):engine.addMRDataSet("titles",rs); 1. 可以將其他類型的數(shù)據(jù)轉(zhuǎn)換成MRDataSet對象,然后使用addMRDataSet添加數(shù)據(jù)集,下面的代碼展示如何將一個轉(zhuǎn)換為com.ming.webReport.MRDataSet(addMRDataSet方法可以直接使用ResultSet,以下代碼僅作為演示):ArrayList ary = new ArrayList();while(rs.next() /r

6、s為一個現(xiàn)有非空的ResultSet對象DataRecord rec = new DataRecord();for(int i=1;i<=rs.getMetaData().getColumnCount();i+)Object val = rs.getObject(i);rec.setValue(rs.getMetaData().getColumnName(i),val);ary.add(rec);MRDataSet mrds =new MRDataSet();mrds.addRows(mrds);engine.addMRDataSet("titles",mrds);如

7、果報表用到的數(shù)據(jù)集超過一個,則可以繼續(xù)加入這些數(shù)據(jù)集:engine.addMRDataSet("roysched",rs2); 如果數(shù)據(jù)集之間存在關(guān)聯(lián),用下面代碼設(shè)置數(shù)據(jù)集之間的關(guān)聯(lián),其中"titles"是主數(shù)據(jù)集的名稱,"roysched"是子數(shù)據(jù)集的名稱,而"title_id=title_id"是兩個數(shù)據(jù)集之間的關(guān)聯(lián)表達式,表示使用各自表中的title_id字段對應(yīng)關(guān)聯(lián)。如果關(guān)聯(lián)字段超過一組時用分號(;)分隔:engine.addRelation("titles", "roysch

8、ed", "title_id=title_id");2. 如果從數(shù)據(jù)庫從數(shù)據(jù)庫查詢出來的數(shù)據(jù)被封裝成了一個對象,并返回。報表并不支持對象顯示數(shù)據(jù),以下方法可以將對象轉(zhuǎn)換成DataRecord數(shù)據(jù)集:/o為需要轉(zhuǎn)換成DataRecord數(shù)據(jù)集的對象 /c為o對象運行時類public MRDataSet objcetToDataRecord(HttpServletRequest request,Object o,Class c) throws Exception DataRecord rec = new DataRecord();MRDataSet mrds = ne

9、w MRDataSet();BeanInfo beanInfo = Introspector.getBeanInfo(c);PropertyDescriptor descriptors = beanInfo.getPropertyDescriptors();for (PropertyDescriptor descriptor : descriptors) Method method = descriptor.getReadMethod();Object obj = method.invoke(o, new Object );rec.setValue(descriptor.getName().t

10、oUpperCase(), obj);mrds.addRow(rec);return mrds;3. 如果從數(shù)據(jù)庫從數(shù)據(jù)庫查詢出來的數(shù)據(jù)被封裝成了一個對象集合,并返回。報表并不支持集合顯示數(shù)據(jù),以下方法可以將該集合轉(zhuǎn)換成含有DataRecord數(shù)據(jù)集的集合:/list為需要轉(zhuǎn)換的集合/為o對象運行時類public List<DataRecord> buildDataRecord(List<Object> list,Class c)throws Exception List ary = new ArrayList();BeanInfo beanInfo = Introsp

11、ector.getBeanInfo(c);PropertyDescriptor descriptors = beanInfo.getPropertyDescriptors();for (Object o : list) DataRecord rec = new DataRecord();for (PropertyDescriptor descriptor : descriptors) Method method = descriptor.getReadMethod();Object obj = method.invoke(o, new Object );rec.setValue(descrip

12、tor.getName().toUpperCase(), obj);ary.add(rec);return ary;4. 有時候我們需要一些空記錄,以下方法是創(chuàng)建一個包含n條空記錄的數(shù)據(jù)集:public ArrayList createEmptyDataRecord(int n)ArrayList ary = new ArrayList();tryDataRecord recs = new DataRecord();for(int j=0;j<n;j+)for(int i=0;i<FIELD.length-6;i+)recs.setValue(FIELDi, " &quo

13、t;); ary.add(recs);catch(Exception e)e.printStackTrace();return ary;5. 如果從數(shù)據(jù)庫取出來的記錄中包含圖片,那么我們需要將該圖片轉(zhuǎn)換成MRDataSet然后才能在表報中顯示出來,以下方法可以轉(zhuǎn)換:publicMRDataSet getBlobDataFromFiles(XMLGraph xmlGraph) throws Exception MRDataSet mrds = new MRDataSet();DataRecord recs = new DataRecord1;recs0 = new DataRecord(); r

14、ecs0.setValue("picture", xmlGraph.getGraph();return mrds;注:在編輯報表的時候要使用圖片控件報表設(shè)計器的使用數(shù)據(jù)源操作新增數(shù)據(jù)源添加一個數(shù)據(jù)源。執(zhí)行該操作后,左側(cè)樹列表中會增加一個數(shù)據(jù)源節(jié)點,并在該節(jié)點下增加一個“數(shù)據(jù)集”節(jié)點。數(shù)據(jù)源包括兩個屬性:數(shù)據(jù)源名稱和連接串。添加數(shù)據(jù)源后,數(shù)據(jù)源的名稱缺省為空,必須為該數(shù)據(jù)源命名后才能正確保存。連接串的設(shè)置參見設(shè)置連接串。· 菜單項【數(shù)據(jù)à新建數(shù)據(jù)源】;· 【項目樹中數(shù)據(jù)節(jié)點上按右鍵快捷菜單à新建數(shù)據(jù)源】;連接數(shù)據(jù)源 按定義的連

15、接串連接到數(shù)據(jù)庫??梢暬刂疲何粗付ㄟB接串時不可用;已連接后不可用;其他可用。· 菜單項【數(shù)據(jù)à連接數(shù)據(jù)源】;· 【項目樹中對應(yīng)數(shù)據(jù)源節(jié)點上按右鍵快捷菜單à連接數(shù)據(jù)源】;斷開數(shù)據(jù)源連接。 斷開數(shù)據(jù)源連接。 屬于該數(shù)據(jù)源的所有數(shù)據(jù)集都會被關(guān)閉。可視化控制:已連接后可用;其他不可用。· 菜單項【數(shù)據(jù)à斷開數(shù)據(jù)源】;· 【項目樹中對應(yīng)數(shù)據(jù)源節(jié)點上按右鍵快捷菜單à斷開數(shù)據(jù)源】;數(shù)據(jù)集操作新建數(shù)據(jù)集添加新的數(shù)據(jù)集。執(zhí)行該操作后,左側(cè)項目樹列表中會在當前數(shù)據(jù)源下增加一個數(shù)據(jù)集節(jié)點。數(shù)據(jù)集包括以下屬性:數(shù)據(jù)源名稱:指示數(shù)據(jù)集所屬

16、數(shù)據(jù)源,只讀;數(shù)據(jù)集名稱:名稱缺省為空,必須為該數(shù)據(jù)集命名后才能正確保存;類型:可選擇表、SQL、存儲過程、XML“表”:從單個數(shù)據(jù)庫表中獲取數(shù)據(jù),參見選擇數(shù)據(jù)表;“SQL”:使用SQL查詢語句獲取數(shù)據(jù),參見設(shè)置SQL語句;“存儲過程”:使用存儲過程以及參數(shù)來獲取數(shù)據(jù),參見設(shè)置存儲過程;“XML”:從XML文件獲取數(shù)據(jù),參見設(shè)置XML文件。注意:數(shù)據(jù)集的名稱只能包含字符(A-z,0-9),且必須以英文字母開頭,長度不超過255。· 菜單項【數(shù)據(jù)à新建數(shù)據(jù)集】;· 【項目樹中數(shù)據(jù)(集)節(jié)點上按右鍵快捷菜單à新建數(shù)據(jù)集】打開數(shù)據(jù)集打開數(shù)據(jù)集,從數(shù)據(jù)源獲取數(shù)據(jù)

17、;如果數(shù)據(jù)源未連接會自動連接。執(zhí)行此操作會自動切換到數(shù)據(jù)標簽,用來查看數(shù)據(jù)。數(shù)據(jù)是只讀的,不能被修改。· 菜單項【數(shù)據(jù)à打開數(shù)據(jù)集】;· 【項目樹中數(shù)據(jù)集節(jié)點上按右鍵快捷菜單à打開數(shù)據(jù)集】刷新數(shù)據(jù)集 當前數(shù)據(jù)集打開時,刷新當前數(shù)據(jù)集的數(shù)據(jù)。菜單【項目樹中數(shù)據(jù)集節(jié)點上按右鍵快捷菜單à刷新數(shù)據(jù)集】關(guān)閉數(shù)據(jù)集當前數(shù)據(jù)集打開時,關(guān)閉當前數(shù)據(jù)集。· 菜單項【數(shù)據(jù)à關(guān)閉數(shù)據(jù)集】· 【項目樹中數(shù)據(jù)集節(jié)點上按右鍵快捷菜單à關(guān)閉數(shù)據(jù)集】選擇數(shù)據(jù)集當數(shù)據(jù)集類型是“表”時,數(shù)據(jù)集的屬性列表中會出現(xiàn)“表”屬性,可使用鼠

18、標或Alt+打開下拉列表,該列表中會顯示當前數(shù)據(jù)源所連數(shù)據(jù)庫中可訪問的表和視圖,選擇其中一個作為當前數(shù)據(jù)集所對應(yīng)的數(shù)據(jù)表,數(shù)據(jù)集的名稱會自動改為所選擇的數(shù)據(jù)表或視圖的名稱。設(shè)置SQL語句當數(shù)據(jù)集類型是“SQL”時,數(shù)據(jù)集的屬性列表中會出現(xiàn)“SQL”屬性,可使用鼠標雙擊或點擊按鈕打開“SQL編輯器”,在SQL編輯器中可以輸入或者粘貼SQL查詢腳本?!罢Z法檢查”按鈕可用來對當前的SQL腳本進行語法檢查;點擊“確認”按鈕,返回主界面。設(shè)置存儲過程 當數(shù)據(jù)集類型是“存儲過程”時,數(shù)據(jù)集的屬性列表中會出現(xiàn)“存儲過程”屬性,可使用鼠標雙擊或點擊按鈕打開“存儲過程參數(shù)”對話框,在該對話框左側(cè)的列表中列出了當

19、前數(shù)據(jù)源連接的數(shù)據(jù)庫中所有可訪問的存儲過程,在列表中選擇一個存儲過程時,右側(cè)列表會列出這個存儲過程的所有輸入?yún)?shù),在這里必須為每個參數(shù)填寫適當?shù)闹?,該存儲過程才能夠被正確打開。點擊“確定”保存當前設(shè)置并返回主界面;“取消”放棄并返回主界面。設(shè)置XML文件當數(shù)據(jù)集類型是“XML”時,數(shù)據(jù)集的屬性列表中會出現(xiàn)“XML”屬性,可使用鼠標雙擊或點擊“”按鈕打開“打開”文件對話框,在該對話框選擇一個XML文件作為當前數(shù)據(jù)集的數(shù)據(jù)。注意:這個XML文件必須是使用設(shè)計器的導(dǎo)出XML文件數(shù)據(jù)功能導(dǎo)出的XML文件,其他格式的XML文件將不能被識別。選擇關(guān)系主表 選擇與當前數(shù)據(jù)集有主/從關(guān)系的主表。當數(shù)據(jù)之間存在

20、主/從關(guān)系時,如類似“單據(jù)”和“明細”這樣數(shù)據(jù),可以通過選擇關(guān)聯(lián)主表和設(shè)置關(guān)聯(lián)字段來在數(shù)據(jù)集之間建立主/從關(guān)聯(lián)關(guān)系。主從關(guān)系建立好后,從表中就只顯示和主表當前記錄相關(guān)的數(shù)據(jù)。在數(shù)據(jù)集“主表”編輯區(qū)使用鼠標或Alt+可以打開下拉列表,在該列表中列出了可以作為當前數(shù)據(jù)集的主表的數(shù)據(jù)集名稱,選擇其中一個作為當前數(shù)據(jù)集的關(guān)聯(lián)主表。設(shè)置好主表后,必須同時設(shè)置關(guān)聯(lián)字段,主從關(guān)聯(lián)關(guān)系才能被正確建立。設(shè)置關(guān)鍵字段 設(shè)置主/從關(guān)系的對應(yīng)字段。如果為當前數(shù)據(jù)集指定了關(guān)聯(lián)主表,可使用鼠標雙擊或點擊按鈕打開“關(guān)聯(lián)”對話框,在該對話框的“主表字段”列表中,列出了主表的所有字段;“從表字段”列這中列出了當前數(shù)據(jù)集的所有字

21、段。分別系從這兩個列表中選擇適當?shù)淖侄?,然后點擊“聯(lián)接”按鈕,在這兩個字段之間建立聯(lián)接關(guān)系,這個關(guān)系將會已FieldA=FieldB的形式被添加到對話框下方的“連接字段”列表中;如果多于一對字段需要建立聯(lián)結(jié),再次選擇字段,并點擊“聯(lián)接”按鈕,直到所有關(guān)聯(lián)字段均已處理。點擊“重置”會清除已經(jīng)定義的聯(lián)接;點擊“確認”保存當前設(shè)置并返回主界面;點擊“取消”放棄設(shè)置并返回主界面。設(shè)置索引字段設(shè)置當前數(shù)據(jù)集的索引排序字段。可以使用分號“;”分隔的字段名稱來指定當前數(shù)據(jù)集的排序字段。排序優(yōu)先順序按字段名稱在當前設(shè)置中的出現(xiàn)的位置先后為準。排序缺省為升序排序,設(shè)置降序排序需要在排序字段后面加"DE

22、SC"和字段間用空格隔開。注意:當設(shè)置了主從關(guān)聯(lián)后,對這個屬性將使用關(guān)聯(lián)設(shè)置的結(jié)果,對該屬性的修改都將無效。導(dǎo)入XML數(shù)據(jù)集 從磁盤上的XML數(shù)據(jù)文件創(chuàng)建數(shù)據(jù)集。該功能會打開一個“打開”文件對話框,在對話框內(nèi)可以選擇一個或多個XML文件,點擊該對話框的“打開”按鈕后,會在當前數(shù)據(jù)源下建立以XML文件名命名的數(shù)據(jù)集,該數(shù)據(jù)集的數(shù)據(jù)來自對應(yīng)XML數(shù)據(jù)文件。如果同名的數(shù)據(jù)集已經(jīng)存在,則該文件的導(dǎo)入不會成功,系統(tǒng)會彈出消息對話框顯示未成功的文件名稱。導(dǎo)出XML數(shù)據(jù)集將選中數(shù)據(jù)集的數(shù)據(jù)導(dǎo)出至磁盤XML文件。該功能會打開一個“瀏覽文件夾”對話框,使用該對話框選擇一個目錄用來存放導(dǎo)出的XML文件。

23、可以對多個數(shù)據(jù)集同時執(zhí)行該操作,在左側(cè)對象樹列表中選擇“數(shù)據(jù)集”節(jié)點,在右側(cè)的列表中可以使用鼠標拖動、Shift+鼠標點擊、Ctrl+鼠標點擊來選擇多個數(shù)據(jù)集。導(dǎo)出的文件名稱使用數(shù)據(jù)集名稱加.xml文件后綴名,這些XML文件可以用于在設(shè)置XML文件功能中指定數(shù)據(jù)集的XML數(shù)據(jù)文件,或用來導(dǎo)入XML文件數(shù)據(jù)集。轉(zhuǎn)換為XML數(shù)據(jù)集如果當前數(shù)據(jù)集是數(shù)據(jù)庫的表、視圖、SQL語句或存儲過程等非XML文件格式的數(shù)據(jù)集,那么可以通過這個功能直接將當前的數(shù)據(jù)集轉(zhuǎn)換為XML格式的數(shù)據(jù)集。創(chuàng)建和編輯報表新建報表文件夾新建一個報表文件夾,文件夾的含義與文件系統(tǒng)文件夾的含義類似。項目樹列表的“報表”節(jié)點代表根目錄“/

24、”??梢赃x中項目樹的“報表”節(jié)點在根目錄下新建文件夾;也可以選中某一文件夾節(jié)點在文件夾下面新建文件夾,文件夾對象只有一個報表名稱屬性,文件夾對象的命名規(guī)范應(yīng)符合文件系統(tǒng)的文件夾命名約束;· 菜單項【報表à新建文件夾】· 【選中“報表”或其他文件夾節(jié)點按右鍵快捷菜單à新建文件夾】文件夾的移動報表文件夾可以像文件系統(tǒng)文件夾一樣,在項目樹的文件夾節(jié)點之間移動整個選定的文件夾,被移動文件夾下面的所有報表對象同時隨該文件夾一起移動。用鼠標選中待移動的文件夾,拖動到目標節(jié)點,放開鼠標,即可完成文件夾移動。新建報表在當前路徑下新建一個報表對象。如意報表(Ming-We

25、bReport)使用路徑來分層管理報表。在設(shè)計器中,項目樹的“報表”節(jié)點代表根目錄“/”,文件夾的含義與文件系統(tǒng)文件夾的含義類似。報表對象包括以下屬性:報表名稱報表對象的名稱,只讀;注意:報表對象的命名應(yīng)符合文件系統(tǒng)的文件命名約束。· 菜單項【報表à新建報表】· 【選中“報表”或其他文件夾或報表節(jié)點按右鍵快捷菜單à新建報表】報表的拖動報表對象可以像文件系統(tǒng)的文件對象一樣,在項目樹的文件夾節(jié)點之間拖動選定的報表對象,也可以在報表的項目樹和操作系統(tǒng)的資源管理器之間進行報表的拖動操作。移動報表對象:用鼠標選中待移動的報表對象,拖動到目標節(jié)點即可完成報表對象的移

26、動。如圖示: 復(fù)制報表對象:移動報表時,如果在開始移動的同時按住“CTRL”鍵,將是復(fù)制報表到目標文件夾,而不是移動報表到目標文件夾。 拖動導(dǎo)出報表對象到操作系統(tǒng)的資源管理器:按住“CTRL”鍵用鼠標還可以拖動報表模板到操作系統(tǒng)的資源管理器里面,相當于導(dǎo)出模板的效果。從操作系統(tǒng)的資源管理器拖動導(dǎo)入報表模板到打開的報表設(shè)計器中:用鼠標可以從資源管理器中直接拖一個報表模板到當前報表設(shè)計器打開的報表項目中,這和到入報表模板的效果相同,如果拖動到的目標節(jié)點有同名模板則會提示是否覆蓋。頁面設(shè)置在頁面設(shè)置對話框中可以完成報表打印機的設(shè)置,紙張設(shè)置,以及其它報表選項設(shè)置。有些屬性的設(shè)置會影響到對象查看器中對

27、應(yīng)的某些屬性的屬性值。各類屬性設(shè)置:觸發(fā)頁面設(shè)置操作【文件à頁面設(shè)置】【鼠標雙擊報表工作區(qū)的空白處】 “紙張類型”頁:ALT + S選中紙張類型設(shè)置域· 打印機:列出了所有系統(tǒng)中可用的打印機。如果你的系統(tǒng)沒有安裝打印機,或者打印機型號不合適,你可以選擇“虛擬打印機”選項,這將可以使用所有的打印尺寸,但不能打印輸出。這只有在報表的設(shè)計狀態(tài)中可以使用,并允許預(yù)覽報表。你也可以使用虛擬打印為其他某個型號的打印機設(shè)計報表,而不需要在你的電腦中接著該類型的打印機,例如要設(shè)計A3幅面的報表,但因為你的打印機不支持A3幅的報表大小,所以不能選擇設(shè)計A3幅的報表,此時如果選中“虛擬打印機”

28、選項則可以選擇設(shè)計任何幅面的報表,但只能設(shè)計不能輸出;· 大?。哼x擇打印紙幅面,受上面打印機選項的影響。· 寬度、高度:報表幅面的寬度和高度值,受報表幅面選項的限制。如果選定的是標準的打印紙,則寬高值為只讀,如果在打印紙“大小”選項種選擇了“自定義”選項則寬度和高度值可改,根據(jù)用戶打印紙的大小來定制。· 打印方向:設(shè)置報表輸出的方式:縱向或橫向。· 不限高度:該選項用來設(shè)定報表幅面的高度,如果報表格式要求高度很高,可以選中該選項,報表高度將不受限制。例如:當報表帶區(qū)(Band)很多,報表設(shè)計工作區(qū)內(nèi)擺放不下時,可以選擇“不限高度”復(fù)選框,來增加報表設(shè)計工

29、作區(qū)的高度,以便擺放所有帶區(qū)。· 標題:設(shè)定打印報表時在標題欄位置顯示的信息?!凹垙垇碓础表摚篈LT + P選中紙張來源設(shè)置域設(shè)置紙張來源是缺省還是來自打印機的紙盒?!绊撨吘唷表摚篈LT + M選中頁邊距設(shè)置域上、下、左、右分別設(shè)置報表打印內(nèi)容相對打印機可打印區(qū)域的邊距,單位是厘米?!捌渌表摚篈LT + O 選中其他設(shè)置域 分欄”區(qū)域:· 欄數(shù):設(shè)置報表的分欄參數(shù),使報表按指定欄數(shù)輸出打印內(nèi)容。該設(shè)置和報表的“Columns”屬性值意義相同;· 欄間隔:調(diào)整各欄之間的間距,單位是厘米;“選項”區(qū)域:· 打印到前一頁:它允許新的一頁從上頁的剩余區(qū)域開始打

30、印;· 兩遍報表:如果你需要在報表中使用“總頁數(shù)”函數(shù),像打印“第xx頁共xx頁”時需要選中“兩遍報表”選項。如果你使用TotalPages函數(shù),但你忘記選取中這個選項,你將在你的報表中得到總頁數(shù)為。還有一些好處是選中“兩遍報表”可以在最后一次中顯示第一次的計算結(jié)果。其中之一就是在分組頭中顯示分組數(shù),可以在演示報表中找到例子。· 不打印背景圖:如意報表(Ming-WebReport)可以用為報表設(shè)置背景圖片的方式實現(xiàn)套打功能(也可以用嵌入代碼來實現(xiàn)),一般將實際單據(jù)掃描成電子圖片,作為報表的背景圖片,如果選中了不打印背景圖,則輸出的時候?qū)⒉惠敵霰尘皥D,實現(xiàn)套打。注意:選中套

31、打的時候,在預(yù)覽界面仍然可以看到背景圖。· 打印時打印背景顏色:指定打印報表時是否打印報表的背景顏色。打印預(yù)覽打印預(yù)覽可以在設(shè)計報表的過程中隨時運行調(diào)試報表,瀏覽當前報表的運行結(jié)果。打印預(yù)覽時報表的樣式就是報表發(fā)布后運行的真實樣式,主要用于調(diào)試報表。· 菜單項【報表à打印預(yù)覽】· 【選中項目樹報表對象節(jié)點按右鍵快捷菜單à打印預(yù)覽】· 工具欄【打印預(yù)覽】· 快捷鍵【F9】· 其它【在報表編輯界面中,選擇“瀏覽”頁,瀏覽當前報表】預(yù)覽工具欄介紹:設(shè)置報表預(yù)覽的縮放比例:指定縮放方式,依次為:實際大小,適合窗口,適合寬度

32、。:預(yù)覽頁面導(dǎo)航,依次為:第一頁,上一頁,下一頁,最后一頁。:打印報表,顯示打印設(shè)置窗口。:輸出報表到其它格式文件。目前支持的格式包括:HTML頁面文件,JPEG圖片,Acrobat PDF文件,純文本文件,Excel CSV文件,RTF 文件。添加頁為當前報表添加新的報表頁。一個報表是由至少一個“報表頁”組成的,在報表的“設(shè)計”窗口,可以為當前報表添加報表頁。當觸發(fā)添加頁的操作的時候回彈出“頁面設(shè)置”窗口,用于為新的報表頁設(shè)置相關(guān)頁面屬性。添加頁操作完成之后會在當前報表編輯窗口底部的報表頁標識Tab上增加一個以頁數(shù)為頁碼的報表頁標識Tab。· 菜單項【報表à添加頁】

33、83; 【在當前報表編輯窗口底部的報表頁Tab上按右鍵快捷菜單à添加頁】· 工具欄【添加頁】添加對話框 為當前報表添加新的報表對話框。在報表的“設(shè)計”窗口,可以為當前報表添加報表對話框。添加頁操作完成之后會在當前報表編輯窗口底部的報表頁標識Tab上增加一個以頁數(shù)為頁碼的報表頁標識Tab。新的報表對話框有一個缺省大小的表單Form 。· 菜單項【報表à添加對話框】· 【在當前報表編輯窗口底部的報表頁Tab上按右鍵快捷菜單à添加對話框】· 工具欄【添加對話框】設(shè)置數(shù)據(jù)字典設(shè)置當前報表的數(shù)據(jù)字典。每個報表都有獨立的數(shù)據(jù)字典,數(shù)據(jù)字

34、典對話框包含3個頁,變量,字段別名和BAND數(shù)據(jù)源,分別可以用來定義報表中使用的變量,定義數(shù)據(jù)字段別名和Band數(shù)據(jù)源別名。數(shù)據(jù)字典保存在報表窗口中,但也可以保存在單獨的.MRD文件中,在需要時再從中讀出數(shù)據(jù)到報表中。要做到這點,在設(shè)計器菜單中選擇“報表à數(shù)據(jù)字典à導(dǎo)出數(shù)據(jù)字典”和“報表à數(shù)據(jù)字典à導(dǎo)入數(shù)據(jù)字典”,然后在彈出的標準打開或保存對話框中選擇“Ming-WebReport數(shù)據(jù)字典文件”的文件類型,繼續(xù)完成相關(guān)保存和打開的操作。菜單項【報表à數(shù)據(jù)字典à數(shù)據(jù)字典】 “變量”頁· 使用“變量”頁來管理報表中使用的變量列表

35、。左側(cè)的列表列出了所有的變量。變量按兩個層次管理,為變量進行分類,每個變量必須屬于一個分類目錄。當報表中變量較多時,為變量分類便于在使用變量時快速查找定位。當創(chuàng)建一個新的報表時,變量列表是空的,可以使用下面功能來建立和維護變量列表:添加一個新的類別,可以使用快捷鍵Ctrl+Insert添加新類別;:在當前類別下添加一個新的變量,可以使用快捷鍵Insert在當前類別下添加新變量;:修改類別或者變量的名稱;· :刪除選定的類別或變量,快捷鍵Delete。· 定義好變量列表之后,就可以為變量設(shè)置值。要做到這一點,你需要用鼠標在左邊列表中選擇一個變量,在右邊列表中選擇一個值。如意報

36、表(Ming-WebReport)目前提供三種類型的變量值:數(shù)據(jù)集、系統(tǒng)變量和表達式:¨ ¨         數(shù)據(jù)集:所有的數(shù)據(jù)集都顯示在右邊的列表中,在這個時候是可用的,字段的名稱同樣也是變量。在設(shè)計時,所有打開的模塊(單元)中的所有數(shù)據(jù)集都可用。在運行時,所有已創(chuàng)建的窗體或數(shù)據(jù)項模塊中的所有數(shù)據(jù)集都可用。¨ ¨         系統(tǒng)變量:包括下面幾個有用的值:a:頁#:當前頁號;b:日期:當前

37、日期;c:時間:當前時間;d:行#:相對于當前數(shù)據(jù)內(nèi)容的行號;e:行Through# :相對于整個報表的行號;f:列#:當前列號;e:總頁數(shù):報表的總頁數(shù)。¨ ¨         表達式:變量的值也可以是一個表達式,也可以通過表達式編輯器為變量賦值。選擇下方的“表達式”復(fù)選框,點擊“”按鈕打開表達式編輯器為變量賦值??梢栽诰庉嬁蛑兄苯虞斎氡磉_式的內(nèi)容,例如為變量Var1賦值0,表達式為:Var1:=0。定義好變量之后,就可以在表達式編輯器中選擇并使用該變量了:“字段別名”頁“字段別名”頁主要用來

38、屏蔽一些數(shù)據(jù)集和字段,在“數(shù)據(jù)字段”窗口中只顯示選擇了用于當前報表的數(shù)據(jù)集的可用字段,在此為數(shù)據(jù)集和字段建立別名。· 當右側(cè)列表為空時,表示使用所有數(shù)據(jù)集和字段;· 需要只顯示部分數(shù)據(jù)集和字段時,可以通過鼠標雙擊左側(cè)列表中的數(shù)據(jù)集,或者使用“>”按鈕將這些數(shù)據(jù)集加入右側(cè)列表;· 需要屏蔽某些字段時,在右側(cè)列表選中字段,選中下方的“從列表中排除字段”復(fù)選框,字段圖標將以灰色顯示,此時在“數(shù)據(jù)字段窗口中”該字段將不會顯示。· 在“別名”文本框中可以為數(shù)據(jù)集或字段指定別名,在“數(shù)據(jù)字段”窗口中將以指定的別名來標識該數(shù)據(jù)集或字段。 Band數(shù)據(jù)源”頁“Ba

39、nd數(shù)據(jù)源”頁主要用來為Band數(shù)據(jù)源指定別名和屏蔽一些當前報表不用的Band數(shù)據(jù)源。當右側(cè)列表為空時表示使用所有Band數(shù)據(jù)源,可以將當前報表使用的Band數(shù)據(jù)源添加到右側(cè)列表中,并為其指定別名,這樣在為Band選定數(shù)據(jù)源時就只按別名顯示選中的項目,而其他Band數(shù)據(jù)源都被屏蔽不顯示。合并數(shù)據(jù)字典合并數(shù)據(jù)字典也就是向當前數(shù)據(jù)字典添加其它的數(shù)據(jù)字典定義文件,數(shù)據(jù)字典文件必須是用如意報表(Ming-WebReport)工具導(dǎo)出的數(shù)據(jù)字典文件。新的數(shù)據(jù)字典定義和現(xiàn)有數(shù)據(jù)字典進行合并時會根據(jù)變量分類目錄進行相應(yīng)合并。· 菜單項【報表à數(shù)據(jù)字典à合并數(shù)據(jù)字典】導(dǎo)入數(shù)據(jù)字典

40、導(dǎo)入數(shù)據(jù)字典也就是先清空當前定義的數(shù)據(jù)字典,代替為導(dǎo)入的數(shù)據(jù)字典定義文件,數(shù)據(jù)字典文件必須是用如意報表(Ming-WebReport)工具導(dǎo)出的數(shù)據(jù)字典文件。· 菜單項【報表à數(shù)據(jù)字典à導(dǎo)入數(shù)據(jù)字典】導(dǎo)出數(shù)據(jù)字典導(dǎo)出數(shù)據(jù)字典也就是把當前定義的數(shù)據(jù)字典導(dǎo)出到一個數(shù)據(jù)字典文件,生成的數(shù)據(jù)字典文件還可以被如意報表(Ming-WebReport)工具設(shè)計的其它的報表導(dǎo)入或合并。導(dǎo)出的數(shù)據(jù)字典文件是以.MRD為擴展名的二進制文件。· 菜單項【報表à數(shù)據(jù)字典à導(dǎo)出數(shù)據(jù)字典】導(dǎo)入報表模板向當前報表項目導(dǎo)入報表模板。一個報表模板可以被兼容版本的其他如

41、意報表(Ming-WebReport)報表項目重用,還可以對部署好的報表進行回收調(diào)試。觸發(fā)導(dǎo)入報表模板的操作后,會彈處一個選擇報表模板的窗口,選擇報表模板時可以同時選擇多個報表模板進行導(dǎo)入。· 菜單項【文件à導(dǎo)入à報表模板】· 【在報表節(jié)點或報表對象節(jié)點按右鍵快捷菜單à導(dǎo)入報表模板】導(dǎo)出數(shù)據(jù)模板從當前報表項目中將報表對象導(dǎo)出成獨立的報表模板文件,導(dǎo)出的報表模板可以被其它如意報表(Ming-WebReport)項目導(dǎo)入重用,進行報表部署時必須將報表對象導(dǎo)出成報表模板文件。可以選擇一個報表文件夾節(jié)點進行導(dǎo)出,該操作將把本節(jié)點包含的所有報表對象導(dǎo)出倒

42、磁盤上,而且導(dǎo)出的報表文件的目錄結(jié)構(gòu)保持項目樹中的層次結(jié)構(gòu)。· 菜單項【文件à導(dǎo)入à報表模板】· 【在報表文件夾節(jié)點或報表對象節(jié)點按右鍵快捷菜單à導(dǎo)出報表模板】· 其它【選中報表項目樹中的某個文件夾節(jié)點之后可以在設(shè)計器的右側(cè)當前層的報表文件夾和報表模板列表中選擇要導(dǎo)出的模板】報表遠程上傳將制作完成的報表模板上傳到遠程的目標服務(wù)器上,實現(xiàn)直接的動態(tài)部署報表模板。目標服務(wù)器可以是局域網(wǎng)上的服務(wù)器或本機的指定文件系統(tǒng)路徑,也可以是Internet廣域網(wǎng)上的目標服務(wù)器。向局域網(wǎng)上的服務(wù)器上傳報表模板采用共享文件夾的方式;報表遠程上傳采用FTP

43、文件傳輸協(xié)議實現(xiàn)。要實現(xiàn)上傳操作首先需要對上傳參數(shù)進行設(shè)置:菜單項【工具à遠程設(shè)置】圖遠程設(shè)置各項屬性參數(shù)設(shè)置如下:l l         無:缺省選項,表示不應(yīng)用遠程上傳報表的功能;l l         本地/局域網(wǎng):選擇本機或局域網(wǎng)上其他計算機共享的發(fā)布報表模板的文件系統(tǒng)路徑;l l         FTP:¨ ¨

44、0;        遠程主機:設(shè)置遠程服務(wù)器的域名或IP地址;¨ ¨         端口:設(shè)置遠程FTP服務(wù)器的FTP協(xié)議端口;¨ ¨         用戶名和密碼:設(shè)置FTP用戶的登錄用戶名和密碼;¨ ¨         匿名

45、登錄:指定是否采用匿名登錄,如果選中該選項則“用戶名”參數(shù)自動變成anonymous,并且只讀,“密碼”參數(shù)清空,只讀;¨ ¨         初始目錄:參數(shù)設(shè)定報表模板上傳到服務(wù)器時的根目錄,設(shè)置的目錄在遠程服務(wù)器的磁盤上是相對于遠程服務(wù)器的FTP發(fā)布目錄的;¨ ¨         使用代理服務(wù)啟:如果設(shè)計報表的客戶登錄遠程服務(wù)器需要通過代理服務(wù)器,則需要選中該選項,設(shè)置代理服務(wù)器參數(shù),下面的代

46、理服務(wù)器參數(shù)缺省為灰色,不可寫,只有選中了本選項才可以進行代理服務(wù)器參數(shù)設(shè)置;¨ ¨         代理服務(wù)器:指定代理服務(wù)器的IP地址或別名;¨ ¨         代理端口:指定代理服務(wù)器的端口號。遠程報表上傳操作:報表設(shè)計客戶端與遠程服務(wù)器成功建立連接之后就可以進行報表的遠程上傳操作了(如果遠程連接沒有建立則上傳功能無效),在項目樹的報表文件夾節(jié)點或報表對象節(jié)點按右鍵,彈出快捷菜單,選擇“

47、上傳”立即開始上傳選中的報表文件夾(連同文件夾下面的所有報表對象)或選中的報表對象。注意:報表對象或報表文件夾上傳到服務(wù)器端時將保持項目樹中自“報表”節(jié)點開始的完整的目錄層結(jié)構(gòu),上傳到服務(wù)器端后將自動從“遠程設(shè)置”中設(shè)置的根目錄開始檢查遠程服務(wù)器的文件系統(tǒng)目錄結(jié)構(gòu),如果存在本目錄層結(jié)構(gòu),則根據(jù)對應(yīng)的目錄結(jié)構(gòu)上傳,如果不存在本目錄層結(jié)構(gòu)則從根目錄開始自動創(chuàng)建目錄層結(jié)構(gòu),然后上傳。自動生成代碼應(yīng)用V2.5以前版本的如意報表工具,用戶需要手工開發(fā)部署報表模版的網(wǎng)頁程序,當然用戶也可以自行開發(fā)報表模版自動調(diào)配系統(tǒng)以避免每個模版文件都對應(yīng)獨立的網(wǎng)頁程序文件。如果客戶沒有自行開發(fā)報表模版自動調(diào)配系統(tǒng),則需

48、要為每個報表模版開發(fā)對應(yīng)的網(wǎng)頁程序,所以為了幫助客戶快速部署報表模版文件,如意報表的報表設(shè)計器特提供了自動生成網(wǎng)頁程序代碼文件的功能,也就是說客戶根據(jù)自己的Web應(yīng)用程序環(huán)境,開發(fā)好網(wǎng)頁程序的模版文件之后,設(shè)計器就可以自動根據(jù)指定的網(wǎng)頁程序模版文件來生成每個報表模版所對應(yīng)的網(wǎng)頁程序文件。         在報表設(shè)計器中實現(xiàn)自動生成代碼文件的操作主要包括兩個操作步驟:首先根據(jù)WEB應(yīng)用程序環(huán)境編寫代碼文件的模版文件,即擴展名為MCT的文件,并拷貝MCT文件到當前報表設(shè)計器程序所在目錄的CodeTemplets文件夾中

49、;然后就可以在報表設(shè)計器中進行代碼文件的生成操作了。    編寫代碼文件的模版文件:     代碼文件的模版文件采用標準的XML文件格式,模版文件必須結(jié)合當前WEB應(yīng)用程序的開發(fā)架構(gòu)和運行環(huán)境環(huán)境來編寫,必須保證根據(jù)此模版文件生成的網(wǎng)頁代碼文件在當前的Web應(yīng)用程序中是可以正確運行的;另外模版文件的編寫方法與如意報表工具的版本無關(guān),也就是說,ASP或者JSP代碼文件的模版文件的編寫方式都是一樣的。下面舉例說明ASP代碼文件的生成過程:l        根據(jù)

50、當前WEB應(yīng)用程序環(huán)境確定正確的代碼文件的程序代碼:這一步就是定在當前WEB應(yīng)用程序的環(huán)境下,手工編寫能夠正確顯示報表模版的網(wǎng)頁程序,然后根據(jù)這個網(wǎng)頁程序來確定代碼文件的模版文件的格式。假設(shè)手工編寫的能夠正確運行的代碼文件的程序如下:<%   set conn = Server.CreateObject("ADODB.Connection")   conn.Open Application("Connection_String")   strSQL = "select top 1

51、0 * from tSALE_OUT"   set rsMain = Server.CreateObject("ADODB.RecordSet")   rsMain.Open strSQL, conn,1,1   strSQL = "select * from tSALE_OUT_ITEM"   set rsSub = Server.CreateObject("ADODB.RecordSet")   rsSub.Open st

52、rSQL, conn,1,1   set Engine = Server.CreateObject("MREngine.Engine")   Engine.SetRootPath Application("RootPath")   Engine.AddMRDataSet "tSALE_OUT",rsMain   Engine.AddMRDataSet "tSALE_OUT_ITEM",rsSub   Engine.A

53、ddRelation "tSALE_OUT","tSALE_OUT_ITEM","SALE_OUT_ID=SALE_OUT_ID"    Engine.AddReport "Basic/subReport"   Engine.Bind   conn.Close%><HTML><HEAD><TITLE>主從報表示例</TITLE><META NAME="Author" CONTE

54、NT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><STYLE TYPE="TEXT/CSS">body         font-family: "宋體,Arial" font-size: 10.2pt;  

55、0;      background-color:'#FFFFFF'             margin-left: 0;         margin-top: 0;</style></HEAD><BODY  style="margin:0 "><div id=pri

56、ntBtn align=center style="display:none"><input type="button" name="ptBtn" value="打印" onclick="MyViewer.print(true);"></div><!- #include file="ShowType.inc" -><table height="100%" width="100%" bord

57、er=0 cellpadding=0 cellspacing=0 >  <tr height="100%">         <td valign="top">        <%=Engine.CreateViewerEx("Id=MyViewer;Width=100%;Height="&viewerHeight&

58、"Simple="&simple)%>          </td>  </tr></table> </BODY></HTML>l        根據(jù)該程序文件開發(fā)代碼文件的模版文件代碼如下:<?xml version="1.0" encoding="GBK"?><ming_c

59、t:CodeTemplete xmlns:ming_ct="uuid:274573D5-C4F6-49E6-AC06-F8F0AED58434" version="2.5"><ming_ct:meta name="Copyright">(2005)Ming Cybertech Co., Ltd.</ming_ct:meta><ming_ct:meta name="Description">ASP Code Template</ming_ct:meta><m

60、ing_ct:meta name="StringContactor">" &amp;_"</ming_ct:meta><ming_ct:content><%   set conn = Server.CreateObject("ADODB.Connection")   conn.Open Application("Connection_String")   set Engine = Server.CreateObj

61、ect("MREngine.Engine")   Engine.SetRootPath Application("RootPath")<ming_ct:repeat kind="DataSets">   strSQL = "<ming_ct:tagDATASET_SQL/>"   set rs<ming_ct:tagDATASET_INDEX/> = Server.CreateObject("ADODB.Rec

62、ordSet")   rs<ming_ct:tagDATASET_INDEX/>.Open strSQL, conn,1,1   Engine.AddMRDataSet "<ming_ct:tagDATASET_NAME/>", rs<ming_ct:tagDATASET_INDEX/></ming_ct:repeat><ming_ct:repeat kind="Relations">   Engine.AddRelation

63、 "<ming_ct:tagRELATION_MASTER/>", "<ming_ct:tagRELATION_DETAIL/>", "<ming_ct:tagRELATION_STR/>" </ming_ct:repeat>   Engine.AddReport "<ming_ct:tagMASTER_REPORT/>"<ming_ct:repeat kind="LinkReports"> &

64、#160; Engine.AddLinkReport "<ming_ct:tagLINK_REPORT/>"</ming_ct:repeat>   Engine.Bind     'Engine.Bind "Basic/SimpleList"   conn.Close%><HTML><HEAD><TITLE>主從報表示例</TITLE><META NAME="Author"

65、CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""><STYLE TYPE="TEXT/CSS">body         font-family: "宋體,Arial" font-size: 10.2pt;  

66、;       background-color:'#FFFFFF'             margin-left: 0;         margin-top: 0;</style></HEAD><BODY  style="margin:0 "><div i

67、d=printBtn align=center style="display:none"><input type="button" name="ptBtn" value="打印" onclick="MyViewer.print(true);"></div><!- #include file="./ASP/ShowType.inc" -><table height="100%" width="100%

68、" border=0 cellpadding=0 cellspacing=0 >  <tr height="100%">         <td valign="top">        <%=Engine.CreateViewerEx("Id=<ming_ct:tagVIEWER_ID/>Width=<ming_

69、ct:tagVIEWER_WIDTH/>Height="&viewerHeight&"Simple="&simple)%>          </td>  </tr></table></BODY></HTML></ming_ct:content></ming_ct:CodeTemplete>以上代碼的詳細說明如下:a.  

70、60;    代碼模版文件頭部分:/XML文檔的標準規(guī)范<?xml version="1.0" encoding="GBK"?>/這一行代碼請照寫,一般無需改動<ming_ct:CodeTemplete xmlns:ming_ct="uuid:274573D5-C4F6-49E6-AC06-F8F0AED58434" version="2.5">/標注代碼模版文件的版權(quán)信息<ming_ct:meta name="Copyright">(2005)Ming Cybertech Co., Ltd.</ming_ct:meta>/標注當前代碼模版文件的一般的描述信息<ming_ct:meta name="Description&qu

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論