NC報(bào)表開發(fā)手冊_第1頁
NC報(bào)表開發(fā)手冊_第2頁
NC報(bào)表開發(fā)手冊_第3頁
NC報(bào)表開發(fā)手冊_第4頁
NC報(bào)表開發(fā)手冊_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、報(bào)表模式化開發(fā)手冊V1.0, for NC-V3)朱俊彬、賴宏偉、李媛媛NC-UAP第一章總體介紹 21. 開發(fā)概述 2.1.1 技術(shù)型報(bào)表與業(yè)務(wù)型報(bào)表 21.2 一般報(bào)表開發(fā)存在的問題 21.3模式化報(bào)表開發(fā)思路 22. 應(yīng)用模型 3.2.1數(shù)據(jù)模型與展現(xiàn)模型 32.2數(shù)據(jù)字典 42.3業(yè)務(wù)系統(tǒng)集成 5第二章低開發(fā)難度報(bào)表 61. 概述 6.2. 查詢類報(bào)表 8.2.1明細(xì)報(bào)表 82.2 匯總報(bào)表 172.3列結(jié)構(gòu)依賴于查詢條件的報(bào)表(動(dòng)態(tài)SQL) 233. 交叉類報(bào)表 列向拼接查詢型報(bào)表(復(fù)合查詢) 313.2列向分支統(tǒng)計(jì)型報(bào)表( CASE-WHEN ) 363.3 動(dòng)態(tài)行

2、列交叉型報(bào)表(旋轉(zhuǎn)交叉) 404. 投影類報(bào)表 單元格依賴于行列條件的報(bào)表(投影交叉) 454.2 半錄入半嵌入型報(bào)表(合并查詢) 515. 算法類報(bào)表 數(shù)據(jù)加工預(yù)備知識(shí) 555.2 非投影類占比報(bào)表(普通占比) 605.3 投影類占比報(bào)表(投影占比) 655.4程序送數(shù)型報(bào)表 696. 高級應(yīng)用 支持穿透的非投影交叉類報(bào)表(普通穿透) 736.2 支持穿透的投影交叉類報(bào)表(投影穿透) 796.3支持主從連動(dòng)的報(bào)表 846.4支持統(tǒng)計(jì)圖表的報(bào)表 88第三章高開發(fā)難度報(bào)表 921. 基于行業(yè)報(bào)表工具開發(fā)的報(bào)表 9.21.1 標(biāo)準(zhǔn)報(bào)表 921.2分塊填

3、充報(bào)表 1042. 基于CELL REPORT工具開發(fā)的報(bào)表1112.1 CELL REPORT 工具介紹 1112.2 CELL REPORT 報(bào)表 113附錄 1241模式一覽表 1.2.42 查詢引擎FAQ之參數(shù)篇125第一章 總體介紹1. 開發(fā)概述1.1 技術(shù)型報(bào)表與業(yè)務(wù)型報(bào)表我們將報(bào)表應(yīng)用劃分為兩種類型, 一類應(yīng)用的側(cè)重點(diǎn)在于出報(bào)表所蘊(yùn)涵的技術(shù), 開發(fā)者(程 序員或?qū)嵤┤藛T) 通常憑借一定的數(shù)據(jù)庫和編程知識(shí), 基于庫里的業(yè)務(wù)數(shù)據(jù), 做出符合用戶 需求的報(bào)表展現(xiàn)和輸出, 此類應(yīng)用稱為技術(shù)型報(bào)表; 另一類應(yīng)用則著眼于整個(gè)報(bào)表生命周期 中各環(huán)節(jié)的管理(包括出表、上報(bào)、審核、匯總、發(fā)布等流程

4、), 即把做報(bào)表的行為當(dāng)成一項(xiàng)業(yè)務(wù),對直接開發(fā)者的主要要求在于業(yè)務(wù)熟悉程度而非技術(shù),此類應(yīng)用稱為業(yè)務(wù)型報(bào)表。前者通常由專業(yè)程序員、 二次開發(fā)人員或技術(shù)型實(shí)施顧問承擔(dān)開發(fā)工作, 早期工具如報(bào)表模 板、自定義查詢等均面向此類應(yīng)用, IUFO 則是后者的代表性產(chǎn)品。本文檔作為集團(tuán)帄臺(tái) 技 術(shù)部對外發(fā)布的開發(fā)手冊,主要針對對象為技術(shù)型報(bào)表。1.2 一般報(bào)表開發(fā)存在的問題報(bào)表屬于 ERP 項(xiàng)目中的關(guān)鍵應(yīng)用,通常被用戶的高層領(lǐng)導(dǎo)用于企業(yè)業(yè)績評估、輔助決策或 對外發(fā)布。 據(jù)統(tǒng)計(jì), 在很多交付壓力較大的項(xiàng)目當(dāng)中, 報(bào)表開發(fā)占有相當(dāng)?shù)谋戎亍?就目前 開 發(fā)現(xiàn)狀而言,影響報(bào)表快速交付的主要問題有以下幾點(diǎn):1、報(bào)

5、表開發(fā)本身的復(fù)雜性高。 中國式報(bào)表由于政策以及長期人工填報(bào)的原因具有極強(qiáng)的個(gè) 性化特點(diǎn),根據(jù)業(yè)務(wù)邏輯進(jìn)行數(shù)據(jù)查詢、數(shù)據(jù)組織、表樣展現(xiàn)和界面處理的每個(gè)步驟都 耗費(fèi)了很高的開發(fā)代價(jià);2、報(bào) 表開發(fā)的復(fù)用性低。 開發(fā)人員投入巨大努力完成第一批報(bào)表后, 發(fā)現(xiàn)第二批報(bào)表依然 要從頭做起,或者另一名開發(fā)人員遇到類似于第一批報(bào)表的需求,無法借鑒(甚至根本 不知道)前人的開發(fā)成果;3、報(bào) 表開發(fā)對專業(yè)技能要求偏高。 很多二次開發(fā)人員雖然不是專門搞技術(shù)的, 但通常具有 定的開發(fā)基礎(chǔ),而目前的二次開發(fā)帄臺(tái)限制了他們發(fā)揮應(yīng)有的作用。1.3 模式化報(bào)表開發(fā)思路所謂模式化開發(fā), 包含兩方面的工作: 專職人員將有代表性的

6、應(yīng)用進(jìn)行歸納抽象, 提取出共 性的部分形成代碼框架和方案,并以手冊的形式對外發(fā)布;報(bào)表開發(fā)人員拿到項(xiàng)目需求后, 從手冊上找到匹配的模式, 通過編寫一些低技術(shù)含量的子類代碼或進(jìn)行一些機(jī)械性的工具操 作,就能夠快速地完成開發(fā)工作。 以往大部分的重復(fù)性勞動(dòng)已經(jīng)在模式的基類或者缺省實(shí)現(xiàn)中處理,當(dāng)開發(fā)人員需要體現(xiàn)個(gè)性化的時(shí)候,則可以通過自己對接口的特殊實(shí)現(xiàn)完成。隨著模式的逐步豐富, 開發(fā)人員開發(fā)各類模式報(bào)表的工作量都會(huì)明顯降低, 同時(shí)也實(shí)現(xiàn)了代 碼復(fù)用和知識(shí)共享, 另一方面, 由于開發(fā)者的工作趨于簡單和機(jī)械, 他們的角色就可以由低 專業(yè)技能人員所取代。 從這個(gè)角度上說, 模式化是解決上節(jié)所述三個(gè)問題從而

7、真正實(shí)現(xiàn)報(bào)表 快速開發(fā)的有效方案。本手冊介紹了兩大類 NC 報(bào)表開發(fā)模式, 一類是基于查詢引擎的低開發(fā)難度報(bào)表, 其編碼量 小,操作簡單, 適合于開發(fā)數(shù)據(jù)和格式比較規(guī)律的報(bào)表; 另一類是基于行業(yè)報(bào)表工具的高開 發(fā)難度報(bào)表,主要工作是編寫子類代碼,自由度高,適合于開發(fā)復(fù)雜報(bào)表。2. 應(yīng)用模型2.1 數(shù)據(jù)模型與展現(xiàn)模型一般來說,報(bào)表是由數(shù)據(jù)和格式組成的整體。報(bào)表的數(shù)據(jù)模型通常包含以下信息:1、數(shù)據(jù)結(jié)構(gòu);2、待定參數(shù)描述;3、取數(shù)規(guī)則描述;4、數(shù)據(jù)加工算法描述;5、多個(gè)數(shù)據(jù)集合之間的數(shù)據(jù)關(guān)聯(lián)描述;可作為數(shù)據(jù)載體的常用 NC 數(shù)據(jù)結(jié)構(gòu)包括:1、nc.vo.pub.CircularlyAccessibl

8、eValueObject 循環(huán)訪問 V O ,是由屬性和取值成對組成的集合,提供了根據(jù)屬性獲得 /設(shè)置值的方法,是單據(jù)和報(bào)表模板采用的主要結(jié)構(gòu);2、 nc.vo.pub.ValueObject普通VO,包含多個(gè)屬性及每個(gè)屬性的getter和setter方法,是 業(yè)務(wù)組主要數(shù)據(jù)結(jié)構(gòu)的父類;3、 com.borland.dx.dataset.StorageDataSet存儲(chǔ)數(shù)據(jù)集,由元數(shù)據(jù)和內(nèi)容數(shù)據(jù)兩部分組成,元數(shù)據(jù)( Column )描述了各列的信息,內(nèi)容數(shù)據(jù)描述了一個(gè)二維的數(shù)據(jù)集合,當(dāng)游標(biāo) 指向內(nèi)容數(shù)據(jù)的某行時(shí),可以獲得該行指定列的數(shù)據(jù),用于查詢引擎;4、nc.vo.pub.rs.Memory

9、ResultSet 內(nèi)存結(jié)果集,同樣由元數(shù)據(jù)和內(nèi)容數(shù)據(jù)組成,其中元 數(shù)據(jù)( MemoryResultSetMetaData )描述各列信息,內(nèi)容數(shù)據(jù)( ArrayList )描述了一個(gè)二 維數(shù)據(jù)集合,可以直接訪問其任何元素,目前被一些業(yè)務(wù)算法使用;5、Object , Vector, ArrayList 這些都是 JDK 的常用結(jié)構(gòu),均可存儲(chǔ)二維數(shù)據(jù)。報(bào)表的展現(xiàn)模型通常包含以下信息:1、控件(核心控件是表格)屬性和布局;2、控件顯示內(nèi)容與顯示規(guī)則(綁定數(shù)據(jù)、參數(shù)、行列格式、界面資源等) ;3、控 件連動(dòng)規(guī)則;4、數(shù)據(jù)處理規(guī)則(定位、排序、過濾、統(tǒng)計(jì)、公式、交叉、鉆取等) ;5、動(dòng) 態(tài)擴(kuò)展規(guī)則;

10、6、輸 入輸出控制(待定參數(shù)設(shè)置,打印,導(dǎo)出等)第4 頁2.2數(shù)據(jù)字典NC數(shù)據(jù)字典提供了統(tǒng)一的數(shù)據(jù)建模帄臺(tái),支持對各種數(shù)據(jù)庫對象進(jìn)行管理,維護(hù)這些物理對象的邏輯屬性,并向外系統(tǒng)提供訪問數(shù)據(jù)庫邏輯信息的接口。以查詢引擎為例,查詢對象 的定義是基于數(shù)據(jù)字典進(jìn)行的,而這份數(shù)據(jù)字典來自查詢對象所指定的數(shù)據(jù)源。由于多數(shù)報(bào)表的列與業(yè)務(wù)數(shù)據(jù)庫的字段存在某種對應(yīng)關(guān)系,因此數(shù)據(jù)字典的存在有助于提高查詢定義的直觀性和易用性。NC數(shù)據(jù)字典通常在安裝產(chǎn)品時(shí)候由系統(tǒng)生成,如果想自己為某些數(shù)據(jù)庫對象生成字典,可以采用數(shù)據(jù)字典管理界面提供的導(dǎo)入方法。導(dǎo)入方式包括三種(詳細(xì)操作可參見數(shù)據(jù)字典導(dǎo)入說明)1、解析PDM文件(xm

11、l格式);2、解析NC標(biāo)準(zhǔn)建庫腳本;3、提取數(shù)據(jù)庫元數(shù)據(jù);如果需要給非NC 數(shù)據(jù)庫(比如用戶采用的第三方數(shù)據(jù)庫)生成數(shù)據(jù)字典,可 以利用PowerDesigner提供的逆向工程功能將庫里的物理表生成PDM 文件,修改其中表和字段的 中文名稱,然后以xml文件格式存儲(chǔ),再使用上述第一種方法導(dǎo)入。2.3 業(yè)務(wù)系統(tǒng)集成對于直接使用查詢引擎開發(fā)出的報(bào)表, 可以使用以下兩種方式掛接到業(yè)務(wù)組的功能節(jié)點(diǎn)。 烈建議把準(zhǔn)備掛接節(jié)點(diǎn)的查詢對象和格式對象的編碼設(shè)為與業(yè)務(wù)系統(tǒng)相關(guān)的有意義字符串, 以避免不同業(yè)務(wù)系統(tǒng)預(yù)置對象互相覆蓋的危險(xiǎn)性。報(bào)表管理節(jié)點(diǎn)掛接法:1、注 冊功能節(jié)點(diǎn),類名為 nc.ui.pub.query

12、model.QueryMainUI_N ;2、下掛一個(gè)參數(shù),參數(shù)名為folderId ,參數(shù)值為客戶化下查詢引擎管理中相關(guān)報(bào)表目錄的ID (可從數(shù)據(jù)庫表 pub_formatmodeldef的id字段查出)。獨(dú)立報(bào)表節(jié)點(diǎn)掛接法:1、注 冊功能節(jié)點(diǎn),類名為: nc.ui.pub.querymodel.QueryNodeUI :2、 下掛兩個(gè)參數(shù):pkQryNode 界面模型對應(yīng)的編碼(可從查詢引擎管理界面讀?。?dsName查詢定義所在數(shù)據(jù)源。對于高開發(fā)難度模式的報(bào)表,則與普通功能節(jié)點(diǎn)一樣掛接 ToftPanel 的子類即可。第6 頁第二章低開發(fā)難度報(bào)表1. 概述本手冊列舉的低開發(fā)難度報(bào)表模式

13、統(tǒng)一由查詢引擎(V3版本)提供解決方案。查詢引擎是一個(gè)面向高級實(shí)施人員和普通開發(fā)人員的查詢建模產(chǎn)品,延續(xù)并完善了自定義查詢體系的技 術(shù)路線,在全面支持復(fù)雜查詢的設(shè)計(jì)和個(gè)性化的報(bào)表展現(xiàn)的同時(shí),大幅度降低了報(bào)表開發(fā)人員的編碼工作量和專業(yè)技能要求。我們再來看一下查詢引擎的適用性和不適用性。查詢引擎長期作為一個(gè)查詢工具發(fā)展,因此尤其適用于與數(shù)據(jù)庫查詢分析或數(shù)據(jù)挖掘關(guān)系密切的報(bào)表開發(fā),同時(shí)也支持程序員調(diào)用服務(wù)器端代碼對數(shù)據(jù)進(jìn)行業(yè)務(wù)處理。 另一方面,自定義查詢體系與模板體系存在一個(gè)很大的不同, 模板體系在發(fā)布產(chǎn)品之前已經(jīng)由程序員錄入了大量初始化數(shù)據(jù),因此不同用戶能夠分配到不同的查詢模板、報(bào)表模板和打印模板

14、,而自定義查詢體系是完全自定義的實(shí)時(shí)開發(fā),沒有模板的預(yù)制數(shù)據(jù),因此在一個(gè)時(shí)刻只支持一種參數(shù)控制樣式、一種報(bào)表界面樣式和一種打印樣式(或直接打?。?,但這些樣式均可在設(shè)計(jì)態(tài)修改。在展現(xiàn)上,由于查詢引擎使用的是 SWING的表 格控件,因此對一些 EXCEL風(fēng)格的需求支持不夠,這個(gè)薄弱環(huán)節(jié)將在 V31得到加強(qiáng)???體來說,V3版本的查詢引擎暫不適用于以下兩類報(bào)表開發(fā):1、有多模板分配需求的報(bào)表,或?qū)Υ蛴∮懈叨纫蟮膱?bào)表;2、存在表體合并單元格的報(bào)表。設(shè)計(jì)如下:查詢引擎的查詢模型(數(shù)據(jù)模型)第 7 頁第 # 頁查詢模型流程如下所示(設(shè)計(jì)態(tài) /運(yùn)行態(tài)):第 # 頁界面模型(展現(xiàn)模型)設(shè)計(jì)如下:查訶引用連

15、動(dòng)規(guī)則(主從)數(shù)據(jù)頂處理(小計(jì)式)界面模型設(shè)計(jì)態(tài)抱件連動(dòng)基于頸據(jù)集的數(shù)據(jù)處理基于表格的數(shù)據(jù)處理報(bào)表輸出界而模型運(yùn)行瀏覽)態(tài)第 8 頁界面模型流程如下所示:本章共介紹了五大類報(bào)表的十五種開發(fā)模式。盡管這些模式之間存在相當(dāng)差異,但是針對以 前我們發(fā)現(xiàn)的一些用例雜亂導(dǎo)致的培訓(xùn)效果問題,本章的所有范例集中面向兩個(gè)業(yè)務(wù)應(yīng)用(單位費(fèi)用統(tǒng)計(jì)和部門人事統(tǒng)計(jì)),即用不同方案解決相似問題,以便于讀者從中領(lǐng)會(huì)和比 較這些模式的原理、特點(diǎn)和適用性。希望這種做法不會(huì)給讀者造成一個(gè)誤導(dǎo):查詢引擎只能解決這兩類報(bào)表的應(yīng)用。2. 查詢類報(bào)表查詢類報(bào)表指通過一個(gè)或多個(gè) SQL查詢結(jié)果形成的二維數(shù)據(jù)展現(xiàn)出來的報(bào)表,由于SQL的語

16、法特點(diǎn),此類報(bào)表通常具有固定的列結(jié)構(gòu)和動(dòng)態(tài)的行結(jié)構(gòu),但模式2.3也探討了一種根據(jù)參數(shù)動(dòng)態(tài)改變查詢列結(jié)構(gòu)的方案。2.1明細(xì)報(bào)表【概述】 明細(xì)報(bào)表用于展現(xiàn)最基本維度上的數(shù)據(jù),即最細(xì)粒度的數(shù)據(jù)。通常明細(xì)總是相對于匯總而言的,如果我們把某商品每個(gè)月的總銷售額列表視為匯總數(shù)據(jù),那么該商品每天的詳細(xì)銷售情況就可視為明細(xì)數(shù)據(jù);如果我們把某部門當(dāng)年的總薪資情況做成匯總表,那么該部門每位員工當(dāng)年的薪資情況就可以做成明細(xì)表。 查詢類報(bào)表中的明細(xì)表通常是指一些不含聚合函數(shù)的 SQL語句直接能夠查詢出的數(shù)據(jù)形成的報(bào)表?!緫?yīng)用場景】第 10 頁開發(fā)人員需要通過多表聯(lián)查 SQL 或者復(fù)合查詢獲得表體數(shù)據(jù),同時(shí)為報(bào)表展現(xiàn)提

17、供待定條 件設(shè)置、 欄位設(shè)置、 排序、 過濾、 定位、 小計(jì)合計(jì)及輸出等功能。 當(dāng)明細(xì)表與匯總表一起 出 現(xiàn)時(shí),用戶通常還會(huì)有從匯總數(shù)據(jù)聯(lián)查明細(xì)數(shù)據(jù)的需求(又稱穿透或鉆?。?, 此類應(yīng)用將 在 模式 6.1 中介紹。【適用性和不適用性】適用于:明細(xì)數(shù)據(jù)的取數(shù)規(guī)則可用 SQL 描述;不適用于:通過行列條件統(tǒng)計(jì)單元取值的明細(xì)表。此類報(bào)表應(yīng)遵循模式 4.1 解決; 通過程序算法構(gòu)造明細(xì)數(shù)據(jù)的報(bào)表。此類報(bào)表應(yīng)遵循算法類報(bào)表模式解決;【解決方案】取數(shù)由向?qū)?SQL 設(shè)計(jì)描述,查詢條件由參數(shù)控制機(jī)制解決,欄目在格式設(shè)計(jì)態(tài)設(shè)定,排 序、過濾、定位、小計(jì)合計(jì)、輸出等功能均內(nèi)置于報(bào)表瀏覽態(tài)?!鹃_發(fā)步驟】第一步

18、:在查詢引擎管理中建立查詢對象Q1,做向?qū)絊QL設(shè)計(jì)(通常不含聚合函數(shù) sum、avg、count 、max 、min )。對于一個(gè) SQL 無法描述的查詢,比如指定單位在指定期間內(nèi)不同 科目的發(fā)生額,可以利用復(fù)合查詢(基于查詢對象的查詢,可參考模式3.1)進(jìn)行描述。 Q1中待定的信息由參數(shù)定義描述, 普通參數(shù)可以在向?qū)皆O(shè)計(jì)的篩選條件處引用, 替換型參數(shù) 可以在向?qū)胶褪止な皆O(shè)計(jì)的任意位置引用(參見 FAQ 文檔); 第二步: 創(chuàng)建格式對象 F1 ,引用查詢對象 Q1 并嵌入表格, 做相關(guān)的欄位、 列格式和列表頭 設(shè) 計(jì)。表頭表尾可放置綁定參數(shù)的控件; 第三步:瀏覽 F1 (或掛功能節(jié)點(diǎn))

19、, 設(shè)置參數(shù),檢查數(shù)據(jù)與格式是否正確; 【FAQ 】1、如何充分發(fā)揮查詢模型中參數(shù)的功能? 答:參 見附錄提供的查詢引擎 FAQ 之參數(shù)篇。2、格式設(shè)計(jì)中的 16 種控件各有何種用途? 答:表格、圖表是核心控件,用于綁定數(shù)據(jù)集; 面板、拆分窗格(分割面板) 、 多頁簽作為 界面容器;標(biāo)簽、文本框、下拉框(組合框) 、 參 照、文本域、復(fù)選框、單選框是表頭表尾 控件, 需要放在容器上面, 用于綁定參數(shù); 下拉框、 列表綁定枚舉型參數(shù), 參照綁定參照型 參數(shù);主子表是已經(jīng)不推薦使用的連動(dòng)展現(xiàn)控件;按 鈕、樹暫無實(shí)際用處。3、如何控制報(bào)表的輸出格式? 答:打印輸出利用格式設(shè)計(jì)中的打印設(shè)置功能控制,E

20、XCEL 輸出由界面表格的樣式控制。【范例】 單位費(fèi)用明細(xì)表各單位在指定期間范圍內(nèi)的費(fèi)用明細(xì)情況。 報(bào)表中要求包括公司、期間、 制單日期、科目、分錄摘要、發(fā)生額等信息,用戶可以根據(jù)年度和期間范圍進(jìn)行查詢。第9 頁公司期間制單日期科目摘要借發(fā)生額貸發(fā)生額1、查詢引擎管理主界面創(chuàng)建查詢對象,編碼為gldetail,名稱為費(fèi)用明細(xì);2、進(jìn)行參數(shù)定義,增加三個(gè)字符型參數(shù):年,起始期間,終止期間;3、進(jìn)行SQL向?qū)гO(shè)計(jì):從數(shù)據(jù)字典添加憑證表(gl_voucher)憑證分錄(gl_detail)科目表 (bd_accsubj)和公司目錄(bd_corp)指定表間連接關(guān)系、查詢字段、篩選條件(先定義確定條件

21、)和排序字段;第 10 頁第 11 頁4、在篩選條件頁簽增加待定條件,在右操作數(shù)框中按F12引用參數(shù);第 12 頁第 # 頁5、創(chuàng)建格式對象,編碼為gldetail,名稱為"費(fèi)用明細(xì)表”;第 # 頁6、引用查詢“費(fèi)用明細(xì)”;7、進(jìn)行格式設(shè)計(jì):添加表格和面板控件,表格??坑谥胁浚p擊控件設(shè)置屬性,綁定數(shù)據(jù) 集費(fèi)用明細(xì),面板??坑诒辈?作為表頭容器),采用流式布局(FlowLayout )在面板上放 個(gè)文本框控件,分別綁定費(fèi)用明細(xì)的三個(gè)參數(shù);旨屬性編輯鑲8、(可選)定義一種列格式,用于顯示兩位小數(shù), 在表格屬性框的列格式分欄中由兩個(gè)金額 列引用此列格式;'自定義列搭式引用1列名列

22、1顯不名列格式是否顯示AVNITHAHE公司名稱缺省格式0PERIOD會(huì)計(jì)期司峽省格式0VFKEFAKEDDATE砂日則厭省格式回SUBJUAME科目名禰址省格式EXFUNATION摘雯內(nèi)容岐省格式mcjoiBn.本幣惜發(fā)生霰二位小數(shù)回LOCALCREDI.本幣貸發(fā)生輙二位小數(shù)上移職消9、瀏覽費(fèi)用明細(xì)表(先設(shè)置參數(shù))第 17 頁2.2 匯總報(bào)表【概述】 匯總數(shù)據(jù)通常與明細(xì)數(shù)據(jù)相對, 是指在明細(xì)數(shù)據(jù)基礎(chǔ)上指定若干個(gè)有分類意義的字符型列進(jìn)行分組, 并對另外若干個(gè)有統(tǒng)計(jì)意義的數(shù)值型列進(jìn)行求和 (或求帄均、 最值、計(jì)數(shù)等) 獲得 的數(shù)據(jù)。展現(xiàn)匯總數(shù)據(jù)的報(bào)表稱為匯總報(bào)表。【應(yīng)用場景】 我們再細(xì)分為兩種應(yīng)

23、用:1靜態(tài)匯總設(shè)置: 查詢數(shù)據(jù)的 SQL 中指定了分組列和匯總列,此設(shè)置在報(bào)表瀏覽狀態(tài)不再改變。要求提 供待定條件設(shè)置、欄位設(shè)置、排序、過濾、定位、小計(jì)合計(jì)及輸出等功能。2 動(dòng) 態(tài)匯總設(shè)置: 事先對數(shù)據(jù)設(shè)定某種缺省的匯總設(shè)置, 此設(shè)置在瀏覽態(tài)可做更改, 并重新計(jì) 算匯總數(shù)據(jù)。 同時(shí)具備上述功能需求?!具m用性和不適用性】適用于: 匯總數(shù)據(jù)的取數(shù)規(guī)則可用 SQL 描述;不適用于: 通過行列條件統(tǒng)計(jì)單元取值的匯總表。此類報(bào)表應(yīng)遵循模式 4.1 解決; 通過程序算法構(gòu)造匯總數(shù)據(jù)的報(bào)表。此類報(bào)表應(yīng)遵循算法類報(bào)表模式解決;【解決方案】取數(shù)由向?qū)?SQL 設(shè)計(jì)描述,查詢條件由參數(shù)控制機(jī)制解決,欄目在格式設(shè)

24、計(jì)態(tài)設(shè)定,動(dòng) 態(tài) 匯總由旋轉(zhuǎn)交叉機(jī)制解決,排序、過濾、定位、小計(jì)、輸出等功能均內(nèi)置于報(bào)表瀏覽態(tài)?!鹃_發(fā)步驟】1、靜態(tài)匯總設(shè)置第一步:在查詢引擎管理中建立查詢對象Q2,做向?qū)?SQL設(shè)計(jì),定義帶有聚合函數(shù)的 SQL 語句。單個(gè) SQL 無法描述的查詢利用復(fù)合查詢描述。在 Q2 的查詢模型中創(chuàng)建參 數(shù)和 引用參數(shù),用來描述待定的信息;第二步:創(chuàng)建格式對象F2,引用查詢對象Q2并嵌入表格,做相關(guān)的欄位、列格式和列表頭 設(shè) 計(jì)。表頭表尾可放置綁定參數(shù)的控件;第三步:瀏覽F2 (或掛功能節(jié)點(diǎn)),設(shè)置參數(shù),檢查數(shù)據(jù)與格式是否正確;2、動(dòng)態(tài)匯總設(shè)置 第一步: 同上述第一步 (但也可以不設(shè)置聚合函數(shù), 而是

25、在旋轉(zhuǎn)交叉設(shè)置中把 缺省的分組列 放到行列表中,把缺省的匯總列放到值列表中) ;第二步: 同上述第二步, 因交叉表的列結(jié)構(gòu)不能在設(shè)計(jì)態(tài)確定, 因此只能指定非匯總列的列 格式等信息;第 17 頁 第三步:同上述第三步,需要改變匯總設(shè)置的時(shí)候,利用表頭右鍵菜單的交叉功能把新的匯 總列移到交叉行列表,確定即可;(關(guān)于交叉的詳細(xì)說明參見下一節(jié))【FAQ】1、行SQL向?qū)гO(shè)計(jì)時(shí)如何指定group by字段? 答:無需指定,系統(tǒng)自動(dòng)把不含聚合函數(shù)的查詢字段作為group by字段。2、 行SQL手工設(shè)計(jì)時(shí)為何order by字段無效? 答:需要顯式指定排序字 段的排序方式(升序 asc,降序desc)【范

26、例】單位費(fèi)用匯總表一一各單位在指定期間范圍內(nèi)的費(fèi)用匯總情況。報(bào)表中要求包括公司、期間、 科目、匯總發(fā)生額等信息,用戶可以根據(jù)年度和期間范圍進(jìn)行查詢。公司期間科目借發(fā)生額貸發(fā)生額1、創(chuàng)建查詢對象,編碼為glsum,名稱為費(fèi)用匯總;2、進(jìn)行參數(shù)定義,增加三個(gè)字符型參數(shù):年,起始期間,終止期間;3、進(jìn)行SQL向?qū)гO(shè)計(jì):從數(shù)據(jù)字典添加憑證表、憑證分錄、科目表和公司目錄, 指定表間 連接關(guān)系、查詢字段、篩選條件和排序字段(除查詢字段外均與模式2.1的范例相同);磯查詢定義II遶算宇段 帀韶搭 毎序宇幻 效屬性|上一歩下一歩 I確定_取消字段表達(dá)式顯示£別名1b d_corp uni + rL:

27、=jTi e益司名稱uni t n:=imeaXJUZgj_vracher. peri od會(huì)計(jì)期間peri od3bd i.c«ubj subjntmt科目店稱sub j nun «刪除4sum (gl deta.il. l.«cald電bi tarn口unt)本幣借發(fā)生額loctldebi t amount5sum (gl_detail. localcredi tamount)本幣貸童生額localcredi t am ount<下移第 19 頁第 # 頁4、在篩選條件頁簽增加待定條件,在右操作數(shù)框中按F12引用參數(shù);第 # 頁第 # 頁5、創(chuàng)建格式對象

28、,編碼為 glsum,名稱為"費(fèi)用匯總表”。引用查詢"費(fèi)用匯總”; 6、進(jìn)行格式設(shè)計(jì):添加表格和面板控件,表格停靠于中部,綁定數(shù)據(jù)集費(fèi)用匯總,面板停 靠于北部(作為表頭容器),采用流式布局,在面板上放三個(gè)文本框控件,分別綁定費(fèi)用匯 總的三個(gè)參數(shù);7、瀏覽費(fèi)用匯總表(先設(shè)置參數(shù))返回頻捷業(yè)理劇新輸出餐用尢點(diǎn)表年JEZO04起始期間OL導(dǎo)止期間03茲司名稱會(huì)計(jì)期問科目名斬本幣皆發(fā)生輙本幣貸塩生顫無翟她司01按口親公司0030.00004SO.QOOO2無翟燧荀01圧江厭團(tuán)總部17523.42*5iiToe.oooo3無開甘韁司01長:遼毆靜瓷司130.00006.00004無埸

29、竝司01貨軾71.0000331.75005無陽竝司01定期存款0.0000!3.0000B無M螢司1東莞臣孑審噬廠145B8.65D0I2Z69B.S400T9無賜燧司01工行再款14655.5000144943.8145無開如司0廣州皓算申吐57<.7500139.0000無鶴她司01金融機(jī)構(gòu)借就1144&.580067.500010無鋸竝司01利J&費(fèi)用2275.83330 000011無甥竝司01內(nèi)部貨誠和息0.00001000.000012無餌竝司01上海結(jié)輕中嗆0.0000!3670.333313無餌燧司01外部貸款20000.00001D.OOOO14無賜騎

30、決司01外fin單建720.000011:3®D.OOOO1516無藹燧司02崔江集團(tuán)總部7ODG.O0D0I0.0000無雷她司Q2工疔存款Q. DQOOTOOO.OODO17闕4|竝司01本年利潤0.0000iei iM16射H分吩司01用1000.00001000.000019蘇州竝司01待攤燙用i.aooo1000.000020勞州竝司01固定資產(chǎn)34530. DOOOi29.S100探作罰:I2004-11-05 嗦 用友戟件8、當(dāng)前匯總設(shè)置是對公司、期間、科目分組統(tǒng)計(jì)發(fā)生額,如果需要?jiǎng)討B(tài)改變匯總依據(jù),則可以使用表頭右鍵菜單中的交叉功能。比如我們需要按照公司、期間重新匯總,

31、則把公司和期間移至交叉行列表,發(fā)生額移至交叉值列表,確定即可;會(huì)司書稱會(huì)計(jì)期間本幣僚生航本幣貸握蜩3通州分酋司01191S43.076216305.42392通州分酋司02372 柏.1078999941105.921599999943爲(wèi)州券盤司03杜55覘9.5292&無埸券號(hào)司01的槪.7379&Q290.73TS5無埸分公司血7000.0T0D0. 06蘇州分酋司01I5B0強(qiáng)空弱1036.43111蘇州分書司02004-4.0勺5D4B. 52004J®州期同01終止期同M零査簡引事X返回?cái)?shù)毎處理刷新榆出”漁作員:12004-11-D59、如果我們把科目移至交

32、叉行,期間移至交叉列,發(fā)生額移至交叉值,那么就實(shí)現(xiàn)了帶有數(shù)據(jù)旋轉(zhuǎn)的動(dòng)態(tài)匯總,即展現(xiàn)各科目在不同期間下匯總出來的發(fā)生額。關(guān)于旋轉(zhuǎn)交叉的詳細(xì)應(yīng)用可參看模式3.3;2.3列結(jié)構(gòu)依賴于查詢條件的報(bào)表(動(dòng)態(tài)SQL)【概述】 我們前邊提到過,SQL查詢的結(jié)果具有固定的列結(jié)構(gòu)和動(dòng)態(tài)的行結(jié)構(gòu),前兩個(gè)模式中雖然都引入了參數(shù)來控制動(dòng)態(tài)信息,但也只用于待定的篩選條件,即影響報(bào)表的行結(jié)構(gòu)。然而 有一類報(bào)表因查詢條件的不同而同時(shí)具有動(dòng)態(tài)的列結(jié)構(gòu)和行結(jié)構(gòu),比如在供應(yīng)鏈的一些單據(jù)查 詢報(bào)表中,如果用戶在查詢條件中勾選了聯(lián)查訂單或到貨單,那么報(bào)表會(huì)在靜態(tài)的列結(jié)構(gòu)(可能有10列)后面追加一些動(dòng)態(tài)的列或列分組,用于顯示聯(lián)查單據(jù)的

33、明細(xì)信息(此時(shí)報(bào)表可 能就變成了 20列)【應(yīng)用場景】開發(fā)人員需要把靜態(tài)的查詢 SQL同用戶對查詢條件設(shè)置的取值結(jié)合起來,構(gòu)造出幾種不同 的SQL,分別對應(yīng)于用戶希望看到的各種報(bào)表展現(xiàn)結(jié)果。這些SQL不僅僅存在篩選條件的差異,也可能存在查詢字段、 查詢表、分組字段、排序字段的差異。由于本模式采用的技術(shù) 方案需要通過代碼片段來描述查詢SQL究竟被如何矯正,因此本模式僅建議熟悉JAVA編程的報(bào)表開發(fā)人員使用?!具m用性和不適用性】適用于:查詢結(jié)果可由規(guī)范的靜態(tài) SQL 和動(dòng)態(tài)參數(shù)取值聯(lián)合決定; 不適用于:查詢必須通過難以解析的復(fù)雜手工 SQL 才能描述; 要求對動(dòng)態(tài)增加出來的列結(jié)構(gòu)進(jìn)行列格式設(shè)計(jì)的報(bào)

34、表 (因?yàn)檫@些列在設(shè)計(jì)態(tài)是未知的) 【解決方案】 取數(shù)由向?qū)?SQL 設(shè)計(jì)描述,查詢條件由參數(shù)控制機(jī)制解決,如何根據(jù)參數(shù)取值調(diào)整靜態(tài) SQL 則由 SQL 整理中的代碼片段來描述。SQL 整理中的常用數(shù)據(jù)結(jié)構(gòu)和接口方法如下所述:1、查詢基本定義類QueryBaseDef,所提供方法包括:FromTableVO getFromT ables(); / 獲得查詢字段定義SelectFldVO getSelectFlds(); /獲得查詢字段定義JoinCondVO getJoinConds(); /獲得連接條件定義WhereCondVO getWhereConds(); /獲得篩選條件定義Gro

35、upbyFldVO getGroupbyFlds(); /獲得分組字段定義OrderbyFldVO getOrderbyFlds(); / 獲得排序字段定義 以及相應(yīng) setter (設(shè)置)方法。2、查詢表定義類 FromTableVO ,所提供方法包括:String getTablecode(); / 獲得表物理名String getTabledisname(); / 獲得表顯示名String getTablealias(); / 獲得表別名void setTablecode(String); / 設(shè)置表物理名void setTabledisname(String); / 設(shè)置表顯示名voi

36、d setTablealias(String); / 設(shè)置表別名3、查詢字段定義類 SelectFldVO ,所提供方法包括:String getExpression(); / 獲得字段表達(dá)式String getFldname(); / 獲得字段顯示名String getFldalias(); / 獲得字段別名void setExpression (String); / 設(shè)置字段表達(dá)式void setFldname (String); / 設(shè)置字段顯示名void setFldalias (String); / 設(shè)置字段別名4、連接條件定義類 JoinCondVO ,所提供方法包括:String

37、 getExpression0(); / 獲得篩選條件表達(dá)式void setExpression0(String); / 設(shè)置篩選條件表達(dá)式5、篩選條件定義類 WhereCondVO,所提供方法包括:String getExpression0(); / 獲得篩選條件表達(dá)式void setExpression0(String); / 設(shè)置篩選條件表達(dá)式6、分 組字段定義類 GroupbyFldVO ,所提供方法包括:String getExpression(); / 獲得分組字段void setExpression(String); / 設(shè)置分組字段7、排 序字段定義類 OrderbyFldVO

38、 ,所提供方法包括:String getExpression(); / 獲得排序字段UFBoolean getAsc(); / 獲得升序標(biāo)志void setExpression(String); / 設(shè)置排序字段void setAsc(UFBoolean); / 設(shè)置升序標(biāo)志8、SQL 整理中獲得靜態(tài)查詢基本定義的方法為QueryBaseDef getQueryBaseDef();整理代碼的核心目標(biāo)就是根據(jù)參數(shù)取值來調(diào)整這個(gè) QueryBaseDef 的內(nèi)部結(jié)構(gòu)。【開發(fā)步驟】第一步:在查詢引擎管理中建立查詢對象Q3,做向?qū)絊QL設(shè)計(jì),描述靜態(tài)的SQL語句。在Q3的查詢模型中創(chuàng)建參數(shù)和引用參數(shù)

39、,用來描述待定的信息;第二步:在查詢模型中編寫 SQL 整理代碼,這段代碼采用純 JAVA 語法,目的是根據(jù)用 戶 的參數(shù)設(shè)置取值調(diào)整靜態(tài)的查詢基本定義 QueryBaseDef ,并把調(diào)整后的 QueryBaseDef 所生 成的 SQL 發(fā)到數(shù)據(jù)庫去執(zhí)行。整理界面的向?qū)鋬?nèi)置了常用的整理代碼向?qū)В梢?輔助開 發(fā)人員快速完成編碼;第三步:創(chuàng)建格式對象F3,引用查詢對象Q3并嵌入表格,做相關(guān)的欄位、列格式和列表頭 設(shè) 計(jì)。表頭表尾可放置綁定參數(shù)的控件;第四步:瀏覽F3 (或掛功能節(jié)點(diǎn)),設(shè)置參數(shù),檢查不同參數(shù)設(shè)置下數(shù)據(jù)與格式是否正確;【FAQ 】1、進(jìn) 行 SQL 整理對查詢對象有什么要求?

40、 答:該對象必須具有 SQL 設(shè)計(jì),且強(qiáng)烈建議使用向?qū)?SQL 設(shè)計(jì)。2、SQL 整理在何時(shí)何地進(jìn)行?答:SQL整理在服務(wù)器端進(jìn)行,整理行為發(fā)生在數(shù)據(jù)庫查詢之前, 多用于根據(jù)參數(shù)矯正 SQL o【范例】 單位費(fèi)用匯總或明細(xì)表各單位在指定期間范圍內(nèi)的費(fèi)用情況, 查詢匯總結(jié)果還是 明細(xì)結(jié)果由參數(shù)控制。如果用戶選擇匯總, 則報(bào)表中要求包括公司、 期間、科目、匯總發(fā)生額等信 息;如果用戶選擇明細(xì), 則報(bào)表中要求包括公司、 期間、 科目、 明細(xì)發(fā)生額和分錄摘要等信 息。用戶可以根據(jù)年度和期間范圍進(jìn)行查詢。1、創(chuàng) 建查詢對象,編碼為 glsumordetail ,名稱為費(fèi)用匯總或明細(xì);2、進(jìn)行參數(shù)定義,

41、 增加三個(gè)字符型參數(shù) (年, 起始期間, 終止期間) 和一個(gè)枚舉型參數(shù) (顯 示 類型,可選值為“匯總”和“明細(xì)” ;)顯亦名數(shù)據(jù)類型默認(rèn)值year年度2004bejginper i od起貽期間字符 1aiidperi o d終止期間03show type噩示方式宇符校舉匯駆睚田匯總a増行刪行確定取消第 26 頁第 # 頁3、進(jìn)行SQL向?qū)гO(shè)計(jì),內(nèi)容與模式22的范例完全相同(我們在下面列出查詢字段的界面, 主要是方便讀者把字段表達(dá)式與 SQL整理中的代碼處理結(jié)合起來理解,因?yàn)檎泶a有很 強(qiáng)的針對性);4、在篩選條件頁簽增加待定條件,內(nèi)容與模式2.2的范例完全相同;5、進(jìn)行SQL整理設(shè)計(jì)一一

42、這段整理代碼的思路是:首先獲得用戶設(shè)置的顯示類型是“匯總”還是“明細(xì)”,如果是后者,則繼續(xù)獲得靜態(tài)查詢定義的查詢字段數(shù)組(SelectFldVO)找出其中帶有匯總函數(shù)的字段表達(dá)式,將匯總函數(shù)以及分組字段去掉,然后再增加一個(gè)新的查詢字段,對應(yīng)憑證分錄表的摘要信息。瞬£QL整理代碼這段代碼中一部分為左側(cè)的代碼向?qū)渖桑溆嗖糠謩t為直接手工編寫。 比如第一行代碼就是由通用向?qū)е械摹矮@得參數(shù)值”生成:而陰影部分(增加分錄字段的代碼片段)則由SQL整理向?qū)е械摹白芳硬樵冏侄巍鄙?爭代科向?qū)⒅聟?shù)提示參數(shù)值臨時(shí)變量字段表達(dá)式gL_deti.i l. txpl anat i on字段顯示名分

43、錄摘要字段別名explanati on確定取消6、創(chuàng)建格式對象,編碼為 glsumordetail,名稱為"費(fèi)用匯總或明細(xì)表”。引用查詢"費(fèi)用匯 總或明細(xì)”;7、進(jìn)行格式設(shè)計(jì):添加表格和面板控件,表格停靠于中部,綁定數(shù)據(jù)集費(fèi)用明細(xì)或匯總, 面板停靠于北部,采用流式布局,在面板上放三個(gè)文本框控件,分別綁定三個(gè)字符型參數(shù), 再放置一個(gè)下拉框控件,綁定枚舉型參數(shù)(顯示類型) ;8、瀏覽報(bào)表(先設(shè)置參數(shù)“顯示方式”的取值為“匯總”)第 29 頁"費(fèi)用匯總戒明鈿顯巫名操作符年度2004起始期間01謔止期間03顯示方式匯恵H匸總1確定取消9、再設(shè)置參數(shù)“顯示方式”的取值為“明

44、細(xì)”然后瀏覽報(bào)表,或者直接在瀏覽態(tài)切換表頭 的下拉框控件為“明細(xì)”選項(xiàng);3. 交叉類報(bào)表數(shù)據(jù)庫當(dāng)中的表往往是象下面這樣存儲(chǔ)的:姓名月份銷售業(yè)績張三12000張三月5000李四月3000李四月4000月但用戶要求的報(bào)表往往是象下面這樣的:姓名123張三2月)0月5月)0李四30004000類似這樣,把原始數(shù)據(jù)中一列(或幾列,通常有分組意義)數(shù)據(jù)的不同取值維持在表的左側(cè) 不動(dòng)(比如上表中的姓名),把另外一列(或幾列,通常有分類意義)數(shù)據(jù)的不同取值旋轉(zhuǎn) 到行的方向成為列標(biāo)題(比如上表中的月份),再把另外一列(或幾列,通常有統(tǒng)計(jì)意義)數(shù)據(jù)對應(yīng)匯總到旋轉(zhuǎn)出來的列標(biāo)題下面(比如上表中的業(yè)績),就形成了交叉

45、表。在上述過程中,我們根據(jù)交叉規(guī)則把原始數(shù)據(jù)中的列分成了三種,第一種稱為交叉行(其數(shù)據(jù)交叉后出現(xiàn)在行上),第二種稱為交叉列(其數(shù)據(jù)交叉后出現(xiàn)在列頭上),第三種稱為交叉值(交叉前行、列、值的數(shù)據(jù)出現(xiàn)在一行上,交叉后值的數(shù)據(jù)出現(xiàn)在行、列的交叉點(diǎn)上)。交叉報(bào)表比普通報(bào)表提出了很多新的問題, 比如:數(shù)據(jù)交叉如何實(shí)現(xiàn), 交叉后列數(shù)目的不確 定性如何處理,列的順序如何控制等等。 根據(jù)實(shí)現(xiàn)方法的不同, 以及能否預(yù)先確定交叉后的 列結(jié)構(gòu),本章節(jié)提供了以下三種交叉報(bào)表模式的解決方案。3.1列向拼接查詢型報(bào)表(復(fù)合查詢)【概述】 報(bào)表在列向可以被劃分成幾個(gè)分組, 每組由若干個(gè)列構(gòu)成,每個(gè)列分組的數(shù)據(jù)能夠通過SQL

46、查詢獲得,而不同列分組的數(shù)據(jù)出現(xiàn)在同一行的前提是它們對應(yīng)于同一個(gè)行ID。即報(bào)表數(shù)據(jù)可以通過多個(gè)查詢結(jié)果集相互連接的方式獲得。【應(yīng)用場景】 開發(fā)人員需要從某個(gè)具有分類意義的列中提取若干不同的取值,將它們旋轉(zhuǎn)成為列標(biāo)題,再對另外一些有統(tǒng)計(jì)意義的數(shù)值列進(jìn)行匯總。用戶表樣明確規(guī)定了這些列標(biāo)題及其順序,因此交叉后的列結(jié)構(gòu)是事先能夠確定的,無論這些列是否包含有效的統(tǒng)計(jì)數(shù)據(jù),它們都將在報(bào)表中存在,因此我們稱之為動(dòng)態(tài)行固定列報(bào)表?!具m用性和不適用性】適用于:能夠預(yù)先確定交叉后列結(jié)構(gòu)的報(bào)表;報(bào)表的每行數(shù)據(jù)都具有一個(gè)唯一的行ID,該ID可能是某個(gè)字段或某幾個(gè)字段的組合;不適用于:動(dòng)態(tài)列結(jié)構(gòu)的交叉報(bào)表;【解決方案】

47、 利用復(fù)合查詢解決固定列結(jié)構(gòu)的交叉應(yīng)用,每個(gè)交叉列對應(yīng)一個(gè)查詢, 而用于連接多個(gè)查詢的行ID正是交叉行字段的組合?!鹃_發(fā)步驟】第一步:分析交叉報(bào)表的結(jié)構(gòu), 找出交叉行字段、交叉列字段和交叉值字段。 假定交叉列字 段 有n個(gè)(因?yàn)槭枪潭薪Y(jié)構(gòu)交叉,所以 n是定數(shù));第二步:創(chuàng)建n個(gè)查詢對象分別對應(yīng)于 n個(gè)交叉列字段,通常這些對象會(huì)通過確定篩選條件與列標(biāo)題掛鉤;第三步:創(chuàng)建復(fù)合查詢對象 Q4,通過增加臨時(shí)表的方式把上述n個(gè)查詢對象選為查詢表,這些臨時(shí)表的連接條件就是交叉行字段的組合,而Q4的參數(shù)應(yīng)該是n個(gè)查詢對象的參數(shù)的并集,這樣才能保證 Q4的參數(shù)設(shè)置能夠分發(fā)給各個(gè)被引用查詢;第四步:創(chuàng)建格式對

48、象F4,引用查詢對象Q4并嵌入表格,做相關(guān)的欄位、列格式和列表頭 設(shè) 計(jì)。表頭表尾可放置綁定參數(shù)的控件; 第五步:瀏覽F4 (或掛功能節(jié)點(diǎn)),設(shè)置參數(shù),檢查數(shù)據(jù)與格式是否正確;【FAQ】1、定義復(fù)合查詢有什么注意事項(xiàng)?答:首先要保證復(fù)合查詢和各個(gè)子查詢都使用相同的執(zhí)行數(shù)據(jù)源(對于單數(shù)據(jù)源版查詢引擎無此問題),其次如果修改了子查詢的定義要保證復(fù)合查詢定義中的一致性?!痉独?部門員工民族統(tǒng)計(jì)表一一要求統(tǒng)計(jì)指定公司下各部門中不同民族的員工數(shù),民族預(yù)先指定為漢族、滿族和蒙古族,報(bào)表中包含部門編碼、 部門名稱、漢族人數(shù)、滿族人數(shù)和蒙古族人數(shù)。 請注意,這里作為交叉行并可以承擔(dān)行 ID角色的字段是部門信

49、息,作為交叉列并可以承擔(dān) 子查詢過濾角色的字段是民族,作為交叉值的字段是人數(shù)。部門編碼部門名稱人數(shù)漢族滿族蒙古族1、創(chuàng)建查詢對象,編碼為han,名稱為漢族,在篩選條件頁簽設(shè)置確定條件 “民族=漢族' 用于查詢各部門的漢族員工人數(shù);I饒掙農(nóng)I腳麗畫宇斫*谿f排序福效J1性I典型模式O高級模式JOIN部分0»豁連接表1連接方式連接表2連接字段1比詼連接宇段2人費(fèi)檔案內(nèi)腳人員箱助值息農(nóng)人貴宿嘉主鍵-AJSS32人員輔助惜息表內(nèi)連接自定交頂檔案表民族二自定熨項(xiàng)檔案主鍵第 35 頁第 # 頁下一歩S&Tt取消確疋第 # 頁第 # 頁2、復(fù)制查詢對象han,修改編碼為 man,名

50、稱為滿族,修改確定條件為"民族='滿族'用于查詢各部門的滿族員工人數(shù);左卑集作數(shù)右環(huán)數(shù)待定條件表字段目定義頂檔葉読牲賽內(nèi)容r'WI饒掙農(nóng)|建接條件;劇宇段|誦連至審Y排序福效u性|圓典型模式o高級模式上一歩 |下t毗 | 軀消|3、復(fù)制查詢對象han,修改編碼為menggu,名稱為蒙古族,修改確定條件為"民族='蒙古族'用于查詢各部門的蒙古族員工人數(shù);4、創(chuàng)建查詢對象,編碼為nationalityA,名稱為部門員工民族統(tǒng)計(jì)A,選擇表為部門檔案和上述三個(gè)查詢對象對應(yīng)的臨時(shí)表,利用部門主鍵字段連接。部門檔案提供部門編碼和名稱信息,三個(gè)子查

51、詢分別提供三個(gè)民族的員工人數(shù)。我們之所以沒有在子查詢中直接查出部門編碼和名稱再在復(fù)合查詢中利用部門編碼進(jìn)行連接,是因?yàn)檫@樣做可能導(dǎo)致最終數(shù)據(jù)只列出擁有漢、滿、蒙族員工的部門,而不列出全部的部門;第 36 頁I遶捋農(nóng)建接條件宇段算吐寸排序福效n性|JOIN部分oh連接表1葩方式連接字段1比詼連接字段2邯門檔案左腳部門檔嘉主鍵-部門主鍵2部門襠案部fl聲主鍵二部門主鍵3部門檔案左連接荽古族部1、帶案主鍵=部門主鍵通)典型模式 o高級模式上一步確定取消下一歩第 37 頁第 # 頁磯查詢宦義字磧表達(dá)式顯描迷1bd_deptdoc. deptcode部1褲碼dptcodeZbd_dept.doc. deptname部門名稱dptiiiSine3i EEiull (TEHQhtn. psnxto 0)hw4i snull CTEBQ_man. pEnno 0)mani5i smill (TE

溫馨提示

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

評論

0/150

提交評論