用友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頁,還剩143頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、PAGE PAGE 1第 頁用友NC報(bào)表教程(全)5X&6X用友NC-UAP DATE yyyy-MM-dd 2016-07-22第 PAGE 145 頁目 錄 TOC o 1-3 h z u HYPERLINK l _Toc215629398 第一章前言 PAGEREF _Toc215629398 h 1 HYPERLINK l _Toc215629399 1.背景 PAGEREF _Toc215629399 h 1 HYPERLINK l _Toc215629400 2.入門 PAGEREF _Toc215629400 h 2 HYPERLINK l _Toc215629401 3.小結(jié)

2、PAGEREF _Toc215629401 h 8 HYPERLINK l _Toc215629402 第二章對(duì)象管理 PAGEREF _Toc215629402 h 9 HYPERLINK l _Toc215629403 1.對(duì)象樹 PAGEREF _Toc215629403 h 9 HYPERLINK l _Toc215629404 1.1對(duì)象編輯 PAGEREF _Toc215629404 h 10 HYPERLINK l _Toc215629405 1.2對(duì)象導(dǎo)入導(dǎo)出 PAGEREF _Toc215629405 h 10 HYPERLINK l _Toc215629406 2.數(shù)據(jù)源

3、PAGEREF _Toc215629406 h 11 HYPERLINK l _Toc215629407 3.首選項(xiàng) PAGEREF _Toc215629407 h 14 HYPERLINK l _Toc215629408 4.資源權(quán)限 PAGEREF _Toc215629408 h 15 HYPERLINK l _Toc215629409 第三章查詢模型 PAGEREF _Toc215629409 h 16 HYPERLINK l _Toc215629410 1.參數(shù)控制 PAGEREF _Toc215629410 h 17 HYPERLINK l _Toc215629411 2.SQL設(shè)計(jì)

4、 PAGEREF _Toc215629411 h 19 HYPERLINK l _Toc215629412 2.1數(shù)據(jù)字典 PAGEREF _Toc215629412 h 19 HYPERLINK l _Toc215629413 2.2向?qū)гO(shè)計(jì) PAGEREF _Toc215629413 h 20 HYPERLINK l _Toc215629414 2.3手工設(shè)計(jì) PAGEREF _Toc215629414 h 25 HYPERLINK l _Toc215629415 3.數(shù)據(jù)交叉 PAGEREF _Toc215629415 h 27 HYPERLINK l _Toc215629416 3.1

5、投影交叉 PAGEREF _Toc215629416 h 28 HYPERLINK l _Toc215629417 3.2旋轉(zhuǎn)交叉 PAGEREF _Toc215629417 h 31 HYPERLINK l _Toc215629418 4.代碼嵌入 PAGEREF _Toc215629418 h 36 HYPERLINK l _Toc215629419 4.1SQL整理 PAGEREF _Toc215629419 h 36 HYPERLINK l _Toc215629420 4.2數(shù)據(jù)加工 PAGEREF _Toc215629420 h 38 HYPERLINK l _Toc21562942

6、1 4.3穿透規(guī)則 PAGEREF _Toc215629421 h 42 HYPERLINK l _Toc215629422 5.查詢執(zhí)行 PAGEREF _Toc215629422 h 48 HYPERLINK l _Toc215629423 6.查詢集成 PAGEREF _Toc215629423 h 50 HYPERLINK l _Toc215629424 6.1復(fù)合查詢 PAGEREF _Toc215629424 h 50 HYPERLINK l _Toc215629425 6.2物化查詢 PAGEREF _Toc215629425 h 51 HYPERLINK l _Toc21562

7、9426 6.3合并查詢 PAGEREF _Toc215629426 h 53 HYPERLINK l _Toc215629427 7.數(shù)據(jù)權(quán)限 PAGEREF _Toc215629427 h 53 HYPERLINK l _Toc215629428 第四章格式模型 PAGEREF _Toc215629428 h 55 HYPERLINK l _Toc215629429 1.引用查詢 PAGEREF _Toc215629429 h 56 HYPERLINK l _Toc215629430 2.格式設(shè)計(jì) PAGEREF _Toc215629430 h 57 HYPERLINK l _Toc215

8、629431 2.1控件管理 PAGEREF _Toc215629431 h 57 HYPERLINK l _Toc215629432 2.2屬性綁定 PAGEREF _Toc215629432 h 64 HYPERLINK l _Toc215629433 2.3行列格式設(shè)計(jì) PAGEREF _Toc215629433 h 66 HYPERLINK l _Toc215629434 2.4預(yù)定義數(shù)據(jù)處理 PAGEREF _Toc215629434 h 69 HYPERLINK l _Toc215629435 3.報(bào)表瀏覽 PAGEREF _Toc215629435 h 76 HYPERLINK

9、l _Toc215629436 3.1界面初始化 PAGEREF _Toc215629436 h 76 HYPERLINK l _Toc215629437 3.2數(shù)據(jù)處理 PAGEREF _Toc215629437 h 78 HYPERLINK l _Toc215629438 3.3控件連動(dòng) PAGEREF _Toc215629438 h 82 HYPERLINK l _Toc215629439 3.4報(bào)表打印 PAGEREF _Toc215629439 h 83 HYPERLINK l _Toc215629440 第五章報(bào)表發(fā)布 PAGEREF _Toc215629440 h 86 HYPE

10、RLINK l _Toc215629441 1.發(fā)布為功能節(jié)點(diǎn) PAGEREF _Toc215629441 h 86 HYPERLINK l _Toc215629442 1.1 手動(dòng)掛接 PAGEREF _Toc215629442 h 86 HYPERLINK l _Toc215629443 1.2 向?qū)Оl(fā)布 PAGEREF _Toc215629443 h 87 HYPERLINK l _Toc215629444 2.輕量化報(bào)表展現(xiàn) PAGEREF _Toc215629444 h 89 HYPERLINK l _Toc215629445 第六章插件開發(fā) PAGEREF _Toc21562944

11、5 h 94 HYPERLINK l _Toc215629446 1生成插件 PAGEREF _Toc215629446 h 94 HYPERLINK l _Toc215629447 2設(shè)計(jì)插件 PAGEREF _Toc215629447 h 100 HYPERLINK l _Toc215629448 3管理插件 PAGEREF _Toc215629448 h 100 HYPERLINK l _Toc215629449 4開發(fā)小結(jié) PAGEREF _Toc215629449 h 101 HYPERLINK l _Toc215629450 第七章查詢引擎V5新特性 PAGEREF _Toc215

12、629450 h 102 HYPERLINK l _Toc215629451 1.V5.0新特性 PAGEREF _Toc215629451 h 102 HYPERLINK l _Toc215629452 2.V5.01功能變更清單 PAGEREF _Toc215629452 h 102 HYPERLINK l _Toc215629453 3.V5.011功能變更清單 PAGEREF _Toc215629453 h 102 HYPERLINK l _Toc215629454 4.V5.02新增功能描述 PAGEREF _Toc215629454 h 103 HYPERLINK l _Toc21

13、5629455 4.1參數(shù)重構(gòu) PAGEREF _Toc215629455 h 103 HYPERLINK l _Toc215629456 4.2分頁技術(shù) PAGEREF _Toc215629456 h 107 HYPERLINK l _Toc215629457 4.3SQL代碼輔助器 PAGEREF _Toc215629457 h 110 HYPERLINK l _Toc215629458 4.4數(shù)據(jù)字典級(jí)別權(quán)限控制 PAGEREF _Toc215629458 h 111 HYPERLINK l _Toc215629459 5.V5.02功能變更清單 PAGEREF _Toc21562945

14、9 h 114 HYPERLINK l _Toc215629460 6.V5.5功能變更清單 PAGEREF _Toc215629460 h 115 HYPERLINK l _Toc215629461 附錄 PAGEREF _Toc215629461 h 117 HYPERLINK l _Toc215629462 1.查詢引擎FAQ之參數(shù)篇 PAGEREF _Toc215629462 h 117 HYPERLINK l _Toc215629463 2.交叉表的使用樣例 PAGEREF _Toc215629463 h 119 HYPERLINK l _Toc215629464 3.查詢與格式對(duì)象

15、安裝盤預(yù)置方案 PAGEREF _Toc215629464 h 124 HYPERLINK l _Toc215629465 4.查詢引擎報(bào)表聯(lián)查業(yè)務(wù)節(jié)點(diǎn)應(yīng)用方案 PAGEREF _Toc215629465 h 125 HYPERLINK l _Toc215629466 5.查詢引擎與三大模板集成方案 PAGEREF _Toc215629466 h 130 HYPERLINK l _Toc215629467 6.基于QE底層的查詢個(gè)性化設(shè)計(jì)方案 PAGEREF _Toc215629467 h 138 HYPERLINK l _Toc215629468 7.個(gè)性化控制類(JAVADOC) PAGE

16、REF _Toc215629468 h 143前言查詢引擎(Query Engine,簡稱QE)的功能定位是,一個(gè)面向高級(jí)實(shí)施人員和專業(yè)開發(fā)人員的查詢建模產(chǎn)品,可以全面支持復(fù)雜查詢的設(shè)計(jì)和個(gè)性化的報(bào)表展現(xiàn)。背景查詢引擎在功能流程和查詢模型方面參考了其前身產(chǎn)品“自定義查詢”的理念,在界面設(shè)計(jì)方面汲取了Form Design的思路,同時(shí)融入了DW的技術(shù),并依賴于通用的NC數(shù)據(jù)字典。自定義查詢:NC于2000年開始研發(fā)的一個(gè)面向中級(jí)實(shí)施人員和二次開發(fā)人員的查詢報(bào)表工具,由查詢管理中心、報(bào)表格式設(shè)計(jì)、報(bào)表瀏覽、報(bào)表權(quán)限控制和數(shù)據(jù)加工廠幾個(gè)模塊構(gòu)成,此工具首次提出了基于數(shù)據(jù)字典來管理數(shù)據(jù)并建立查詢對(duì)象的

17、思路,能夠提供比較豐富的查詢分析、數(shù)據(jù)加工和報(bào)表展現(xiàn)功能。Form Design:NC于2003年開始研發(fā)的一種界面開發(fā)模式,定位于支持功能建模。數(shù)據(jù)字典:一種管理數(shù)據(jù)庫邏輯結(jié)構(gòu)的機(jī)制,存在于物理數(shù)據(jù)庫和用戶接口之間。NC于2002年開始研發(fā)數(shù)據(jù)字典,最開始只用于自定義查詢,后來經(jīng)過功能強(qiáng)化和逐步推廣,成為現(xiàn)在的DDC(Data Dictionary Control)。其功能包括數(shù)據(jù)庫對(duì)象的管理與編輯、數(shù)據(jù)字典的解析生成等。數(shù)據(jù)倉庫:NC的一個(gè)獨(dú)立產(chǎn)品,能夠按照指定的入倉規(guī)則從多個(gè)業(yè)務(wù)數(shù)據(jù)庫抽取數(shù)據(jù),并通過入倉服務(wù)定期把數(shù)據(jù)加載到數(shù)據(jù)倉庫。產(chǎn)品的需求背景如下所述。復(fù)雜查詢報(bào)表的需求:在實(shí)際的業(yè)

18、務(wù)查詢中,開發(fā)人員經(jīng)常會(huì)遇到以下一些棘手的問題復(fù)雜的SQL,從不同的查詢條件得到完全不同的查詢結(jié)果,查詢結(jié)果的復(fù)合,業(yè)務(wù)邏輯代碼和大量數(shù)據(jù)加工算法的介入,各種各樣的數(shù)據(jù)交叉和數(shù)據(jù)處理手段等等;在展現(xiàn)格式方面,通常要求靈活、友好、可視化、個(gè)性化的設(shè)計(jì)界面,豐富的展現(xiàn)控件和統(tǒng)計(jì)圖表,依據(jù)數(shù)據(jù)對(duì)單元格、列表頭和行表頭的格式進(jìn)行設(shè)置,表單控件之間的連動(dòng)等等。這一切都對(duì)早期的查詢報(bào)表工具提出了艱巨的要求。二次開發(fā)的需求:隨著NC對(duì)行業(yè)用戶的拓展,由業(yè)務(wù)組程序員在通用軟件中針對(duì)每個(gè)查詢報(bào)表需求進(jìn)行開發(fā)的方案已經(jīng)變得不太現(xiàn)實(shí),一線人員越來越頻繁的面臨來自用戶的個(gè)性化報(bào)表實(shí)施壓力。實(shí)施團(tuán)隊(duì)迫切要求一個(gè)強(qiáng)大而且

19、易用的二次開發(fā)工具,盡管功能的強(qiáng)大和易用往往存在著一些矛盾。工具整合的需求:自定義查詢?cè)谕瞥龊螅趯?shí)施中得到了一定的應(yīng)用,但局限于出復(fù)雜程度不太高的查詢報(bào)表。IUFO是公司的傳統(tǒng)報(bào)表產(chǎn)品,它更偏重于報(bào)表的管理方面,比如報(bào)表的發(fā)布、審核、校驗(yàn)等等。數(shù)據(jù)倉庫使查詢的應(yīng)用由單數(shù)據(jù)源拓展到了多數(shù)據(jù)源,并且提供定時(shí)同步業(yè)務(wù)數(shù)據(jù)的功能。為了有效地實(shí)現(xiàn)資源共享,結(jié)合發(fā)揮各個(gè)工具的優(yōu)勢(shì),NC決策層一直在推動(dòng)相關(guān)產(chǎn)品的整合。查詢分析軟件發(fā)展潮流的需求:近幾年來,查詢分析、數(shù)據(jù)挖掘、商業(yè)智能的研究不論在企業(yè)應(yīng)用還是在學(xué)術(shù)領(lǐng)域都成為熱點(diǎn),ERP軟件的數(shù)據(jù)建模和查詢建模功能已經(jīng)成為代表產(chǎn)品水平的重要指標(biāo)。入門現(xiàn)在讓我

20、們來看一個(gè)最基本的查詢樣例,作為入門,我們知道在任何ERP系統(tǒng)中都存在公司和用戶的概念,下面我們做一個(gè)查詢某公司下用戶的查詢。進(jìn)入客戶化自定義查詢查詢引擎管理界面 圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 1在“查詢?cè)O(shè)計(jì)”樹下新建一個(gè)目錄,“jl測(cè)試用例”,并在這個(gè)目錄下面創(chuàng)建一個(gè)查詢對(duì)象用戶查詢。 圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 2選擇參數(shù)定義,這里我們定義一個(gè)名為corp,顯示名為“公司”的參數(shù),注意這里的數(shù)據(jù)類型選擇編碼參照,枚舉項(xiàng)中選擇這個(gè)編碼參照的類型,我們將根據(jù)這個(gè)參數(shù)選取的值來確定待選公司,并且在查詢中根據(jù)這個(gè)

21、參數(shù)選取的值來進(jìn)行結(jié)果篩選。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 3制作查詢定義,制作一個(gè)查詢定義的具體流程實(shí)際上就是為了生成一條SQL語句,查詢數(shù)據(jù)源去獲取數(shù)據(jù),但是這個(gè)生成SQL語句的過程被我們用圖形化界面代替了,用戶只需要了解基本的SQL規(guī)則就可以了,無需親自手動(dòng)去寫紛繁復(fù)雜的SQL語句,同時(shí)我們也支持手工SQL。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 4用戶可以通過增加表來增加數(shù)據(jù)字典中的數(shù)據(jù)表,也可以點(diǎn)擊臨時(shí)表引用前面做好的查詢定義對(duì)象,引用查詢定義對(duì)象相當(dāng)于設(shè)計(jì)了一個(gè)復(fù)合查詢,關(guān)于復(fù)合查詢的定義參見第二章第六節(jié)查詢集

22、成。這里我們選擇增加表來增加一個(gè)sm_user表,這張表里面存儲(chǔ)的是NC系統(tǒng)的用戶信息。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 5在選擇字段頁簽下選擇“用戶名”等字段,這里的字段表達(dá)式可以是某表的字段,也可以是字段的運(yùn)算或者函數(shù)處理表達(dá)式,例如:len(sm_user.user_name),就是代表user_name這個(gè)字段的字符串長度。顯示名可以是用戶自定義的字符串,將來顯示在報(bào)表的列表頭區(qū)域。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 6前面我們提到這個(gè)查詢必須按照公司為條件,過濾查詢出來的用戶,實(shí)際上就是為SQL語句生成一個(gè)wh

23、ere條件,我們支持兩種條件,固定和待定,顧名思義固定條件寫好之后就不能變化,而待定條件是跟參數(shù)設(shè)置相關(guān)的,可以根據(jù)用戶輸入?yún)?shù)變化。我們?cè)谶@里選取待定條件,用戶表的公司編碼字段等于前面我們?cè)O(shè)置過的corp。關(guān)于查詢定義的設(shè)計(jì)后面的章節(jié)將有更詳細(xì)的論述,這里只介紹最基本的功能。制作格式設(shè)計(jì)圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 7新建格式設(shè)計(jì)文件夾以及對(duì)象的方式與新建查詢對(duì)象的方法一樣,這里略去不講。生成新的格式設(shè)計(jì)對(duì)象之后可點(diǎn)菜單中的界面模型引用查詢,來綁定我們剛才做好的查詢?cè)O(shè)計(jì)對(duì)象“用戶查詢”。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC

24、s 1 8選取剛才做好的查詢之后我們?cè)邳c(diǎn)擊界面模型格式設(shè)計(jì),這里可以選取我們預(yù)置的幾種界面模型之一,例如這張表我們選取表頭+表體格式。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 9最后點(diǎn)菜單中的瀏覽,讓我們?yōu)g覽一下制作出的第一張報(bào)表,圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 10點(diǎn)瀏覽之后我們會(huì)看到一個(gè)選擇參數(shù)的對(duì)話框,在這個(gè)參數(shù)對(duì)話框中我們可以設(shè)置自己的參數(shù)值,比如我們選取sunny_corp這個(gè)公司,點(diǎn)確定,則可以瀏覽這個(gè)公司下的所有用戶,如下圖。圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 11選擇表頭區(qū)

25、域的公司參照,我們可以瀏覽不同公司下的用戶。至此一個(gè)最簡單的自定義查詢已經(jīng)制作完畢,我們可以將做好的查詢作為獨(dú)立節(jié)點(diǎn)發(fā)布到NC系統(tǒng)下供用戶使用。小結(jié)在本章中我們介紹了查詢引擎的發(fā)展歷史以及產(chǎn)品的需求背景,通過一個(gè)入門樣例,讓用戶初步了解了查詢引擎的基本功能,在后面的章節(jié)中我們將詳細(xì)介紹查詢引擎的各項(xiàng)功能,并通過一些樣例使得用戶能夠使用本產(chǎn)品進(jìn)行快速便捷的二次開發(fā)。下圖是對(duì)查詢引擎開發(fā)流程的一個(gè)示意:圖 STYLEREF 1 s 一 SEQ 圖 * ARABIC s 1 12 查詢建模體系對(duì)象管理對(duì)象樹查詢引擎的管理調(diào)度功能由主界面完成,主界面左側(cè)為一棵對(duì)象樹,樹上掛有代表查詢對(duì)象和界面對(duì)象的節(jié)

26、點(diǎn),右側(cè)為顯示當(dāng)前選中對(duì)象基本屬性的屬性框。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 1 管理調(diào)度主界面 對(duì)象樹(ObjectTree):對(duì)象樹是一個(gè)支持層次管理的數(shù)據(jù)結(jié)構(gòu),它維護(hù)自身的加載、存儲(chǔ)和節(jié)點(diǎn)的目錄管理,每個(gè)節(jié)點(diǎn)的信息主體存儲(chǔ)在數(shù)據(jù)庫的一個(gè)BLOB字段中。對(duì)象樹上的節(jié)點(diǎn)通常分為目錄(Folder)和對(duì)象兩類,并支持快速定位(在樹獲得焦點(diǎn)時(shí)用ctrl-f快捷鍵可彈出查找對(duì)話框,支持按編碼或名稱來模糊查找)。 屬性框(ObjectInspector):一個(gè)自動(dòng)顯示對(duì)象的屬性和取值的控件,取值部分會(huì)根據(jù)屬性的數(shù)據(jù)類型采用不同的渲染器來展示,不同的編輯器來編輯。

27、對(duì)象編輯目錄的編輯操作如下:增加/刪除/修改:在根節(jié)點(diǎn)或目錄節(jié)點(diǎn)之下可以增加目錄,刪除目錄時(shí)會(huì)刪除目錄下的所有對(duì)象。目錄的可修改屬性為目錄名稱。同一目錄下的目錄和對(duì)象不能重名。復(fù)制/剪切/粘貼:在查詢子樹或格式子樹下,可以將一個(gè)目錄及其下屬內(nèi)容從某位置拷貝或移動(dòng)到另一個(gè)位置。對(duì)象分為查詢對(duì)象和格式對(duì)象,其編輯操作如下:增加/刪除/修改:在根節(jié)點(diǎn)或目錄節(jié)點(diǎn)之下可以增加查詢對(duì)象或者界面對(duì)象。前者的屬性為編碼、名稱和數(shù)據(jù)源,后者的屬性為編碼和名稱,其中編碼一經(jīng)使用,就不再建議作任何修改,因?yàn)榇司幋a可能被其它對(duì)象引用。請(qǐng)注意對(duì)象的唯一標(biāo)識(shí)是編碼而不是顯示名稱,一個(gè)查詢對(duì)象或是格式設(shè)計(jì)對(duì)象可以有多個(gè)顯示

28、名稱但是只能有唯一的編碼。復(fù)制/剪切/粘貼:在查詢或格式子樹下,可以將一個(gè)對(duì)象從某位置拷貝或移動(dòng)到另一個(gè)位置。請(qǐng)注意這里的復(fù)制粘貼都是在同一棵樹下的,如果復(fù)制格式設(shè)計(jì)對(duì)象到查詢對(duì)象樹下則會(huì)出錯(cuò)。對(duì)象導(dǎo)入導(dǎo)出導(dǎo)出:選中某個(gè)對(duì)象,可將其導(dǎo)出為XML文件,文件里描述了對(duì)象的所有信息;也可選中某個(gè)目錄,將該目錄下所有的子目錄和對(duì)象都導(dǎo)出到指定位置(保持原有的目錄級(jí)次)。導(dǎo)入:在選中某個(gè)目錄之后,導(dǎo)入功能可用。導(dǎo)出的XML文件,可以導(dǎo)入到當(dāng)前目錄下。此功能可用于對(duì)象的跨數(shù)據(jù)庫復(fù)制。導(dǎo)入時(shí),我們可以選擇單個(gè)文件,也可以選擇一組文件或目錄,導(dǎo)入后會(huì)保留原目錄的級(jí)次結(jié)構(gòu)。需要注意的是:在導(dǎo)出查詢對(duì)象或界面對(duì)象

29、時(shí),需將其引用的查詢對(duì)象一并導(dǎo)出才有意義;導(dǎo)入不能違反對(duì)象主鍵及名稱的唯一性約束。下圖顯示了某查詢對(duì)象所導(dǎo)出的XML文件。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 2 導(dǎo)出XML文件在導(dǎo)入導(dǎo)出的過程中需要注意的一個(gè)問題是數(shù)據(jù)源的問題,在實(shí)際應(yīng)用中經(jīng)常出現(xiàn)這樣的場(chǎng)景:實(shí)施人員在自己的環(huán)境(數(shù)據(jù)源為home)下做了一對(duì)查詢模型設(shè)計(jì)和格式設(shè)計(jì),然后導(dǎo)出這一對(duì)設(shè)計(jì)對(duì)象為xml文件,然后到用戶的環(huán)境(數(shù)據(jù)源為customer)下執(zhí)行導(dǎo)入,發(fā)現(xiàn)無法查出數(shù)據(jù),并且提示“找不到查詢所用數(shù)據(jù)源”,這是因?yàn)閷?dǎo)出成XML文件的時(shí)候,記錄在XML文件中的執(zhí)行數(shù)據(jù)源是home,而客戶的數(shù)據(jù)

30、源名稱是customer,與查詢模型設(shè)計(jì)中的數(shù)據(jù)源不符合,這樣查詢模型就無法到正確的數(shù)據(jù)源下去取數(shù),可以在彈出的提示框“是否修改執(zhí)行數(shù)據(jù)源為當(dāng)前數(shù)據(jù)源”,選擇“是”,則該查詢?cè)O(shè)計(jì)模型的數(shù)據(jù)源被修改為當(dāng)前賬套的數(shù)據(jù)源,這樣就可以在客戶的數(shù)據(jù)源中正確取數(shù)了。數(shù)據(jù)源查詢引擎的數(shù)據(jù)源關(guān)系如下圖所示:圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 3 查詢引擎數(shù)據(jù)源關(guān)系模型圖多數(shù)據(jù)源運(yùn)作機(jī)制:查詢引擎支持這樣的模式NC業(yè)務(wù)在數(shù)據(jù)源A下運(yùn)行,查詢引擎的定義放在數(shù)據(jù)源B,通過引擎定義的查詢可以到數(shù)據(jù)源C去執(zhí)行。注:只有數(shù)據(jù)倉庫下的查詢引擎有切換定義數(shù)據(jù)源和跨庫查詢的功能,客戶化下的查

31、詢引擎只能查詢當(dāng)前賬套數(shù)據(jù)源的數(shù)據(jù)。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 4 切換定義數(shù)據(jù)源各種數(shù)據(jù)源的概念區(qū)分:業(yè)務(wù)數(shù)據(jù)源(上面說的A)通常指當(dāng)前登錄賬套的數(shù)據(jù)源,是NC運(yùn)行所需要的業(yè)務(wù)數(shù)據(jù)源。定義數(shù)據(jù)源(上面說的B)是指查詢引擎自身的系統(tǒng)表所在的數(shù)據(jù)源,執(zhí)行切換功能后,主界面上的對(duì)象樹的內(nèi)容會(huì)作相應(yīng)改變。請(qǐng)注意查詢引擎自身的系統(tǒng)表可以和當(dāng)前的業(yè)務(wù)數(shù)據(jù)源不是同一個(gè)數(shù)據(jù)源,例如當(dāng)前登陸賬套是Account1,數(shù)據(jù)源是datasource1,而查詢引擎的系統(tǒng)表可以不在該數(shù)據(jù)源下,而在另一個(gè)數(shù)據(jù)源datasource2下,datasource2可能是賬套Accou

32、nt2的數(shù)據(jù)源,也可能是任何其他的數(shù)據(jù)源。但是前提是該數(shù)據(jù)源中必須含有查詢引擎自身的系統(tǒng)表。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 5 切換定義數(shù)據(jù)源效果執(zhí)行數(shù)據(jù)源(上面所說到的C)是指該查詢定義取數(shù)的數(shù)據(jù)源,我們知道查詢定義設(shè)計(jì)的最終目的還是去特定的數(shù)據(jù)源查取用戶所需的數(shù)據(jù),執(zhí)行數(shù)據(jù)源就是存儲(chǔ)這些用戶所需數(shù)據(jù)的數(shù)據(jù)源,查詢引擎本身的系統(tǒng)表所在數(shù)據(jù)源可以跟這個(gè)取數(shù)數(shù)據(jù)源不同,也就是說定義數(shù)據(jù)源和查詢數(shù)據(jù)源可以分離。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 6 執(zhí)行數(shù)據(jù)源首選項(xiàng)QE數(shù)據(jù)源的配置在V5.0版本中統(tǒng)一放在查詢引擎環(huán)境變量設(shè)

33、置(又稱首選項(xiàng))這個(gè)節(jié)點(diǎn)里面,該節(jié)點(diǎn)位于客戶化二次開發(fā)工具自定義查詢下,界面如圖2-6所示:圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 7 查詢引擎首選項(xiàng)管理這個(gè)節(jié)點(diǎn)存放查詢引擎運(yùn)行所需要的環(huán)境變量或者首選項(xiàng)變量,這些變量被存儲(chǔ)在后臺(tái)queryengine.xml中,位于nchome/ierp/bin目錄下,由于本文下面的章節(jié)中還有需要涉及到環(huán)境變量設(shè)置的地方,所以這里只提及數(shù)據(jù)源環(huán)境變量的設(shè)置。有效數(shù)據(jù)源:啟動(dòng)中間件時(shí)的所有能夠連接的合法數(shù)據(jù)源,實(shí)際上也就是prop.xml文件中的所有定義過并且能夠正常連接的數(shù)據(jù)源。查詢執(zhí)行可用數(shù)據(jù)源:查詢引擎所能夠引用的執(zhí)行數(shù)據(jù)

34、源列表,查詢引擎管理中所有的查詢模型的取數(shù)數(shù)據(jù)源范圍就在這個(gè)列表中定義。請(qǐng)注意一個(gè)查詢執(zhí)行數(shù)據(jù)源必須是一個(gè)有效數(shù)據(jù)源。數(shù)據(jù)加工數(shù)據(jù)源:查詢引擎中高級(jí)功能“數(shù)據(jù)加工”所使用的數(shù)據(jù)源,二次開發(fā)人員需要特別注意在使用數(shù)據(jù)加工這個(gè)功能時(shí),在獲取數(shù)據(jù)源的時(shí)候有如下語句:getEnv().getDefaultDsn();這句話返回的就是在這里定義的“數(shù)據(jù)加工默認(rèn)數(shù)據(jù)源”。V5版本支持多種數(shù)據(jù)加工數(shù)據(jù)源,這里定義的時(shí)在默認(rèn)情況下的數(shù)據(jù)源,下表列出在各種查詢引擎版本下的數(shù)據(jù)加工數(shù)據(jù)源及其含義。版本號(hào)對(duì)應(yīng)數(shù)據(jù)源及其含義LOGIN查詢引擎單數(shù)據(jù)源版本,數(shù)據(jù)源為當(dāng)前登陸賬套數(shù)據(jù)源Default默認(rèn)數(shù)據(jù)源,在查詢引擎

35、環(huán)境變量設(shè)置中顯式定義的數(shù)據(jù)加工默認(rèn)數(shù)據(jù)源DW查詢引擎的DW版本,數(shù)據(jù)源為查詢引擎環(huán)境變量中定義的DW數(shù)據(jù)源BPM查詢引擎的BPM版本,數(shù)據(jù)源為查詢引擎環(huán)境變量中定義的BPM數(shù)據(jù)源QMD查詢引擎多數(shù)據(jù)源版本,數(shù)據(jù)源為查詢對(duì)象設(shè)計(jì)中查詢對(duì)象的數(shù)據(jù)源表 STYLEREF 1 s 2 SEQ 表格 * ARABIC s 1 1首選項(xiàng)配置的內(nèi)容還包括數(shù)據(jù)倉庫應(yīng)用的一些配置,以及界面操作過程中的與個(gè)性化或性能相關(guān)的設(shè)置,比如后面會(huì)提及的查詢執(zhí)行的最大行數(shù)限制等等。首選項(xiàng)對(duì)應(yīng)的配置文件是%NC-HOME%ierpbinqueryengine.xml,是被全集團(tuán)共享的。資源權(quán)限單數(shù)據(jù)源版查詢引擎支持對(duì)不同公

36、司的不同用戶授予全部權(quán)限或?yàn)g覽權(quán)限。全部權(quán)限是指所有查詢、格式對(duì)象的設(shè)計(jì)和瀏覽權(quán)限,瀏覽權(quán)限是指能夠?yàn)g覽指定格式對(duì)象的報(bào)表展現(xiàn)。圖 STYLEREF 1 s 二 SEQ 圖 * ARABIC s 1 8 查詢引擎權(quán)限分配如果想做更細(xì)粒度的資源權(quán)限控制,比如建立基于創(chuàng)建者的權(quán)限體系,或者對(duì)查詢?cè)O(shè)計(jì)者的可查數(shù)據(jù)字典進(jìn)行限制,則需要通過下文介紹的管理插件和設(shè)計(jì)插件技術(shù)進(jìn)行開發(fā)。查詢模型查詢模型的定義包括參數(shù)定義、SQL設(shè)計(jì)(含交叉定義)、SQL整理、數(shù)據(jù)加工、穿透規(guī)則等幾部分,其中穿透規(guī)則描述的是本查詢與外部查詢的通信關(guān)系,剩余部分都用于描述查詢內(nèi)部的屬性。查詢引擎的查詢模型(數(shù)據(jù)模型)設(shè)計(jì)如下:圖

37、 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 1 查詢模型示意圖查詢?cè)O(shè)計(jì)態(tài)和運(yùn)行態(tài)的基本流程如下圖所示:圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 2 查詢模型流程參數(shù)控制參數(shù)是查詢模型中代表動(dòng)態(tài)信息的元素。在SQL設(shè)計(jì)、SQL整理和數(shù)據(jù)加工中,均可以根據(jù)參數(shù)的不同,對(duì)查詢的定義和執(zhí)行進(jìn)行調(diào)整。過濾型參數(shù):如果創(chuàng)建某個(gè)參數(shù)的作用是根據(jù)其取值的不同改變WHERE條件的設(shè)置,則這類參數(shù)成為過濾型參數(shù),這是最常用的參數(shù)功能(參數(shù)的FAQ可以參見附錄)。參數(shù)定義:用于定義本查詢內(nèi)部引用的所有參數(shù),其中參數(shù)名要保證互不相同。數(shù)據(jù)類型包括自由錄入、枚舉、

38、參照幾種,當(dāng)類型為枚舉時(shí),枚舉項(xiàng)為用“”分隔的枚舉值,或者是一個(gè)單字段的查詢SQL;當(dāng)類型為參照時(shí),枚舉項(xiàng)為基礎(chǔ)參照名,或者是用尖括號(hào)括起的自定義參照的類名。致開發(fā)者:在V5.0中該類應(yīng)該放置在client以上的包中,對(duì)于放置在private中的類,則會(huì)拋出ClassNotFoundException參數(shù)引用:參數(shù)可在SQL設(shè)計(jì)的篩選條件頁簽引用,也可在SQL整理或數(shù)據(jù)加工的嵌入代碼中利用編碼向?qū)б谩_@里當(dāng)篩選條件是待定條件的時(shí)候,雙擊“值”,文本框,就可以彈出參數(shù)選擇對(duì)話框,點(diǎn)擊選擇對(duì)應(yīng)的參數(shù)即可。參數(shù)設(shè)置:運(yùn)行態(tài)要求用戶首先對(duì)參數(shù)進(jìn)行設(shè)置,這與查詢模板的使用類似。當(dāng)報(bào)表引用了多個(gè)查詢時(shí),

39、參數(shù)將通過多頁簽設(shè)置,每個(gè)頁簽代表一個(gè)查詢。圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 3 參數(shù)定義圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 4 參數(shù)引用圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 5 參數(shù)設(shè)置替換型參數(shù):是指參數(shù)名以#開頭并以#結(jié)尾的參數(shù),多用于手工SQL設(shè)計(jì)中,也可用于向?qū)QL的非待定條件部分。這種參數(shù)通常相當(dāng)于preparestatment中的?占位符,關(guān)于替換型參數(shù),后面的章節(jié)中還有詳細(xì)介紹。在設(shè)置替換型參數(shù)的時(shí)候,不輸入值將不被認(rèn)為是忽略此參數(shù)對(duì)應(yīng)的條件。SQL設(shè)計(jì)SQL設(shè)計(jì)包括向

40、導(dǎo)設(shè)計(jì)方式和手工設(shè)計(jì)方式,無論采用哪種,在完成設(shè)計(jì)時(shí)系統(tǒng)均會(huì)對(duì)SQL進(jìn)行合法性校驗(yàn),如未通過校驗(yàn)則不能保存設(shè)計(jì)。作為向?qū)гO(shè)計(jì)的一個(gè)重要組成環(huán)節(jié),我們有必要先介紹一下數(shù)據(jù)字典。數(shù)據(jù)字典前面已經(jīng)提到過,查詢對(duì)象的屬性中包含數(shù)據(jù)源信息,因此在設(shè)計(jì)查詢的時(shí)候需要加載相應(yīng)數(shù)據(jù)源的數(shù)據(jù)字典。我們知道,NC的數(shù)據(jù)庫以DDC作為數(shù)據(jù)字典,但非NC的數(shù)據(jù)庫則沒有DDC,此時(shí),系統(tǒng)會(huì)根據(jù)執(zhí)行數(shù)據(jù)源是NC、IUFO或其它數(shù)據(jù)庫三種情況分別加載不同的數(shù)據(jù)字典,而且這一機(jī)制已經(jīng)預(yù)留了擴(kuò)展的接口,其目的就是可以面向各種類型的數(shù)據(jù)庫執(zhí)行取數(shù)功能。NC數(shù)據(jù)字典提供了統(tǒng)一的數(shù)據(jù)建模平臺(tái),支持對(duì)各種數(shù)據(jù)庫對(duì)象進(jìn)行管理,維護(hù)這些物

41、理對(duì)象的邏輯屬性,并向外系統(tǒng)提供訪問數(shù)據(jù)庫邏輯信息的接口。以查詢引擎為例,查詢對(duì)象的定義是基于數(shù)據(jù)字典進(jìn)行的,而這份數(shù)據(jù)字典來自查詢對(duì)象所指定的數(shù)據(jù)源。由于多數(shù)報(bào)表的列與業(yè)務(wù)數(shù)據(jù)庫的字段存在某種對(duì)應(yīng)關(guān)系,因此數(shù)據(jù)字典的存在有助于提高查詢定義的直觀性和易用性。圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 6 NC數(shù)據(jù)字典NC數(shù)據(jù)字典通常在安裝產(chǎn)品時(shí)候由系統(tǒng)生成,如果想自己為某些數(shù)據(jù)庫對(duì)象生成字典,可以采用數(shù)據(jù)字典管理界面提供的導(dǎo)入方法。導(dǎo)入方式包括三種(詳細(xì)操作可參見數(shù)據(jù)字典導(dǎo)入說明):解析PDM文件(xml格式);解析NC標(biāo)準(zhǔn)建庫腳本;提取數(shù)據(jù)庫元數(shù)據(jù);如果需要給非N

42、C數(shù)據(jù)庫(比如用戶采用的第三方數(shù)據(jù)庫)生成數(shù)據(jù)字典,可以利用PowerDesigner提供的逆向工程功能將庫里的物理表生成PDM文件,修改其中表和字段的中文名稱,然后以xml文件格式存儲(chǔ),再使用上述第一種方法導(dǎo)入。查詢引擎中用到的數(shù)據(jù)字典都以一棵對(duì)象樹的形式存在,樹節(jié)點(diǎn)包括目錄、表、視圖、字段、外鍵等信息,通過雙擊對(duì)象節(jié)點(diǎn)可以協(xié)助錄入SQL語句的成分。向?qū)гO(shè)計(jì)向?qū)гO(shè)計(jì)參考典型SQL的構(gòu)成規(guī)則,充分利用數(shù)據(jù)字典的功能,引導(dǎo)用戶一步步完成SQL的設(shè)計(jì),因此是推薦使用的方式。它由以下六個(gè)環(huán)節(jié)構(gòu)成,其中最后一步“交叉屬性”超出了SQL的涵義,我們?cè)诤竺娴膶iT章節(jié)中進(jìn)行介紹。表定義:即SQL語句中的fr

43、om部分,可以利用數(shù)據(jù)字典選擇庫里的數(shù)據(jù)表,也可以選擇查詢對(duì)象,從而實(shí)現(xiàn)查詢的集成(基于查詢結(jié)果定義新的查詢)。圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 7 表定義圖 STYLEREF 1 s 三 SEQ 圖 * ARABIC s 1 8 增加表(物理表)與臨時(shí)表連接定義:即SQL語句中的join部分(表間連接關(guān)系),支持典型模式和高級(jí)模式,典型模式實(shí)際就是關(guān)系數(shù)據(jù)庫中的單鍵連接,連接字段只有一個(gè),并且操作符都是常見的= B+C(注:這里的A,B,C都是指的列名,不是列顯示名,參見圖4-7)。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1

44、23 預(yù)警設(shè)置界面列表頭定義圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 24表頭設(shè)計(jì)界面有時(shí)候?yàn)榱朔奖銡w類和分組列數(shù)據(jù),我們需要定義多表頭來加強(qiáng)展現(xiàn)。如圖4-15,我們可以根據(jù)自己的需要定義一個(gè)多表頭用來展現(xiàn),在這里,可以很方便的組合表中列,定義好的表頭格式存在數(shù)據(jù)庫中,并有一個(gè)表頭ID與之對(duì)應(yīng)。通過表頭ID該列表頭格式可以被表綁定(綁定了列表頭的表效果參見圖 4-5)。小技巧:定義對(duì)應(yīng)某一查詢的列表頭展現(xiàn)時(shí),我們可以通過參照,選中該查詢來快速引入該查詢定義的列,而不用手工錄入。這里經(jīng)常碰到的一個(gè)問題是,為什么我們定義了一種列格式,在表格控件的屬性設(shè)置中,卻參照不出

45、來這種列格式呢?這通常是因?yàn)樵O(shè)置定義列格式的時(shí)候,列格式樹中葉子節(jié)點(diǎn)的數(shù)目必須與表格控件中綁定結(jié)果集的列數(shù)目一致,否則無法參照出來,這在業(yè)務(wù)上是合理的,試想要給一個(gè)表格控件戴列表頭,實(shí)際上就是改變?cè)瓉淼牧酗@示方式,但是我們并沒有真實(shí)的增加或者減少表格中的列,所以,設(shè)計(jì)的列表頭就必須與原來綁定數(shù)據(jù)集中的列數(shù)保持一致。否則列表頭就會(huì)與真實(shí)的表格列發(fā)生錯(cuò)位。 行表頭定義如果設(shè)置表的綁定數(shù)據(jù)集屬性到一個(gè)定義了第一類交叉(投影交叉)的查詢,那么表中會(huì)出現(xiàn)與查詢中定義的列和行相對(duì)應(yīng)的列頭和行頭。默認(rèn)的列頭和行頭沒有任何附加的格式,如圖4-16所示。圖 STYLEREF 1 s 四 SEQ 圖 * ARAB

46、IC s 1 25 綁定到第一類交叉查詢定義的表就像可以給列分組定義列表頭一樣,我們也可以給行分組定義行表頭。如圖 4-17所示,類似于列表頭的定義,我們也可以合并行,還可以定義行號(hào)顯示與否,行號(hào)顯示的位置,甚至可以為定義好的表頭綁定列表頭。保存后我們可以看到界面上的表已經(jīng)顯示了新定義的行表頭格式。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 26 行表頭設(shè)計(jì)界面圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 27 定義了行表頭格式的表(承圖4-26)預(yù)定義數(shù)據(jù)處理界面模型中支持兩種數(shù)據(jù)預(yù)定義的處理:定義公式列和定義小計(jì)合計(jì)。其中,公式列定義是

47、基于查詢結(jié)果集的,定義的公式列對(duì)于所有綁定該查詢結(jié)果集的控件都是可見的。小計(jì)合計(jì)是基于表控件的,定義的小計(jì)合計(jì)只對(duì)該表起作用,不影響其他綁定到相同數(shù)據(jù)集的控件。公式列點(diǎn)擊數(shù)據(jù)處理菜單下的公式列菜單項(xiàng),就會(huì)彈出如圖 4-19所示的公式列定義界面。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 28 公式列定義界面在查詢結(jié)果集下拉框中選中要定義公式列的數(shù)據(jù)集,如果是添加公式列,則數(shù)據(jù)集中可選的列名會(huì)出現(xiàn)在可選列列表中(如果是預(yù)定義的公式列,則可選列是數(shù)據(jù)集的原始列,如果是運(yùn)行態(tài)定義的公式列,可選列還包括已經(jīng)定義的公式列),雙擊列項(xiàng)可將該列添加到公式表達(dá)式中,公式列中可用函數(shù)

48、和操作符也已列出,均是通過雙擊可以添加到表達(dá)式中。添加公式列需要指定公式列名和公式類型,也可以給公式列指定列格式。公式列表達(dá)式只支持Ascii字符,不支持中文,如果表達(dá)式有誤,則運(yùn)行態(tài)下公式列內(nèi)各行的值均為空。如果是刪除公式列,列表中列出了當(dāng)前數(shù)據(jù)集已定義的公式列,選中即可刪除。修改公式列界面與添加公式列類似。小計(jì)合計(jì)設(shè)計(jì)界面模型時(shí)在表控件的表頭上彈出右鍵菜單,點(diǎn)擊小計(jì)合計(jì)菜單項(xiàng)可彈出設(shè)置小計(jì)合計(jì)的界面,如圖 4-29。其中,根據(jù)表綁定的查詢定義的不同,界面會(huì)稍有區(qū)別,分別說明如下。普通表:可以設(shè)置根據(jù)什么列分組,進(jìn)行小計(jì)合計(jì),以及分組列的升降序;可以設(shè)置小計(jì)合計(jì)計(jì)算與否,以及小計(jì)行和合計(jì)行標(biāo)

49、志展現(xiàn);這里的展現(xiàn)格式可以自行定義,我們默認(rèn)使用的格式是圖中所示,%level%和%value%實(shí)際上都是變量,分別代表小計(jì)的級(jí)次和同一分組的分組值,用戶也可以不使用這種格式,從而自行定義小計(jì)合計(jì)行的展現(xiàn)標(biāo)志格式;可以設(shè)置需要小計(jì)合計(jì)的列,以及統(tǒng)計(jì)運(yùn)算的類型,目前數(shù)值型的列支持的運(yùn)算類型有求和、最大值、最小值、平均值,以及公式;字符型的列支持承前;可以設(shè)置統(tǒng)計(jì)數(shù)據(jù)放置在原始數(shù)據(jù)之前還是放置在后。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 29 小計(jì)合計(jì)設(shè)置圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 30 運(yùn)行效果如上圖所示即是經(jīng)過小計(jì)合計(jì)

50、運(yùn)算的最終結(jié)果,我們?cè)O(shè)置了按照公司名稱和科目名稱進(jìn)行分組計(jì)算小計(jì),這樣我們實(shí)際上就得到兩個(gè)級(jí)次的小計(jì)結(jié)果,圖中的小計(jì)行已經(jīng)按照預(yù)先定義好的展現(xiàn)格式展現(xiàn)出來,計(jì)算合計(jì)的時(shí)候,合計(jì)、最大值、最小值、平均值都非常通俗易懂,都是對(duì)本列進(jìn)行計(jì)算,需要注意的是公式,這里的公式如果引用到別的列,則進(jìn)行計(jì)算的是所引用列當(dāng)前行的值。例如下面的表格,漢族占比列的合計(jì)應(yīng)該設(shè)置為(漢族)/(漢族+滿族),公式就會(huì)計(jì)算4/(4+5),否則就變成了33.3%+50%,達(dá)不到用戶的合計(jì)要求。漢族滿族漢族占比1233.3%3350%合計(jì) 4544.4%表格 STYLEREF 1 s 4 SEQ 表格 * ARABIC s 1

51、 2第一類交叉表(投影交叉表):定義了第一類交叉的查詢結(jié)果集行列結(jié)構(gòu)是固定的,多用在固定格式的報(bào)表中,因此,其小計(jì)合計(jì)也設(shè)計(jì)得稍有區(qū)別:在這種情況下,小計(jì)合計(jì)是根據(jù)表的行頭來進(jìn)行的,它根據(jù)表行頭所示的樹狀結(jié)構(gòu)中樹節(jié)點(diǎn)的級(jí)次來小計(jì)合計(jì),所以,對(duì)于這類表,我們?cè)O(shè)置的是小計(jì)開始級(jí)次和終止級(jí)次,而不是分組列。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 31圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 32如上圖我們按照樹節(jié)點(diǎn)的一級(jí)來進(jìn)行小計(jì),則得到的結(jié)果如下:圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 33小計(jì)合計(jì)設(shè)置界

52、面這里的小計(jì)是針對(duì)一級(jí)樹節(jié)點(diǎn)直屬部門,開發(fā)部門來進(jìn)行分組的。同一個(gè)樹節(jié)點(diǎn)下的子節(jié)點(diǎn)參與小計(jì)運(yùn)算。第二類交叉表:(旋轉(zhuǎn)交叉表)因?yàn)樾D(zhuǎn)交叉表的列結(jié)構(gòu)是動(dòng)態(tài)的,也就是說,本來預(yù)先設(shè)置好的小計(jì)統(tǒng)計(jì)列,進(jìn)行旋轉(zhuǎn)交叉之后,那么原來的列被分成了很多新的列,小計(jì)合計(jì)怎樣計(jì)算呢?這個(gè)問題在V5得到了解決,用戶只要在預(yù)定義小計(jì)合計(jì)的時(shí)候選擇了該列,那么經(jīng)過旋轉(zhuǎn)過后的交叉列中,與原先列相關(guān)的新列,都會(huì)執(zhí)行原來列上的小計(jì)合計(jì)運(yùn)算。舉例說明如下:圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 34 原始表圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 35 交叉設(shè)置如圖

53、所示的交叉設(shè)置,民族列被設(shè)置到交叉列上去,我們?cè)O(shè)置小計(jì)合計(jì)如下:圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 36 小計(jì)合計(jì)設(shè)置人數(shù)列被設(shè)置為交叉值,旋轉(zhuǎn)過后與人數(shù)相關(guān)的列有四列,如圖:圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 37旋轉(zhuǎn)交叉后小計(jì)合計(jì)結(jié)果針對(duì)這四列,我們都進(jìn)行了原先在人數(shù)列上設(shè)置過的合計(jì)運(yùn)算,在合計(jì)行中呈現(xiàn)出來。報(bào)表瀏覽對(duì)于已經(jīng)格式設(shè)計(jì)完畢的界面模型,我們可以運(yùn)行該界面來查看結(jié)果。界面初始化我們發(fā)出運(yùn)行某界面的命令后,在界面呈現(xiàn)出來之前,系統(tǒng)會(huì)做一系列的初始化工作:根據(jù)界面模型引用的查詢定義查詢得到對(duì)應(yīng)的結(jié)果集,由界面定義

54、構(gòu)造出界面,根據(jù)數(shù)據(jù)集綁定屬性將控件綁定到對(duì)應(yīng)的結(jié)果集,當(dāng)所有的初始化工作都完成以后,界面才呈現(xiàn)在我們面前。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 38 查詢參數(shù)設(shè)置界面如果界面引用的查詢定義里定義了查詢參數(shù),那么在初始化界面工作去后臺(tái)查詢結(jié)果集之前,會(huì)要求我們輸入查詢參數(shù)。如當(dāng)我們運(yùn)行圖4-5 中定義的界面模型(它引用的查詢?nèi)鐖D 4-2所示)時(shí),因?yàn)槠湟玫牟樵兌x中“公司”是定義了參數(shù)的,所以系統(tǒng)會(huì)彈出查詢參數(shù)設(shè)置界面讓我們輸入查詢參數(shù),如圖 4-21所示。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 39 界面模型運(yùn)行結(jié)果(承圖

55、4-5)數(shù)據(jù)處理界面模型在運(yùn)行態(tài)提供了幾種數(shù)據(jù)處理的功能:查找,排序,過濾,公式列,小計(jì)合計(jì),交叉和穿透。其中,查找,排序,過濾和公式列是基于數(shù)據(jù)集的,這些操作對(duì)于所有綁定到被操作數(shù)據(jù)集的控件都是起作用的,放在數(shù)據(jù)處理菜單下,而小計(jì)合計(jì),交叉和穿透是基于表控件的,放在表控件表頭右鍵菜單下,只對(duì)表控件本身的數(shù)據(jù)展現(xiàn)起作用,不影響其他控件。查找圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 40 查找設(shè)置界面選中要進(jìn)行查找的數(shù)據(jù)集,以及要查找的字段,輸入查找值就可以進(jìn)行查找,如果數(shù)據(jù)集中存在符合查找條件的記錄,數(shù)據(jù)集會(huì)滾動(dòng)到這一條記錄,同時(shí)在界面控件上體現(xiàn)出來。查找提供兩種

56、選項(xiàng),用戶自定義和枚舉值,用戶自定義是指查找的字符串是由用戶自由輸入的,枚舉值則是指枚舉查找列中所有的存在且不重復(fù)的值,供用戶選擇。排序圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 41 排序設(shè)置界面選中要進(jìn)行排序的數(shù)據(jù)集,選擇排序列及升降序,可以對(duì)數(shù)據(jù)集進(jìn)行排序(相當(dāng)于Order By)。過濾過濾設(shè)置分兩種類型,疊加過濾和重新過濾。疊加過濾是在前過濾結(jié)果的基礎(chǔ)上再按指定條件進(jìn)行過濾得到新的結(jié)果;而重新過濾則是去掉了之前設(shè)置的過濾條件,在原始結(jié)果集的基礎(chǔ)上按指定條件過濾得到新的結(jié)果。過濾條件的設(shè)置有普通模式和高級(jí)模式,普通模式的條件設(shè)置類似于查找設(shè)置,而高級(jí)模式的過濾

57、條件設(shè)置支持帶參數(shù)表達(dá)式的過濾,其表達(dá)式的定義類似與公式列表達(dá)式的定義,但必須是邏輯表達(dá)式。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 42 過濾設(shè)置界面公式列,小計(jì)合計(jì)運(yùn)行態(tài)公式列定義和小計(jì)合計(jì)定義類似于預(yù)定義數(shù)據(jù)處理中所述,不再贅述。交叉圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 43 第一類交叉(投影交叉設(shè)置界面)圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 44 第二類交叉(旋轉(zhuǎn)交叉設(shè)置界面)數(shù)據(jù)交叉的意義和說明參見第三章第3節(jié)。這里的交叉是用于在界面運(yùn)行態(tài)下,用戶瀏覽報(bào)表時(shí)想按照不同交叉設(shè)置瀏覽數(shù)據(jù),或

58、者說按照不同維度來瀏覽同一個(gè)結(jié)果集的數(shù)據(jù)時(shí),就可以在運(yùn)行時(shí)動(dòng)態(tài)改變交叉設(shè)置。界面運(yùn)行態(tài)下的表控件支持交叉操作:如果綁定了定義第一類交叉(投影交叉)的查詢定義,則表控件支持的是第一類交叉;如果綁定的是其他查詢定義,表控件支持第二類交叉。穿透圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 45 穿透規(guī)則選取界面穿透的意義和說明參見第三章第4.3小節(jié)。界面運(yùn)行態(tài)上如果某表控件綁定到定義了穿透規(guī)則的查詢定義,則該表控件支持穿透操作?;赝?恢復(fù)界面還提供了回退/恢復(fù)功能。在對(duì)數(shù)據(jù)集進(jìn)行了一系列數(shù)據(jù)處理操作之后,可以利用恢復(fù)功能恢復(fù)到原始狀態(tài)。表控件提供了回退功能可以撤銷交叉和穿透

59、等操作。關(guān)于排序,過濾等功能不起作用實(shí)施在開發(fā)報(bào)表的過程中經(jīng)常反映為什么排序,過濾功能不起作用,這里需要做一下解釋,我們的過濾,排序等功能是針對(duì)數(shù)據(jù)結(jié)果集的,而如果您在表格上面做了如小計(jì)合計(jì),交叉,這樣的操作,我們就會(huì)重新生成一個(gè)結(jié)果集,然后將這個(gè)結(jié)果集綁定到當(dāng)前表格上面去,如果您在原先的結(jié)果集上面做排序過濾,那么現(xiàn)在的表格是不會(huì)為您呈現(xiàn)變動(dòng)結(jié)果的。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 46控件連動(dòng)控件連動(dòng)分同步連動(dòng)和主子連動(dòng)兩種。同步連動(dòng)當(dāng)多個(gè)控件綁定到一個(gè)數(shù)據(jù)集時(shí),當(dāng)對(duì)該數(shù)據(jù)集進(jìn)行了查找,排序,過濾,公式列等操作時(shí),數(shù)據(jù)集的變化會(huì)通知到每個(gè)控件,是它們相應(yīng)

60、的更新展現(xiàn),體現(xiàn)出同步的連動(dòng)。圖4-29上的表格和圖表引用了相同數(shù)據(jù)集,因此當(dāng)進(jìn)行排序、過濾等數(shù)據(jù)集操作的時(shí)候,表和圖上的數(shù)據(jù)會(huì)出現(xiàn)完全同步的變化。同樣,在圖上點(diǎn)擊某個(gè)系列時(shí),表也會(huì)相應(yīng)的定位到該系列。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 47表-圖同步互動(dòng)主從連動(dòng)如果兩個(gè)數(shù)據(jù)集之間建立了主從關(guān)系,則分別綁定到這兩個(gè)數(shù)據(jù)集的控件之間就形成了主從連動(dòng)的關(guān)系。如圖 4-22展現(xiàn)的就是兩組建立了主從連動(dòng)關(guān)系的表控件,當(dāng)主表選中某行時(shí),子表則相應(yīng)的展現(xiàn)出與主表記錄對(duì)應(yīng)的所有子表記錄。圖 STYLEREF 1 s 四 SEQ 圖 * ARABIC s 1 48報(bào)表打印查

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論