

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第1頁用友NC二次開發平臺 查詢引擎第一章前言 .1.1.產品的前身 .1.2.產品的需求背景 .1.第二章查詢引擎的管理 .2.1.對象樹管理 .2.1.11.1目錄管理 .3 31.21.2對象管理 .3 31.31.3導入導出 .3 32.切換定義數據源 .4.第三章查詢引擎的查詢模型 .6.1.參數控制 .6.2.SQL設計 .8.2.12.1數據字典 .8 82.22.2向導設計 .9 92.32.3手工設計 .13133.數據交叉 .1.4.3.13.1第一類(投影)交叉 .14143.23.2第二類(旋轉)交叉 .15154.代碼嵌入 .1.7.4.14.1SQLSQL整理 .1
2、7174.24.2數據加工 .19194.34.3穿透規則 .2323第2頁5.查詢瀏覽 .2.7.5.15.1查詢執行與展現 .27275.25.2數據導出 .27275.35.3創建物化表 .2727第四章 查詢引擎的界面模型 .301.引用查詢 .3.1.2.格式設計 .3.1.2.12.1控件管理 .32322.22.2行列格式設計 .37372.32.3預定義數據處理 .40403.界面運行 .4.2.3.13.1界面初始化 .42423.23.2數據處理 .43433.33.3控件連動 .45453.43.4報表打印 .46463.53.5功能節點掛接 .4646附錄 . 481.
3、查詢引擎FAQ之參數篇 .4.8參考文獻 . 50第一章 前 言查詢引擎的功能定位: 一個面向高級實施人員和專業開發人員的查詢建模產品, 可以全面支 持復雜查詢的設計和個性化的報表展現。1.產品的前身查詢引擎在功能流程和查詢模型方面參考了自定義查詢的理念,在界面設計方面汲取了FormForm DesignDesign 的思路,同時融入了數據倉庫的技術,并依賴于通用的 NCNC 數據字典 DDCDDC。(1 1)自定義查詢: NCNC 于 20002000 年開始研發的一個面向中級實施人員和二次開發人員的查 詢報表工具,由查詢管理中心、報表格式設計、報表瀏覽、報表權限控制和數據加 工廠幾個模塊構
4、成,此工具首次提出了基于數據字典來管理數據并建立查詢對象的 思路,能夠提供比較豐富的查詢分析、數據加工和報表展現功能。(2 2) FormForm DesignDesign:NCNC 于 20032003 年開始研發的一種界面開發模式,定位于支持功能建模。(3 3) 數據字典:一種管理數據庫邏輯結構的機制,存在于物理數據庫和用戶接口之間。 NCNC 于 20022002 年開始研發數據字典, 最開始只用于自定義查詢, 后來經過功能強化和 逐步推廣,成為現在的 DDCDDC ( DataData DictionaryDictionaryControlControl )。其功能包括數據庫對象的管
5、理與編輯、數據字典的解析生成等。(4 4) 數據倉庫: NCNC 的一個獨立產品,能夠按照指定的入倉規則從多個業務數據庫抽取 數據,并通過入倉服務定期把數據加載到數據倉庫。2.產品的需求背景(1 1) 復雜查詢報表的需求:在實際的業務查詢中,開發人員經常會遇到以下一些棘手的 問題一一復雜的 SQLSQL,從不同的查詢條件得到完全不同的查詢結果,查詢結果的復 合,業務邏輯代碼和大量數據加工算法的介入,各種各樣的數據交叉和數據處理手 段等等;在展現格式方面,通常要求靈活、友好、可視化、個性化的設計界面,豐 富的展現控件和統計圖表,依據數據對單元格、列表頭和行表頭的格式進行設置, 表單控件之間的連動
6、等等。這一切都對早期的查詢報表工具提出了艱巨的要求。(2 2)二次開發的需求:隨著 NCNC 對行業用戶的拓展,由業務組程序員在通用軟件中針對 每個查詢報表需求進行開發的方案已經變得不太現實,一線人員越來越頻繁的面臨 來自用戶的個性化報表實施壓力。實施團隊迫切要求一個強大而且易用的二次開發 工具,盡管功能的強大和易用往往存在著一些矛盾。(3 3)工具整合的需求:自定義查詢在推出后,在實施中得到了一定的應用,但局限于出 復雜程度不太高的查詢報表。 IUFOIUFO 是公司的傳統報表產品, 它更偏重于報表的管理 方面,比如報表的發布、審核、校驗等等。數據倉庫使查詢的應用由單數據源拓展 到了多數據源
7、,并且提供定時同步業務數據的功能。為了有效地實現資源共享,結 合發揮各個工具的優勢, NCNC 決策層一直在推動相關產品的整合。(4 4)查詢分析軟件發展潮流的需求:近幾年來,查詢分析、數據挖掘、商業智能的研究 不論在企業應用還是在學術領域都成為熱點, ERPERP 軟件的數據建模和查詢建模功能 已經成為代表產品水平的重要指標。第2頁第二章查詢引擎的管理1.對象樹管理查詢引擎的管理調度功能由主界面完成,主界面左側為一棵對象樹, 樹上掛有代表查詢對象和界面對象的節點,右側為顯示當前選中對象基本屬性的屬性框。圖 2-12-1 管理調度主界面對象樹(ObjectTreeObjectTree ):對象
8、樹是一個支持層次管理的數據結構,它維護自身的加載、存儲和節點的目錄管理,每個節點的信息主體存儲在數據庫的一個BLOBBLOB 字段中。對象樹上的節點通常分為目錄(FolderFolder )和對象兩類,并支持快速定位(在樹獲得焦點時用ctrl-fctrl-f 快捷鍵可彈出查找對話框,支持按編碼或名稱來模糊查找)。屬性框(ObjectlnspectorObjectlnspector ): 一個自動顯示對象的屬性和取值的控件,取值部分會根據屬 性的數據類型采用不同的渲染器來展示,不同的編輯器來編輯。第3頁1.1 目錄管理1 1) 增加 / /刪除/ /修改:在根節點或目錄節點之下可以增加目錄,刪除
9、目錄時會刪除目錄下的所有對象。目錄的可修改屬性為目錄名稱。同一目錄下的目錄和對象不能重名。2 2) 復制 / /剪切/ /粘貼:在查詢子樹或格式子樹下, 可以將一個目錄及其下屬內容從某位置 拷貝或移動到另一個位置。1.2 對象管理1 1) 增加 / /刪除/ /修改:在根節點或目錄節點之下可以增加查詢對象或者界面對象。前者的屬性為編碼、名稱和數據源,后者的屬性為編碼和名稱,其中編碼一經使用,就不 再建議作任何修改,因為此編碼可能被其它對象引用。2 2) 復制 / /剪切/ /粘貼:在查詢或格式子樹下, 可以將一個對象從某位置拷貝或移動到另一 個位置。1.3 導入導出1 1) 導出:選中某個對象
10、,可將其導出為 XMLXML 文件,文件里描述了對象的所有信息; 也可選中某個目錄,將該目錄下所有的子目錄和對象都導出到指定位置(保持原有 的目錄級次) 。2 2) 導入:在選中某個目錄之后,導入功能可用。導出的 XMLXML 文件,可以導入到當前 目錄下。此功能可用于對象的跨數據庫復制。導入時,我們可以選擇單個文件,也可以選擇一組文件或目錄,導入后會保留原目錄的級次結構。需要注意的是:(a)(a)在導出查詢對象或界面對象時,需將其引用的查詢對象一并導出才有意義;(b)(b)導入不能違反對象主鍵及名稱的唯一性約束。下圖顯示了某查詢對象所導出的XMLXML 文件。第4頁H 煒唱)11 頁奇毎 瞬
11、 工貝口 牡的外:卜-匯:5皿iiris上 wUTJA.t lin,i.jrfcTLgxiJi5 SBfs.S r) )l c( HpryMnii f-.ndpIIAyN ftm-= *A員年目1信思GLV-3RPhcdfriRHii4fi;fii* ir pRnpndpfrtil ParenTGUr)=cih 1acfrilehftHlnOfl1knd=BQueijy_Mnr1er,/一-hi pargms一-_salectFIdsCSE氣匚tFIjVO匚:?Itqp-二12Expre ran-1bd_Jn d口n. psiIOJde * Ik all - p ri匚口咄tld-iame=*
12、AS*fiiO,mi昌preciTiiorsb1sea eU 7cile 0 /CSA&r.trlVO CItypA =* 15*R55inH=hd_ocnpsrrlrn.RM(Fd刃苗百=霜冃CSPrlFlpracis! on=p2ar & ai = o /購HUB圖 2-22-2 導出 XMLXML 文件2. 切換定義數據源多數據源運作機制:查詢引擎支持這樣的模式一一NCNC 業務在數據源 A A 下運行,查詢引擎的定義放在數據源 B B,通過引擎定義的查詢可以到數據源C C 去執行。注:只有數據倉庫下的查詢引擎有切換定義數據源和跨庫查詢的功能,客戶化下的查詢引擎只能查詢當
13、前賬套數據源的數據。圖 2-32-3 切換定義數據源定義數據源(上面說的 B B)是指查詢引擎自身的系統表所在的數據源,執行切換功能后,主 界面上的對象樹的內容會作相應改變。C:ID和L: i F;n上鼻Tirli $ Ft I I 11*ITi 呉曲l人屈it卻佶直”“iln;r niif I Int ci nt Ewp I or ciEEK)J il A I第5頁弓 H EriQliitiTKlDlr . tf- id| a- up jrrJunjirE,“-亡?T*莊 NQ 英堆更iiEM iie厘tlEW卜宙卅創商lz坤卜Lh5永 nnuMm3疋恰01樂-1崔芫懾江華主套低注部門.熨蟲
14、創返帖恕朗主蔚 TJMJJ 加工住3QvnALl)勺WM計U 帀軟0 risnwMam尋U 期江就藝童港圖 2-42-4 切換定義數據源效果frfFr RI2(KM6d5-甲 Titi*第6頁第三章查詢引擎的查詢模型查詢模型的定義包括參數定義、 SQLSQL 設計(含交叉定義)、SQLSQL 整理、數據加工、穿透規則 等幾部分,其中穿透規則描述的是本查詢與外部查詢的通信關系,剩余部分都用于描述查詢內部的屬性。查詢引擎的查詢模型(數據模型)設計如下:查詢設計態和運行態的基本流程如下圖所示:1.參數控制參數是查詢模型中代表動態信息的元素。在SQLSQL 設計、SQLSQL 整理和數據加工中,均可以
15、根0: I第7頁據參數的不同,對查詢的定義和執行進行調整。過濾型參數:如果創建某個參數的作用是根據其取值的不同改變WHEREWHERE 條件的設置,則這類參數成為過濾型參數,這是最常用的參數功能(參數的應用可以參見附錄)。(1)(1)參數定義:用于定義本查詢內部引用的所有參數,其中參數名要保證互不相同。數據類型包括自由錄入、枚舉、參照幾種,當類型為枚舉時,枚舉項為用“ ”分隔的枚舉值,或者是一個單字段的查詢SQLSQL ;當類型為參照時,枚舉項為基礎參照名,或者是用尖括號括起的自定義參照的類名。(2)(2)參數引用: 參數可在SQLSQL 設計的篩選條件頁簽引用,也可在SQSQL L 整理或數
16、據 加工的嵌入代碼中利用編碼向導引用。(3)(3)參數設置:運行態要求用戶首先對參數進行設置,這與查詢模板的使用類似。當報表引用了多個查詢時,參數將通過多頁簽設置,每個頁簽代表一個查詢。參數定義蠱示名矗作硏提示數據尖埜默認值1corp公司主鍵藝照公司目錄凍團)oootdept韶門主龍參昶部門檔莢pank數值枚舉12341席疔冊行確定取靜圖 3-23-2 參數定義圖 3-33-3 參數引用參數設置岡第8頁圖 3-43-4 參數設置2. SQL 設計SQLSQL 設計包括向導設計方式和手工設計方式, 無論采用哪種,在完成設計時系統均會對 SQLSQL 進行合法性校驗,如未通過校驗則不能保存設計。
17、作為向導設計的一個重要組成環節, 我們 有必要先介紹一下數據字典。2.1 數據字典前面已經提到過,查詢對象的屬性中包含數據源信息,因此在設計查詢的時候需要加載相應數據源的數據字典。我們知道,NCNC 的數據庫以 DDCDDC 作為數據字典,但非 NCNC 的數據庫則沒有 DDCDDC,此時,系統會根據執行數據源是 NCNC、IUFOIUFO 或其它數據庫三種情況分別加載不 同的數據字典,而且這一機制已經預留了擴展的接口,其目的就是可以面向各種類型的數據庫執行取數功能。NCNC 數據字典提供了統一的數據建模平臺,支持對各種數據庫對象進行管理,維護這些物理對象的邏輯屬性,并向外系統提供訪問數據庫邏
18、輯信息的接口。以查詢引擎為例,查詢對象的定義是基于數據字典進行的,而這份數據字典來自查詢對象所指定的數據源。由于多數報表的列與業務數據庫的字段存在某種對應關系,因此數據字典的存在有助于提高查詢定義的直觀性和易用性。第9頁圖 3-53-5 NCNC 數據字典NCNC 數據字典通常在安裝產品時候 由系統生成,如果想自己為某些數據庫對象生成字典,可 以采用數據字典管理界面提供的導入方法。導入方式包括三種(詳細操作可參見數據字典導入說明):1 1、 解析 PDMPDM 文件(xmlxml 格式);2 2、 解析 NCNC 標準建庫腳本;3 3、 提取數據庫元數據;如果需要給非 NCNC 數據庫(比如用
19、戶采用的第三方數據庫)生成數據字典,可以利用 PowerDesignerPowerDesigner 提供的逆向工程功能將庫里的物理表生成PDMPDM 文件,修改其中表和字段的中文名稱,然后以 xmlxml 文件格式存儲,再使用上述第一種方法導入。查詢引擎中用到的數據字典都以一棵對象樹的形式存在,樹節點包括目錄、表、視圖、字段、外鍵等信息,通過雙擊對象節點可以協助錄入SQLSQL 語句的成分。2.2 向導設計向導設計參考典型 SQLSQL 的構成規則,充分利用數據字典的功能,引導用戶一步步完成SQLSQL的設計,因此是推薦使用的方式。它由以下六個環節構成,其中最后一步“交叉屬性”超出 了 SQL
20、SQL 的涵義,我們在后面的專門章節中進行介紹。(1 1)表定義:即 SQLSQL 語句中的 fromfrom 部分,可以利用數據字典選擇庫里的數據表,也可以選擇查詢對象,從而實現查詢的集成(基于查詢結果定義新的查詢)。(2 2)連接定義:即 SQLSQL 語句中的 joinjoin 部分(表間連接關系),支持單鍵連接和多鍵 連接兩種模式。(3 3)字段定義:即 SQLSQL 語句中的 selectselect 部分,可以定義任何 SQLSERVERSQLSERVER 語法支持 的查詢表達式,第10頁但要保證字段別名不重復且使用規范名稱(以字母開頭、由字母、數字、下劃線組成的字符串,且不能使用
21、SQLSQL 保留字)。如果使用了聚集函數,則由系統自動完成groupgroup byby 部分。(4 4)篩選條件定義:即 SQLSQL 語句中的 wherewhere 部分,可定義確定條件和待定條件。秘笈:如果是待定條件,在值編輯框獲得焦點時雙擊編輯框可彈出參數界面并作引用(或者在值編輯框獲得焦點時按F12F12 鍵彈出參數引用框);如果是固定條件,在值編輯框獲得焦點時按 F11F11 鍵可彈出環境變量引用框,按 F12F12 鍵可彈出所引用的基礎數據表的參照。對于在查詢字段里使用了聚集函數的SQLSQL 設計,篩選條件可能需要使用havinghaving子句。HavingHaving 頁
22、簽默認是隱藏的,可以在查詢定義框的南部面板按Ctrl+Shift+Ctrl+Shift+鼠標左鍵彈出隱藏的 HavingHaving 頁簽。(5 5)排序字段定義:即 SQLSQL 語句中的 orderorder byby 部分。(6 6) 數據交叉屬性:交叉是一種常用的多維數據分析手段,詳見后文。秘笈:向導設計完成后在查詢定義框的南部面板鼠標雙擊可彈出向導生成的等效SQLSQL (待定條件全用(仁 1 1)代替)。圖 3-63-6 表定義圖 3-93-9 字段定義I Fll閔自寧女頂對弟 m 用:盲單凹自宇仝頂 WI 用吉 團自寶.頂君空列碗=3自定弘項君實泰E 計圭些宛國誥網址哥對歩 圍詞
23、空卞眾壬久 間調艾天系宇義子耘ITI 詡莘廠率 圈奇中樸 團齋話中柞鄒門知配 國折應些案 國鈾射薩弍弐別表 圍 宜耒円板跟対陽IT1采旳酬 憫銷哲眶爼BB非周秫褲春闍沖目+睪色曲目丹蒲腎礙闔可磐秦資叢Jtffi_昵H苗圖 3-73-7 增加表(物理表)與臨時表圖 3-83-8 連接定義F肖洶定義區|1連擇養 噸接案陽廚字段備蛙備畔耕庫宇段第11頁宇段表詼式怎示嵩別名1Dd_psndoc.psniiannepsmarne2is ci_cte pidoc cle a nie部門宕濡tiepin ime3bdccrp.uniitnsme督司呂椒unitianne1上一涉下涉取消第12頁圖 3-103
24、-10 表達式生成器圖 3-113-11 篩選條件定義(典型模式參見圖3-33-3)圖 3-123-12 排序字段定義第13頁2.3 手工設計手工設計是支持自由 SQLSQL 的方式,由于復雜 SQLSQL 在解析、適配、執行等方面的不穩定性較 大,因此不推薦普通用戶使用。手工設計分為以下兩個環節:(1)(1) SQLSQL 錄入:用戶可以在數據字典的輔助下錄入SQLSQL 語句,要求遵循 SQLSERVERSQLSERVER 語法。如圖 3-133-13,注意,我們在 SQLSQL 定義里用到了一個替換型參數(#pk_corp#pk_corp#)(關于替換型 參數的具體說明參見附錄);(2)
25、(2) 字段顯示名設置:系統通過對用戶錄入SQLSQL 的解析獲得字段信息,并向用戶提供輸入字段顯示名的機會,顯示名的默認值與查詢字段的物理名相同。圖 3-133-13 SQLSQL 錄入圖 3-143-14 字段顯示名設置第14頁3.數據交叉3.1 第一類(投影)交叉投影交叉:假定有一個查詢 SQL,SQL,其查詢結果是單行單列的匯總值,另外還有兩組 WHEREWHERE條件的序列,分別為橫向序列(WhereXWhereX1、WhereXWhereX2、.、WhereXWhereXn)和縱向序列(WhereYWhereY1、WhereYWhereY2、. 、WhereYWhereYn),則數
26、據矩陣 A A (a aj)對應的結果集成為投影交叉,如果a aij是WhereXWhereXi和 WhereYWhereYj同時作用在上述 SQLSQL 上獲得的結果。比如,某查詢用于某公司下各部門各民族的人數,原始SQLSQL (由查詢向導生成的等效SQLSQL)為:selectselect bd_deptdoc.deptbd_deptdoc.dept namename asas deptdept name,name,bd_defdoc.docbd_defdoc.doc namename asas docdoc name,name,councoun t t(bd_psbd_ps ndoc.
27、pk_psndoc.pk_ps ndocndoc) asas psnnopsnnofromfrom bd_deptdocbd_deptdocleftleft outerouter joinjoin bd_psbd_ps ndocndoc onon bd_deptdoc.pk_deptdoc=bd_deptdoc.pk_deptdoc= bd_psbd_ps ndoc.pk_deptdocndoc.pk_deptdocleftleft outerouter joinjoin bd_accpsbd_accps ndocndoc onon bd_psbd_ps ndoc.pk_psndoc.pk_p
28、s ndoc=bd_accpsndoc=bd_accps ndoc.pk_psndoc.pk_ps ndocndocleftleft outerouter joinjoin bd_defdocbd_defdoc onon bd_accpsbd_accps ndoc.ndoc. natinati onon ality=bd_defdoc.pk_defdocality=bd_defdoc.pk_defdocwherewhere bd_deptdoc.pk_corpbd_deptdoc.pk_corp = = ? ?groupgroup byby bd_deptdoc.deptbd_deptdoc.
29、dept name,name, bd_defdoc.docbd_defdoc.doc namename查出的結果如下表所示:圖 3-153-15 原始數據(無交叉)現在我們把查詢字段中只保留人數count(bd_psndoc.psncode)count(bd_psndoc.psncode)項,然后進行如下的投影交叉設置:第15頁存章丙定又1連擇耒 噸接案陽-選擇字牡笑噬條畔耕庫宇段交更屆性O不麼夏投訖變買c魄轉丑又1HR產品亓發那c tdoc.de ptna ne= H薩品弁壇ST2HR產品市場部bd_cie匸tdo c.ds匚tnm me= H陽業胡市場部*衍頭3coMcccnanrte=W
30、jiS,列頭刪|4bJ_dddo( (.ciocname-iS5CQlcDa ceiaocdacnarne=6S5f冊除|上一涉確定圖 3-163-16 投影交叉設置則交叉后的結果如下表所示:圖 3-173-17 投影交叉結果3.2 第二類(旋轉)交叉旋轉交叉:此類交叉用于顯示表中某幾個字段(稱為交叉值字段)的統計值,并將其分組放置在查詢結果中, 一組列在數據表的左側(稱為交叉行字段),一組列(稱為交叉列字段)旋轉到數據表的上部成為列表頭,統計值則放在對應的交叉單元。關于旋轉交叉的更細節的內容,請參考李媛媛所著的交叉表使用說明。兩類交叉的最大差別在于: 第一類交叉屬于查詢行為,適用于行列設置都
31、已在表樣中固定的報表,其交叉結果嚴格遵循表樣格式,其行列結構不會受查詢數據的影響;第二類交叉屬于數據加工行為,其交叉后的行列結構在查詢出數據之前不可預料,多用于完全真實地對原始數據進行動態處理。沿用 3.13.1 使用的例子,假定我們進行如下的旋轉交叉設置(其中交叉砝碼的意義是代表交叉 值字段的位置,它只能出現在交叉行字段或交叉列字段當中):第16頁1選擇蕓連掛冬褂廚孚段瀟瞪孵排序宇段OO損記丈叉逼龍轉更史+部門番荊養亠F檔集內巻亠9i卡0-110上一歩確定題消圖 3-183-18 旋轉交叉設置則交叉后的結果如下表所示:圖 3-193-19 旋轉交叉結果在旋轉交叉設置界面上單擊行,列,值標簽(
32、在圖3-183-18 中用藍色框標示的位置),可彈出 交叉行列復合維度設置和是否小計的設置框。第17頁P玄詢瞎卑偵覽共1術間圖 3-203-20 旋轉交叉結果(設置了小計)4.代碼嵌入4.1 SQL 整理 SQLSQL 整理(SQLSQL RepairRepair):指在 SQLSQL 查詢之前,對 SQLSQL 所作的調整。通常會根據參數的 不同,對查詢的表、字段或條件等信息進行增補或修改。SQLSQL 整理的具體內容由內嵌的代碼片段描述(這與后面將介紹的數據加工和穿透規則一樣)代碼的錄入可通過編碼向導協助完成,盡管如此,這幾種功能仍然推薦由高級實施人員或程序員使用。第18頁以下簡單介紹幾種
33、 SQLSQL 整理算法的編碼向導使用方法:(1)(1)追加查詢表:參數為待追加的表物理名。圖 3-223-22 追加表向導(2)(2)追加連接條件:與追加表同時使用,參數為連接模式、追加表物理名和追加的SQT?代碼X圖 3-213-21 SQLSQL 整理代碼在圖示的 SQLSQL 整理代碼中,表達了這樣一個整理愿望:當參數“detaildetail”取值為“ Y Y”時,引擎會在本查詢對象已完成的 SQLSQL 設計基礎上多查詢一張表(bd_defdocbd_defdoc)和兩個字段(檔 案編碼、檔案名稱),從而獲得更明細的查詢信息;如果該參數取值不為“Y Y ”,則仍然按照SQLSQL
34、設計的定義去執行查詢。第19頁表間連接條件。代瑪向導參數第20頁(3)(3)(4(4)圖 3-233-23 追加連接條件向導追加查詢字段:與追加表同時使用,參數為追加字段的表達式、顯示名和別名。圖 3-243-24 追加字段向導按參數追加條件:根據參數取值的不同追加不同的篩選條件,參數為參數名和 篩選字段。圖 3-253-25 按參數追加條件向導第21頁4.2 數據加工查詢結果集(ResultSetResultSet):由二維數據集合(數據體)及其列信息(元數據,包括列名、第22頁列數據類型等信息)構成的一個數據載體。查詢引擎中使用的結果集為DataSetDataSet。數據加工(DataDa
35、ta ProcessProcess ):數據加工是指某個(或某幾個)結果集在經過一系列加工算法的變換后得到另一個結果集,而后者通常是業務上要求的展現結果。相關的算法又稱為加工濾鏡,濾鏡通常支持輸入多個結果集和輸出一個結果集,并可以嵌套使用。數據加工與 SQLSQL 整理的區別在于:前者在 SQLSQL 查詢之后進行,作用的對象是結果集; 后者在 查詢之前進行,作用的對象是 SQLSQL 定義。以下簡單介紹幾種數據加工算法的編碼向導使用方法:(1 1)由查詢獲得結果集:根據查詢 IDID 和參數變量獲得查詢結果集,這里的參數變量是指需要傳給目標查詢的參數哈希表,默認可以是當前查詢的參數哈希表,見
36、 圖 3-273-27,不需BorlandBorland 公司開發的在數據加工的編碼向導中,提供了多種實用加工濾鏡。圖示的數據加工代碼把IDID 分別為“ malemale ”和“ femalefemale ”的兩個結果集按照 deptdept namename 字段為鍵進行了左外連接,并在連接結果中保留了 deptdept namename”、“ mpsnnummpsnnum”、“ fpsnnumfpsnnum ” 三列。第23頁修改。第24頁圖 3-273-27 獲得結果集向導(2(2)公式設置:參數為公式列名、返回值數據類型和公式,如果公式列名不存在則新增一列,否則將該列的內容更新為公式
37、返回值。一個公式也可以引用另一個 公式列的計算結果。圖 3-283-28 公式編輯圖 3-293-29 公式定義(3)(3)結果集連接:指定兩個結果集的連接字段、連接方式和連接后的保留字段,得 到連接后的結果集。圖 3-303-30 結果集連接向導(4)(4)結果集聯合:指定兩個列結構相兼容的結果集,得到聯合( unionunion)后的結果。圖 3-313-31 結果集聯合向導第22頁第23頁4.3 穿透規則數據穿透:假定報表 R1R1 上存在某個區域 A1A1 , A1A1 內部有若干業務數據,如果以A1A1 為出發點能夠切換到另一張報表R2R2 的上的區域 A2A2,而且 A1A1 和
38、A2A2 的內部數據存在著某種內在聯系,則稱可以從 R1R1 穿透到 R2R2。當這種穿透行為傳遞下去,我們就可以了解某張報表的 數據明細, 甚至追溯到它的數據來源。 通常我們會把上述的區域選為一個表格行或者一個表 單元,而上述的內在聯系就稱為穿透規則。一個查詢上可以定義多個穿透規則, 每個規則需要指定穿透的目標查詢, 同時目標查詢上要 創建一個過濾型參數,用于接收穿透區域的取值。如我們現在定義了兩個查詢:公司部門和部門人員,如圖3-323-32。我們希望在瀏覽公司部門的時候選中某個部門能穿透到部門人員查詢查看這個部門下的所有員工。這首先需要我們在公司部門的查詢列和部門人員的查詢參數之間建立一
39、個關聯關系。這里我們選擇公司部門的部門編碼(deptcodedeptcode)列;在部門人員查詢里加入一個查詢參數部門編碼( deptcodedeptcode,源查 詢列和目標查詢參數名字不一定要相同,但是含義要一致),并在查詢定義里引用該參數作為過濾條件。驢奄詢結畀預亜列)第24頁r公司名稱部門編瑪榔鉆石切HUT具腋師限公視僉司高層01株禪鉆石切削 R 具股份有限會司02,秣科祜石切刖 R 員般份有關舍司磯動郁03嗣詁石切削方具銷音駆04株洲鉆石切削叮肩勝恂有限瓷司牛產韶05|株冊石切削刀貝股惜有竝司吁政0201襪洲鉆石憎q刀具股悅有限瓷司02Q;株別齬石切削JJ員跚 有眼仝視人力資源020
40、3標洲祜石切刀惑份夸限金司QZU4株訓站石切削刀貝腔惜有限益司IHM020Ev交叉穿遷導出咖1欝査詢結晃預範共2闖行9列】XI邵iis珈姓缶人員分類名稀試驗室王華試用期員工予0253A成檢王莫試用期員工0249開城退張潔堯工程技木人儀D252掠辛就工芒拽尢人萸0261歐詐丁稈枝木X吊0255涂屋班伍旭東試畀期員工0254行敕沈陣詞用期員工D256|行砂曷弄童試用期員工D257訂取周鋅訶用期血工舛v, 1交夏 |應1 .#5:. 4ffl關訊圖 3-323-32 公司部門(上)和部門人員(下)定義公司部門的穿透規則,選擇查詢間穿透向導,設置如下圖 3-333-33 穿透規則定義向導第25頁棄請規
41、則代碼圖 3-343-34 穿透規則代碼下圖顯示了一個由人員信息穿透到薪資信息再穿透到同姓員工工資信息,最后穿透到每月明細的用例,其中第一步穿透是單列等值穿透(相當于“人員= =李滌非”),第二步是非等值穿透(相當于“姓名 likelike 李 ”),第三步是多列聯合穿透(相當于“人員 = =李屏andand 年 份= =20032003)。第26頁按人員穿透到員二工資信息按員工穿透到同姓員工工資信息按員工和期間穿透到每月朋細圖 3-353-35 穿透效果示意第27頁5.查詢瀏覽5.1 查詢執行與展現在建立好查詢模型之后,系統提供預覽查詢執行結果的功能。用戶首先輸入執行查詢所需要的參數取值(如
42、果有參數的話),查詢引擎會根據該查詢對象的數據源去對應的數據庫執行 查詢,在經過查詢結果集評估(對于查詢記錄數過大的情況允許用戶優化或放棄查詢)之后,把結果集展現給用戶。在展現之后,用戶可以繼續進行穿透、交叉等工作。今魚洵等果頂第(230()()IX人蠱褊碼its年度0001200313105UUUJLUU401b.62JOOOOD908878OOJQCO0003200311023.40000000380D.0530000DT2I7.35O0DDCO000200310503.240000003607.593000036901.65003000OQOE20031I164.2SOOJOOO3Q52
43、JSJOOOOD7311 J2D0JD0Q000720031DF2S 520000631000033977 93003000001120Q313C95.100030003742.333000006352.3300JDOO001220037C61.OUOJOOO331J.62JOOOOO3?48.1BOOJOQO00132003199.640000003027.563000005562080030000014200337301200300037048230000D5D25JOOOJDCO0016田樹2&03BQB7.B40000003M4.1BOOOOOD5423.48003000ahi
44、 空勵720030003A0D qsaOODDD4R32 77OClDtjO00172003B936 920030003615.74JOOODD5421.1600JDOO0U1L2003U4J2./tiUIJUOOJ22U.rUJUUUU03211 jgeOQJDOQ001520037C71.63003000344B.6330000D3D23J5QOJDOO0O2C20034 S4 5.000000009G3.0GOOOOOD3561.940030000021200244O5.OOOO3CO0705.940000003BOS.66O03DCO導出圖 3-363-36 查詢預覽5.2 數據導出導
45、出功能支持將預覽數據導出為純文本文件,并可進而用EXCELEXCEL 打開。隨著產品的發展,數據導出的格式會逐步豐富。5.3 創建物化表查詢引擎可以根據預覽數據直接到數據庫創建物化表,同時將物化表的結構注冊到數據字典(物化表會注冊到 DDCDDC 的物化臨時表目錄下)中,以后的 SQLSQL 設計就可以基于新創建的 物化表進行,從而擴充了查詢集成的范圍。引用了物化表的查詢,在執行前會提示是否同步刷新物化表,如果選擇了刷新,則會按當前的參數設置傳遞給產生物化表的查詢,重新執行得到結果并更新物化表,再在此基礎上執行當前查詢;如果未選擇刷新,則直接基于物化表里的已有數據執行查詢。第28頁-由一個查詢
46、生成物化表,該表會創建到查詢定義所在的數據源(如果是數據倉庫下,可通過切換定義數據源查看當前所在數據源),而不是查詢取數數據源(就是選中查詢后在右邊屬性列表里的數據源)。如果是客戶化下的查詢引擎,這兩者是一致的,因為客戶化下的查詢引擎只支持單數據源,就是當前登錄賬套所在數據源。圖 3-373-37 創建物化表第29頁圖 3-383-38 在定義查詢時引用創建的物化表第29頁圖 4-14-1 界面模型流程第30頁第四章查詢引擎的界面模型界面模型節點的新建和管理參見第二章。 我們可以設計新的界面模型,也可以對已有的界面 模型進行修改。界面模型的設計包括引用查詢,界面可視化設計, 綁定數據集,數據預
47、處理 等部分。界面模型(展現模型)設計如下:查訶弓用界面布局喩計- 行列表頭說計逵動規川 I 主從)界面模型設才態界面模型設計態和運行態的基本流程如下圖所示(設計態的操作并沒有嚴格意義上的順序限制):控忡連功雖于蠻需集的數捱星于表處瑾報表輸設計商廷弭茜第31頁1.引用查詢引用查詢是指將界面模型所要展現的查詢結果集對應的查詢定義引用到模型中來。由于同一查詢定義根據不同參數設置也可以得到不同結果集,所以為了區分這種綁定基于同一查詢定義的不同結果集時,我們對每一個查詢結果集起一個單一的別名來標志。圖 4-24-2 查詢引用界面對于數據集之間存在的某種一對多的關系,我們還可以根據需要建立主從關系(即主
48、子表)查詢引擎支持兩個數據集之間按照多列關聯建立主從關系。圖 4-34-3 主子連接設置界面2.格式設計界面模型的格式設計包括了控件拖放,編輯控件屬性及數據綁定屬性, 定義列格式,列表頭,行表頭等行列格式以及數據預處理等幾部分。分別介紹如下。圖 4-54-5 FlowLayoutFlowLayout 示例第32頁E) )圉畫曰J j圭|P 4 % Z) /圖年咋F匡甲圖 4-44-4 界面模型設計界面2.1 控件管理界面模型設計工具提供了幾種最常用的控件,如圖4-44-4 中控件欄中所示,分別是按鈕、復選框、組合框、標簽、列表、單選框、多頁簽、表、文本域、文本框、樹、面板、分割欄、圖 表和參照
49、控件,其中最重量級的控件是表和圖表,絕大部分的數據集展現工作是這兩個控件完成的。初始時,界面上只有一個面板,處于選中狀態,布局是默認的BorderLayoutBorderLayout。我們接下來的工作就是要在這個面板上定制我們的界面,這個過程和一般的JavaJava 可視化設計大同小異。查詢引擎的布局基本上沿用JavaJava 布局的 FlowLayoutFlowLayout , BorderLayoutBorderLayout 和 GridLayoutGridLayout(BorderLayoutBorderLayout 和 JavaJava 稍有區別),前兩種是比較常用的。FlowLayo
50、utFlowLayout 布局顧名思義,是流程式的,象字處理程序安排段落里的文本一樣布局GUIGUI 元素。9抑司若城鄙門若稱日賂10応毎噸-牛h列轄武”郴存格式M獲址址哩衲出按我測試控件欄第33頁查詢引擎里的 BorderLayoutBorderLayout 將容器分成了北、中、南三個區域,每個區域放置一個子控件(和 JavaJava 的五個區域稍有不同),北區域和南區域按控件首選高度來布置,寬度都是充滿這個容器,剩下的空間全部劃分給中區域。如圖4-64-6,主面板的布局就是 BorderLayoutBorderLayout ,其北區域放置了一個子面板,布局為 FlowLayoutFlowL
51、ayout,中區域放置了一個分隔欄控件,左右各放GridLayoutGridLayout 按照指定的行數和列數來平均分隔容器空間,形成很多子區域,每一個區域內放置一個子控件。圖 4-74-7 GridLayoutGridLayout 示例圖 4-84-8 界面模型雙擊界面上的控件就可以打開屬性編輯器,可以編輯控件的相關屬性。 屬性編輯器上邊是當前界面的控件列表,下面列出了當前選中控件的屬性列表。我們可以從控件列表中選中控件,也可以在界面上雙擊控件來選中控件進行屬性編輯。圖 4-94-9 屬性編輯器字體和首選大小等普通屬性。其次,控件具有一些自己特有分割欄有分欄方向,分欄位置等特有屬性。下面我們
52、來介紹所有控件都有背景色,前景色, 的屬性,如面板具有布局屬性,了一個表格,南區域放置了一個多頁簽。圖 4-64-6 BorderLayoutBorderLayout 示例第34頁一下幾個主要的控件。展現數據集的最重要的控件- 表的幾個屬性:(1 1)綁定數據集:可以將表綁定到引用查詢中的某一個查詢定義,那么在運行態下 表展現的就是該查詢定義對應得到的查詢結果集。當設置了表的數據集綁定屬 性后,該查詢定義中定義的列就相應的出現在表里(此時沒有數據只有表頭)(2 2)列格式綁定:有時候會對表中的數據展現有各種格式上的要求,如預警顯示,精度設置,前綴后綴等等。這時可以設置表的列格式屬性,在列格式屬
53、性里不 但可以設置列綁定的列格式,也可以設置列的顯示順序,顯示與否等屬性(列 格式的定義在后面的小節里專門講述)。圖 4-74-7 列格式設置(3 3)列表頭綁定:當表綁定了數據集之后,可以根據展現需要綁定列表頭格式,在 表頭 IDID 屬性里綁定表頭的 IDID 之后, 從界面上就可以看到表的列表頭已經綁定 到了表頭 IDID 對應的表頭格式 (列表頭格式的設計在后面的小節里會專門講述)(4 4)行表頭綁定:如果表綁定的查詢定義里定義了第一類交叉(即投影交叉,參見第三章第 3 3 節),則表還可以設置行表頭格式。關于行表頭的定義和設置在后面小節中講述。圖表:圖表控件在設置了數據集綁定屬性之后
54、, 可以設定其數據綁定屬性。 在圖表控件上彈出右鍵 菜單點擊數據綁定菜單項,可彈出數據綁定設置界面如圖4-84-8 所示。在這里我們可以設置圖表的類型,以及綁定的系列等屬性。第35頁TlWf恿:詢 1窮親類型:1関老展認: 3門甘平7T阿:*乖百T冋r各亂可甲也1玉閣鳳曲L -:最遊型皿也性矣旦11*1三主苛E1CD|D9*圖 4-84-8 圖表數據綁定設置界面圖表支持的類型有三種:分類圖、餅圖和儀表圖。分類圖有 2D2D 和 3D3D 兩種,還可以選擇是水平方向還是垂直方向展開,如果選擇了各系列單 獨設置圖例,還可以對不同的系列設置不同的展現類型。如圖 4-94-9,顯示了兩個系列的數據,一
55、個系列是直方圖,一個系列是折線圖。禺41圖 4-94-9 分類圖餅圖也有 2D2D 和 3D3D 兩種。圖 4-104-10 顯示了圖 4-94-9 中的數據用餅圖類型的展現。第36頁圖 4-104-10 餅圖儀表圖將每個系列的數據在一個儀表盤中顯示。圖4-114-11 為同樣的數據在儀表圖的展現。儀表圖一次展現數據中的一條記錄,可以通過儀表圖中的導航工具欄瀏覽數據。1- b k 1-跳剎圖 4-114-11 儀表圖列表,下拉框、文本框,標簽,參照等簡單控件提供了綁定到多種內容的屬性。其中,列表 和下拉框可以綁定到查詢結果集中某列(導航或枚舉),綁定查詢結果集對應的參數(即查詢參數);文本框可
56、以綁定查詢參數和環境變量;參照控件可以綁定查詢參數。下面是設置 一個文本框綁定到查詢參數的截圖。口 電0%)15 1 5門翳24D(1B%l國表第37頁X圖 4-124-12 綁定查詢參數的文本框2.2 行列格式設計行列格式設計包括列格式定義,列表頭定義和行表頭定義三部分,分別說明如下。 列格式定義圖 4-134-13 列格式定義界面我們可以定義四種類型的列格式:字符型,數值型,貨幣型,百分比型,后三種實際上都屬 于數值型數據的不同展現。格式定義包括對齊方式,文本顏色,前導符號等等。對于數值型 的列格式還可以設置保留小數位數,是否加千分位等格式。列格式的一個比較重要的設置就是設置預警顯示,預警
57、顯示就是將符合指定條件的數據按指定顏色來顯示。如銷售額這樣的數據通過分段預警就很容易體現出高中低來,方便瀏覽數據。圖 4-144-14 中所示預警設置就是將小于6060 的數用紅色顯示,6060 到 8080 之間的數用藍色顯示,大于 8080 的數用黃色顯示。預警條件中除支持用常量表達式進行比較之外,也支持用含變量的表達式進行比較,其中的變量名必須是表中某列的列名。如表中有A A,B B,C C 三列,要求某行中 A A 列中的值大于 B B 列和 C C 列的值之和時該行 A A 列按某種指定顏色顯示,我們可以給 A A第38頁列綁定列格式,在列格式的預警設置中設置預警條件為B+CB+C(
58、注:這里的 A A , B B , C C 都是指的列名,不是列顯示名,參見圖 4-74-7)。圖 4-144-14 預警設置界面列表頭定義圖 4-154-15 列表頭設計界面有時候為了方便歸類和分組列數據,我們需要定義多表頭來加強展現。如圖4-154-15,我們可以根據自己的需要定義一個多表頭用來展現,在這里,可以很方便的組合表中列,定義好的表頭格式存在數據庫中,并有一個表頭IDID 與之對應。通過表頭IDID 該列表頭格式可以被表綁定(綁定了列表頭的表效果參見圖4-54-5 )。小技巧:定義對應某一查詢的列表頭展現時,我們可以通過參照,選中該查詢來快速引入該查詢定義的列,而不用手工錄入。第
59、39頁行表頭定義第40頁如果設置表的綁定數據集屬性到一個定義了第一類交叉的查詢,那么表中會出現與查詢中定義的列和行相對應的列頭和行頭。默認的列頭和行頭沒有任何附加的格式,如圖 4-164-16 所示。圖 4-164-16 綁定到第一類交叉查詢定義的表就像可以給列分組定義列表頭一樣,我們也可以給行分組定義行表頭。如圖4-174-17 所示,類似于列表頭的定義, 我們也可以合并行, 還可以定義行號顯示與否,行號顯示的位置,甚至可以為定義好的表頭綁定列表頭。保存后我們可以看到界面上的表已經顯示了新定義的行表 頭格式。圖 4-174-17 行表頭設計界面第41頁圖 4-184-18 定義了行列表頭格式
60、的表(承圖 4-164-16)2.3 預定義數據處理界面模型中支持兩種數據預定義的處理: 定義公式列和定義小計合計。其中,公式列定義是 基于查詢結果集的,定義的公式列對于所有綁定該查詢結果集的控件都是可見的。 小計合計 是基于表控件的,定義的小計合計只對該表起作用,不影響其他綁定到相同數據集的控件。公式列點擊數據處理菜單下的公式列菜單項,就會彈出如圖4-194-19 所示的公式列定義界面。圖 4-194-19 公式列定義界面第42頁在查詢結果集下拉框中選中要定義公式列的數據集,如果是添加公式列,則數據集中可選的列名會出現在可選列列表中(如果是預定義的公式列,則可選列是數據集的原始列,如果是運行態定義的公式列,可選列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- flash教學課件語文
- 護理專業發展歷程
- 適合不同年齡段的妝容設計
- 房地產項目財務管理的關鍵點
- 養殖農戶市場波動心理調節
- 基于BIM的土木工程可操作性分析
- 城市規劃中的BIM技術運用探討
- 防水涂料固含量復試技術報告
- 屋面防水排氣孔間距技術專題
- 保險公司晚會策劃方案
- HY/T 0409-2024近岸海域水質浮標實時監測技術規范
- 《正常分娩》課件
- JGJ25-2010 檔案館建筑設計規范
- 醫之有“道”告別難“咽”之隱-基于5A護理模式在腦卒中恢復期患者改善吞咽障礙中的應用
- CJT163-2015 導流型容積式水加熱器和半容積式水加熱器
- JT-T-1180.1-2018交通運輸企業安全生產標準化建設基本規范第1部分:總體要求
- 2025屆新疆維吾爾自治區新疆生產建設兵團二中物理高一第二學期期末質量檢測試題含解析
- 第五課弘揚勞動精神、勞模精神、工匠精神(教案)-【中職專用】中職思想政治《職業道德與法治》教案(高教版2023·基礎模塊)
- 組合邏輯電路的設計說課稿省公開課一等獎全國示范課微課金獎課件
- (正式版)SHT 3225-2024 石油化工安全儀表系統安全完整性等級設計規范
- 寧遠事業單位筆試試題2024
評論
0/150
提交評論