NC查詢引擎使用詳解.doc_第1頁
NC查詢引擎使用詳解.doc_第2頁
NC查詢引擎使用詳解.doc_第3頁
NC查詢引擎使用詳解.doc_第4頁
NC查詢引擎使用詳解.doc_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第 1 頁 用友用友 NCNC 二次開發(fā)平臺二次開發(fā)平臺 查詢引擎查詢引擎 目目 錄錄 第一章前言 1 第 2 頁 1 產(chǎn)品的前身 1 2 產(chǎn)品的需求背景 1 第二章查詢引擎的管理 2 1 對象樹管理 2 1 1目錄管理 2 1 2對象管理 3 1 3導入導出 3 2 切換定義數(shù)據(jù)源 4 第三章查詢引擎的查詢模型 5 1 參數(shù)控制 5 2 SQL 設計 7 2 1數(shù)據(jù)字典 7 2 2向?qū)гO計 8 2 3手工設計 12 3 數(shù)據(jù)交叉 13 3 1第一類 投影 交叉 13 3 2第二類 旋轉(zhuǎn) 交叉 14 4 代碼嵌入 16 4 1SQL整理 16 4 2數(shù)據(jù)加工 18 4 3穿透規(guī)則 22 5 查詢?yōu)g覽 25 5 1查詢執(zhí)行與展現(xiàn) 25 5 2數(shù)據(jù)導出 25 5 3創(chuàng)建物化表 25 第四章查詢引擎的界面模型 27 1 引用查詢 28 2 格式設計 28 2 1控件管理 29 2 2行列格式設計 33 2 3預定義數(shù)據(jù)處理 36 3 界面運行 38 3 1界面初始化 38 3 2數(shù)據(jù)處理 39 3 3控件連動 42 3 4報表打印 43 3 5功能節(jié)點掛接 43 附錄 45 第 3 頁 1 查詢引擎 FAQ 之參數(shù)篇 45 參考文獻 47 第 1 頁 第一章第一章 前言前言 查詢引擎的功能定位 一個面向高級實施人員和專業(yè)開發(fā)人員的查詢建模產(chǎn)品 可以全面 支持復雜查詢的設計和個性化的報表展現(xiàn) 1 產(chǎn)品的前身產(chǎn)品的前身 查詢引擎在功能流程和查詢模型方面參考了自定義查詢的理念 在界面設計方面汲取了 Form Design 的思路 同時融入了數(shù)據(jù)倉庫的技術 并依賴于通用的 NC 數(shù)據(jù)字典 DDC 1 自定義查詢 NC 于 2000 年開始研發(fā)的一個面向中級實施人員和二次開發(fā)人員的 查詢報表工具 由查詢管理中心 報表格式設計 報表瀏覽 報表權(quán)限控制和數(shù)據(jù) 加工廠幾個模塊構(gòu)成 此工具首次提出了基于數(shù)據(jù)字典來管理數(shù)據(jù)并建立查詢對象 的思路 能夠提供比較豐富的查詢分析 數(shù)據(jù)加工和報表展現(xiàn)功能 2 Form Design NC 于 2003 年開始研發(fā)的一種界面開發(fā)模式 定位于支持功能建模 3 數(shù)據(jù)字典 一種管理數(shù)據(jù)庫邏輯結(jié)構(gòu)的機制 存在于物理數(shù)據(jù)庫和用戶接口之間 NC 于 2002 年開始研發(fā)數(shù)據(jù)字典 最開始只用于自定義查詢 后來經(jīng)過功能強化 和逐步推廣 成為現(xiàn)在的 DDC Data Dictionary Control 其功能包括數(shù)據(jù)庫對象 的管理與編輯 數(shù)據(jù)字典的解析生成等 4 數(shù)據(jù)倉庫 NC 的一個獨立產(chǎn)品 能夠按照指定的入倉規(guī)則從多個業(yè)務數(shù)據(jù)庫抽取 數(shù)據(jù) 并通過入倉服務定期把數(shù)據(jù)加載到數(shù)據(jù)倉庫 2 產(chǎn)品的需求背景產(chǎn)品的需求背景 1 復雜查詢報表的需求 在實際的業(yè)務查詢中 開發(fā)人員經(jīng)常會遇到以下一些棘手的 問題 復雜的 SQL 從不同的查詢條件得到完全不同的查詢結(jié)果 查詢結(jié)果的 復合 業(yè)務邏輯代碼和大量數(shù)據(jù)加工算法的介入 各種各樣的數(shù)據(jù)交叉和數(shù)據(jù)處理 手段等等 在展現(xiàn)格式方面 通常要求靈活 友好 可視化 個性化的設計界面 豐富的展現(xiàn)控件和統(tǒng)計圖表 依據(jù)數(shù)據(jù)對單元格 列表頭和行表頭的格式進行設置 表單控件之間的連動等等 這一切都對早期的查詢報表工具提出了艱巨的要求 2 二次開發(fā)的需求 隨著 NC 對行業(yè)用戶的拓展 由業(yè)務組程序員在通用軟件中針對 每個查詢報表需求進行開發(fā)的方案已經(jīng)變得不太現(xiàn)實 一線人員越來越頻繁的面臨 來自用戶的個性化報表實施壓力 實施團隊迫切要求一個強大而且易用的二次開發(fā) 工具 盡管功能的強大和易用往往存在著一些矛盾 3 工具整合的需求 自定義查詢在推出后 在實施中得到了一定的應用 但局限于出 復雜程度不太高的查詢報表 IUFO 是公司的傳統(tǒng)報表產(chǎn)品 它更偏重于報表的管 理方面 比如報表的發(fā)布 審核 校驗等等 數(shù)據(jù)倉庫使查詢的應用由單數(shù)據(jù)源拓 展到了多數(shù)據(jù)源 并且提供定時同步業(yè)務數(shù)據(jù)的功能 為了有效地實現(xiàn)資源共享 結(jié)合發(fā)揮各個工具的優(yōu)勢 NC 決策層一直在推動相關產(chǎn)品的整合 4 查詢分析軟件發(fā)展潮流的需求 近幾年來 查詢分析 數(shù)據(jù)挖掘 商業(yè)智能的研究 不論在企業(yè)應用還是在學術領域都成為熱點 ERP 軟件的數(shù)據(jù)建模和查詢建模功能 第 2 頁 已經(jīng)成為代表產(chǎn)品水平的重要指標 第 3 頁 第二章第二章 查詢引擎的查詢引擎的管理管理 1 對象樹管理對象樹管理 查詢引擎的管理調(diào)度功能由主界面完成 主界面左側(cè)為一棵對象樹 樹上掛有代表查詢對 象和界面對象的節(jié)點 右側(cè)為顯示當前選中對象基本屬性的屬性框 圖 2 1 管理調(diào)度主界面 對象樹 ObjectTree 對象樹是一個支持層次管理的數(shù)據(jù)結(jié)構(gòu) 它維護自身的加載 存儲和節(jié)點的目錄管理 每個節(jié)點的信息主體存儲在數(shù)據(jù)庫的一個 BLOB 字段中 對象樹上 的節(jié)點通常分為目錄 Folder 和對象兩類 并支持快速定位 在樹獲得焦點時用 ctrl f 快捷鍵可彈出查找對話框 支持按編碼或名稱來模糊查找 屬性框 ObjectInspector 一個自動顯示對象的屬性和取值的控件 取值部分會根 據(jù)屬性的數(shù)據(jù)類型采用不同的渲染器來展示 不同的編輯器來編輯 1 1 目錄管理 1 增加 刪除 修改 在根節(jié)點或目錄節(jié)點之下可以增加目錄 刪除目錄時會刪除目錄 第 4 頁 下的所有對象 目錄的可修改屬性為目錄名稱 同一目錄下的目錄和對象不能重名 2 復制 剪切 粘貼 在查詢子樹或格式子樹下 可以將一個目錄及其下屬內(nèi)容從某位 置拷貝或移動到另一個位置 1 2 對象管理 1 增加 刪除 修改 在根節(jié)點或目錄節(jié)點之下可以增加查詢對象或者界面對象 前者 的屬性為編碼 名稱和數(shù)據(jù)源 后者的屬性為編碼和名稱 其中編碼一經(jīng)使用 就 不再建議作任何修改 因為此編碼可能被其它對象引用 2 復制 剪切 粘貼 在查詢或格式子樹下 可以將一個對象從某位置拷貝或移動到另 一個位置 1 3 導入導出 1 導出 選中某個對象 可將其導出為 XML 文件 文件里描述了對象的所有信息 也可選中某個目錄 將該目錄下所有的子目錄和對象都導出到指定位置 保持原有 的目錄級次 2 導入 在選中某個目錄之后 導入功能可用 導出的 XML 文件 可以導入到當前 目錄下 此功能可用于對象的跨數(shù)據(jù)庫復制 導入時 我們可以選擇單個文件 也 可以選擇一組文件或目錄 導入后會保留原目錄的級次結(jié)構(gòu) 需要注意的是 a 在 導出查詢對象或界面對象時 需將其引用的查詢對象一并導出才有意義 b 導入 不能違反對象主鍵及名稱的唯一性約束 下圖顯示了某查詢對象所導出的 XML 文 件 第 5 頁 圖 2 2 導出 XML 文件 2 切換定義數(shù)據(jù)源切換定義數(shù)據(jù)源 多數(shù)據(jù)源運作機制 查詢引擎支持這樣的模式 NC 業(yè)務在數(shù)據(jù)源 A 下運行 查詢引 擎的定義放在數(shù)據(jù)源 B 通過引擎定義的查詢可以到數(shù)據(jù)源 C 去執(zhí)行 注 只有數(shù)據(jù)倉庫下的查詢引擎有切換定義數(shù)據(jù)源和跨庫查詢的功能 客戶化下的查詢引 擎只能查詢當前賬套數(shù)據(jù)源的數(shù)據(jù) 圖 2 3 切換定義數(shù)據(jù)源 定義數(shù)據(jù)源 上面說的 B 是指查詢引擎自身的系統(tǒng)表所在的數(shù)據(jù)源 執(zhí)行切換功能后 主界面上的對象樹的內(nèi)容會作相應改變 第 6 頁 圖 2 4 切換定義數(shù)據(jù)源效果 第 7 頁 第三章第三章 查詢引擎的查詢模型查詢引擎的查詢模型 查詢模型的定義包括參數(shù)定義 SQL 設計 含交叉定義 SQL 整理 數(shù)據(jù)加工 穿透規(guī) 則等幾部分 其中穿透規(guī)則描述的是本查詢與外部查詢的通信關系 剩余部分都用于描述 查詢內(nèi)部的屬性 查詢引擎的查詢模型 數(shù)據(jù)模型 設計如下 查詢設計態(tài)和運行態(tài)的基本流程如下圖所示 圖 3 1 查詢模型流程 1 參數(shù)控制參數(shù)控制 參數(shù)是查詢模型中代表動態(tài)信息的元素 在 SQL 設計 SQL 整理和數(shù)據(jù)加工中 均可以根 據(jù)參數(shù)的不同 對查詢的定義和執(zhí)行進行調(diào)整 第 8 頁 過濾型參數(shù) 如果創(chuàng)建某個參數(shù)的作用是根據(jù)其取值的不同改變 WHERE 條件的設置 則 這類參數(shù)成為過濾型參數(shù) 這是最常用的參數(shù)功能 參數(shù)的應用可以參見附錄 1 參數(shù)定義 用于定義本查詢內(nèi)部引用的所有參數(shù) 其中參數(shù)名要保證互不相同 數(shù)據(jù)類型包括自由錄入 枚舉 參照幾種 當類型為枚舉時 枚舉項為用 分隔的枚舉值 或者是一個單字段的查詢 SQL 當類型為參照時 枚舉 項為基礎參照名 或者是用尖括號括起的自定義參照的類名 2 參數(shù)引用 參數(shù)可在 SQL 設計的篩選條件頁簽引用 也可在 SQL 整理或數(shù)據(jù) 加工的嵌入代碼中利用編碼向?qū)б?3 參數(shù)設置 運行態(tài)要求用戶首先對參數(shù)進行設置 這與查詢模板的使用類似 當報表引用了多個查詢時 參數(shù)將通過多頁簽設置 每個頁簽代表一個查詢 圖 3 2 參數(shù)定義 圖 3 3 參數(shù)引用 第 9 頁 圖 3 4 參數(shù)設置 2 SQL 設計設計 SQL 設計包括向?qū)гO計方式和手工設計方式 無論采用哪種 在完成設計時系統(tǒng)均會對 SQL 進行合法性校驗 如未通過校驗則不能保存設計 作為向?qū)гO計的一個重要組成環(huán)節(jié) 我們有必要先介紹一下數(shù)據(jù)字典 2 1 數(shù)據(jù)字典 前面已經(jīng)提到過 查詢對象的屬性中包含數(shù)據(jù)源信息 因此在設計查詢的時候需要加載相 應數(shù)據(jù)源的數(shù)據(jù)字典 我們知道 NC 的數(shù)據(jù)庫以 DDC 作為數(shù)據(jù)字典 但非 NC 的數(shù)據(jù)庫 則沒有 DDC 此時 系統(tǒng)會根據(jù)執(zhí)行數(shù)據(jù)源是系統(tǒng)會根據(jù)執(zhí)行數(shù)據(jù)源是 NC IUFO 或其它數(shù)據(jù)庫三種情況分別加或其它數(shù)據(jù)庫三種情況分別加 載不同的數(shù)據(jù)字典載不同的數(shù)據(jù)字典 而且這一機制已經(jīng)預留了擴展的接口 其目的就是可以面向各種類型 的數(shù)據(jù)庫執(zhí)行取數(shù)功能 NC 數(shù)據(jù)字典提供了統(tǒng)一的數(shù)據(jù)建模平臺 支持對各種數(shù)據(jù)庫對象進行管理 維護這些物 理對象的邏輯屬性 并向外系統(tǒng)提供訪問數(shù)據(jù)庫邏輯信息的接口 以查詢引擎為例 查詢查詢 對象的定義是基于數(shù)據(jù)字典進行的對象的定義是基于數(shù)據(jù)字典進行的 而這份數(shù)據(jù)字典來自查詢對象所指定的數(shù)據(jù)源 由于 多數(shù)報表的列與業(yè)務數(shù)據(jù)庫的字段存在某種對應關系 因此數(shù)據(jù)字典的存在有助于提高查 詢定義的直觀性和易用性 第 10 頁 圖 3 5 NC 數(shù)據(jù)字典 NC 數(shù)據(jù)字典通常在安裝產(chǎn)品時候由系統(tǒng)生成由系統(tǒng)生成 如果想自己為某些數(shù)據(jù)庫對象生成字典 可以采用數(shù)據(jù)字典管理界面提供的導入方法 導入方式包括三種 詳細操作可參見 數(shù)據(jù) 字典導入說明 1 解析 PDM 文件 xml 格式 2 解析 NC 標準建庫腳本 3 提取數(shù)據(jù)庫元數(shù)據(jù) 如果需要給非 NC 數(shù)據(jù)庫 比如用戶采用的第三方數(shù)據(jù)庫 生成數(shù)據(jù)字典 可以利用 PowerDesigner 提供的逆向工程功能將庫里的物理表生成 PDM 文件 修改其中表和字段的 中文名稱 然后以 xml 文件格式存儲 再使用上述第一種方法導入 查詢引擎中用到的數(shù)據(jù)字典都以一棵對象樹的形式存在 樹節(jié)點包括目錄 表 視圖 字 段 外鍵等信息 通過雙擊對象節(jié)點可以協(xié)助錄入 SQL 語句的成分 2 2 向?qū)гO計 向?qū)гO計參考典型 SQL 的構(gòu)成規(guī)則 充分利用數(shù)據(jù)字典的功能 引導用戶一步步完成 SQL 的設計 因此是推薦使用的方式 它由以下六個環(huán)節(jié)構(gòu)成 其中最后一步 交叉屬性 超 出了 SQL 的涵義 我們在后面的專門章節(jié)中進行介紹 1 表定義 即 SQL 語句中的 from 部分 可以利用數(shù)據(jù)字典選擇庫里的數(shù)據(jù)表 也可以選擇查詢對象 從而實現(xiàn)查詢的集成 基于查詢結(jié)果定義新的查詢 2 連接定義 即 SQL 語句中的 join 部分 表間連接關系 支持單鍵連接和多鍵 連接兩種模式 第 11 頁 3 字段定義 即 SQL 語句中的 select 部分 可以定義任何 SQLSERVER 語法支 持的查詢表達式 但要保證字段別名不重復且使用規(guī)范名稱 以字母開頭 由 字母 數(shù)字 下劃線組成的字符串 且不能使用 SQL 保留字 如果使用了聚 集函數(shù) 則由系統(tǒng)自動完成 group by 部分 4 篩選條件定義 即 SQL 語句中的 where 部分 可定義確定條件和待定條件 秘笈 如果是待定條件 在值編輯框獲得焦點時雙擊編輯框可彈出參數(shù)界面并 作引用 或者在值編輯框獲得焦點時按 F12 鍵彈出參數(shù)引用框 如果是固定 條件 在值編輯框獲得焦點時按 F11 鍵可彈出環(huán)境變量引用框 按 F12 鍵可彈 出所引用的基礎數(shù)據(jù)表的參照 對于在查詢字段里使用了聚集函數(shù)的 SQL 設計 篩選條件可能需要使用 having 子句 Having 頁簽默認是隱藏的 可以在查詢定義框的南部面板按 Ctrl Shift 鼠標左鍵彈出隱藏的 Having 頁簽 5 排序字段定義 即 SQL 語句中的 order by 部分 6 數(shù)據(jù)交叉屬性 交叉是一種常用的多維數(shù)據(jù)分析手段 詳見后文 秘笈 向?qū)гO計完成后在查詢定義框的南部面板鼠標雙擊可彈出向?qū)傻牡刃?SQL 待定條件全用 1 1 代替 圖 3 6 表定義 第 12 頁 圖 3 7 增加表 物理表 與臨時表 圖 3 8 連接定義 圖 3 9 字段定義 第 13 頁 圖 3 10 表達式生成器 圖 3 11 篩選條件定義 典型模式參見圖 3 3 圖 3 12 排序字段定義 第 14 頁 2 3 手工設計 手工設計是支持自由 SQL 的方式 由于復雜 SQL 在解析 適配 執(zhí)行等方面的不穩(wěn)定性 較大 因此不推薦普通用戶使用 手工設計分為以下兩個環(huán)節(jié) 1 SQL 錄入 用戶可以在數(shù)據(jù)字典的輔助下錄入 SQL 語句 要求遵循 SQLSERVER 語法 如圖 3 13 注意 我們在 SQL 定義里用到了一個替換型參數(shù) pk corp 關于替換 型參數(shù)的具體說明參見附錄 2 字段顯示名設置 系統(tǒng)通過對用戶錄入 SQL 的解析獲得字段信息 并向用戶提供輸入 字段顯示名的機會 顯示名的默認值與查詢字段的物理名相同 圖 3 13 SQL 錄入 圖 3 14 字段顯示名設置 第 15 頁 3 數(shù)據(jù)交叉數(shù)據(jù)交叉 3 1 第一類 投影 交叉 投影交叉 假定有一個查詢 SQL 其查詢結(jié)果是單行單列的匯總值 另外還有兩組 WHERE 條件的序列 分別為橫向序列 WhereX1 WhereX2 WhereXn 和縱向序列 WhereY1 WhereY2 WhereYn 則數(shù)據(jù)矩陣 A aij 對應的結(jié)果集成為投影交叉 如果 aij是 WhereXi和 WhereYj同時作用在上述 SQL 上獲得的結(jié)果 比如 某查詢用于某公司下各部門各民族的人數(shù) 原始 SQL 由查詢向?qū)傻牡刃?SQL 為 select bd deptdoc deptname as deptname bd defdoc docname as docname count bd psndoc pk psndoc as psnno from bd deptdoc left outer join bd psndoc on bd deptdoc pk deptdoc bd psndoc pk deptdoc left outer join bd accpsndoc on bd psndoc pk psndoc bd accpsndoc pk psndoc left outer join bd defdoc on bd accpsndoc nationality bd defdoc pk defdoc where bd deptdoc pk corp group by bd deptdoc deptname bd defdoc docname 查出的結(jié)果如下表所示 圖 3 15 原始數(shù)據(jù) 無交叉 現(xiàn)在我們把查詢字段中只保留人數(shù) count bd psndoc psncode 一項 然后進行如下的投影交 叉設置 第 16 頁 圖 3 16 投影交叉設置 則交叉后的結(jié)果如下表所示 圖 3 17 投影交叉結(jié)果 3 2 第二類 旋轉(zhuǎn) 交叉 旋轉(zhuǎn)交叉 此類交叉用于顯示表中某幾個字段 稱為交叉值字段 的統(tǒng)計值 并將其分 組放置在查詢結(jié)果中 一組列在數(shù)據(jù)表的左側(cè) 稱為交叉行字段 一組列 稱為交叉列字 段 旋轉(zhuǎn)到數(shù)據(jù)表的上部成為列表頭 統(tǒng)計值則放在對應的交叉單元 關于旋轉(zhuǎn)交叉的更細節(jié)的內(nèi)容 請參考李媛媛所著的 交叉表使用說明 兩類交叉的最大差別在于 第一類交叉屬于查詢行為 適用于行列設置都已在表樣中固定 的報表 其交叉結(jié)果嚴格遵循表樣格式 其行列結(jié)構(gòu)不會受查詢數(shù)據(jù)的影響 第二類交叉 屬于數(shù)據(jù)加工行為 其交叉后的行列結(jié)構(gòu)在查詢出數(shù)據(jù)之前不可預料 多用于完全真實地 對原始數(shù)據(jù)進行動態(tài)處理 沿用 3 1 使用的例子 假定我們進行如下的旋轉(zhuǎn)交叉設置 其中交叉砝碼的意義是代表交 叉值字段的位置 它只能出現(xiàn)在交叉行字段或交叉列字段當中 第 17 頁 圖 3 18 旋轉(zhuǎn)交叉設置 則交叉后的結(jié)果如下表所示 圖 3 19 旋轉(zhuǎn)交叉結(jié)果 在旋轉(zhuǎn)交叉設置界面上單擊行 列 值標簽 在圖 3 18 中用藍色框標示的位置 可彈 出交叉行列復合維度設置和是否小計的設置框 第 18 頁 圖 3 20 旋轉(zhuǎn)交叉結(jié)果 設置了小計 4 代碼嵌入代碼嵌入 4 1 SQL 整理 SQL 整理 SQL Repair 指在 SQL 查詢之前 對 SQL 所作的調(diào)整 通常會根據(jù)參數(shù)的 不同 對查詢的表 字段或條件等信息進行增補或修改 SQL 整理的具體內(nèi)容由內(nèi)嵌的代碼片段描述 這與后面將介紹的數(shù)據(jù)加工和穿透規(guī)則一樣 代碼的錄入可通過編碼向?qū)f(xié)助完成 盡管如此 這幾種功能仍然推薦由高級實施人員或 程序員使用 第 19 頁 圖 3 21 SQL 整理代碼 在圖示的 SQL 整理代碼中 表達了這樣一個整理愿望 當參數(shù) detail 取值為 Y 時 引擎會在本查詢對象已完成的 SQL 設計基礎上多查詢一張表 bd defdoc 和兩個字段 檔案編碼 檔案名稱 從而獲得更明細的查詢信息 如果該參數(shù)取值不為 Y 則仍 然按照 SQL 設計的定義去執(zhí)行查詢 以下簡單介紹幾種 SQL 整理算法的編碼向?qū)褂梅椒?1 追加查詢表 參數(shù)為待追加的表物理名 圖 3 22 追加表向?qū)?2 追加連接條件 與追加表同時使用 參數(shù)為連接模式 追加表物理名和追加的 表間連接條件 第 20 頁 圖 3 23 追加連接條件向?qū)?3 追加查詢字段 與追加表同時使用 參數(shù)為追加字段的表達式 顯示名和別名 圖 3 24 追加字段向?qū)?4 按參數(shù)追加條件 根據(jù)參數(shù)取值的不同追加不同的篩選條件 參數(shù)為參數(shù)名和 篩選字段 圖 3 25 按參數(shù)追加條件向?qū)?4 2 數(shù)據(jù)加工 查詢結(jié)果集 ResultSet 由二維數(shù)據(jù)集合 數(shù)據(jù)體 及其列信息 元數(shù)據(jù) 包括列名 第 21 頁 列數(shù)據(jù)類型等信息 構(gòu)成的一個數(shù)據(jù)載體 查詢引擎中使用的結(jié)果集為 Borland 公司開發(fā) 的 DataSet 數(shù)據(jù)加工 Data Process 數(shù)據(jù)加工是指某個 或某幾個 結(jié)果集在經(jīng)過一系列加工 算法的變換后得到另一個結(jié)果集 而后者通常是業(yè)務上要求的展現(xiàn)結(jié)果 相關的算法又稱 為加工濾鏡 濾鏡通常支持輸入多個結(jié)果集和輸出一個結(jié)果集 并可以嵌套使用 數(shù)據(jù)加工與 SQL 整理的區(qū)別在于 前者在 SQL 查詢之后進行 作用的對象是結(jié)果集 后者 在查詢之前進行 作用的對象是 SQL 定義 在數(shù)據(jù)加工的編碼向?qū)е?提供了多種實用加工濾鏡 圖示的數(shù)據(jù)加工代碼把 ID 分別為 male 和 female 的兩個結(jié)果集按照 deptname 字段為鍵進行了左外連接 并在連接結(jié) 果中保留了 deptname mpsnnum fpsnnum 三列 圖 3 26 數(shù)據(jù)加工代碼 以下簡單介紹幾種數(shù)據(jù)加工算法的編碼向?qū)褂梅椒?1 由查詢獲得結(jié)果集 根據(jù)查詢 ID 和參數(shù)變量獲得查詢結(jié)果集 這里的參數(shù)變 量是指需要傳給目標查詢的參數(shù)哈希表 默認可以是當前查詢的參數(shù)哈希表 見圖 3 27 不需修改 第 22 頁 圖 3 27 獲得結(jié)果集向?qū)?2 公式設置 參數(shù)為公式列名 返回值數(shù)據(jù)類型和公式 如果公式列名不存在則 新增一列 否則將該列的內(nèi)容更新為公式返回值 一個公式也可以引用另一個 公式列的計算結(jié)果 圖 3 28 公式編輯 第 23 頁 圖 3 29 公式定義 3 結(jié)果集連接 指定兩個結(jié)果集的連接字段 連接方式和連接后的保留字段 得 到連接后的結(jié)果集 圖 3 30 結(jié)果集連接向?qū)?4 結(jié)果集聯(lián)合 指定兩個列結(jié)構(gòu)相兼容的結(jié)果集 得到聯(lián)合 union 后的結(jié)果 第 24 頁 圖 3 31 結(jié)果集聯(lián)合向?qū)?4 3 穿透規(guī)則 數(shù)據(jù)穿透 假定報表 R1 上存在某個區(qū)域 A1 A1 內(nèi)部有若干業(yè)務數(shù)據(jù) 如果以 A1 為出 發(fā)點能夠切換到另一張報表 R2 的上的區(qū)域 A2 而且 A1 和 A2 的內(nèi)部數(shù)據(jù)存在著某種內(nèi)在 聯(lián)系 則稱可以從 R1 穿透到 R2 當這種穿透行為傳遞下去 我們就可以了解某張報表的 數(shù)據(jù)明細 甚至追溯到它的數(shù)據(jù)來源 通常我們會把上述的區(qū)域選為一個表格行或者一個 表單元 而上述的內(nèi)在聯(lián)系就稱為穿透規(guī)則 一個查詢上可以定義多個穿透規(guī)則 每個規(guī)則需要指定穿透的目標查詢 同時目標查詢上 要創(chuàng)建一個過濾型參數(shù) 用于接收穿透區(qū)域的取值 如我們現(xiàn)在定義了兩個查詢 公司部門和部門人員 如圖 3 32 我們希望在瀏覽公司部門 的時候選中某個部門能穿透到部門人員查詢查看這個部門下的所有員工 這首先需要我們 在公司部門的查詢列和部門人員的查詢參數(shù)之間建立一個關聯(lián)關系 這里我們選擇公司部 門的部門編碼 deptcode 列 在部門人員查詢里加入一個查詢參數(shù)部門編碼 deptcode 源查詢列和目標查詢參數(shù)名字不一定要相同 但是含義要一致 并在查詢定義里引用該參 數(shù)作為過濾條件 第 25 頁 圖 3 32 公司部門 上 和部門人員 下 定義公司部門的穿透規(guī)則 選擇查詢間穿透向?qū)?設置如下 圖 3 33 穿透規(guī)則定義向?qū)?圖 3 34 穿透規(guī)則代碼 下圖顯示了一個由人員信息穿透到薪資信息再穿透到同姓員工工資信息 最后穿透到每月 明細的用例 其中第一步穿透是單列等值穿透 相當于 人員 李滌非 第二步是非等 值穿透 相當于 姓名 like 李 第三步是多列聯(lián)合穿透 相當于 人員 李屏 and 年份 2003 第 26 頁 圖 3 35 穿透效果示意 第 27 頁 5 查詢?yōu)g覽查詢?yōu)g覽 5 1 查詢執(zhí)行與展現(xiàn) 在建立好查詢模型之后 系統(tǒng)提供預覽查詢執(zhí)行結(jié)果的功能 用戶首先輸入執(zhí)行查詢所需 要的參數(shù)取值 如果有參數(shù)的話 查詢引擎會根據(jù)該查詢對象的數(shù)據(jù)源去對應的數(shù)據(jù)庫執(zhí) 行查詢 在經(jīng)過查詢結(jié)果集評估 對于查詢記錄數(shù)過大的情況允許用戶優(yōu)化或放棄查詢 之后 把結(jié)果集展現(xiàn)給用戶 在展現(xiàn)之后 用戶可以繼續(xù)進行穿透 交叉等工作 圖 3 36 查詢預覽 5 2 數(shù)據(jù)導出 導出功能支持將預覽數(shù)據(jù)導出為純文本文件 并可進而用 EXCEL 打開 隨著產(chǎn)品的發(fā)展 數(shù)據(jù)導出的格式會逐步豐富 5 3 創(chuàng)建物化表 查詢引擎可以根據(jù)預覽數(shù)據(jù)直接到數(shù)據(jù)庫創(chuàng)建物化表 同時將物化表的結(jié)構(gòu)注冊到數(shù)據(jù)字 典 物化表會注冊到 DDC 的 物化臨時表 目錄下 中 以后的 SQL 設計就可以基于新創(chuàng) 建的物化表進行 從而擴充了查詢集成的范圍 引用了物化表的查詢 在執(zhí)行前會提示是 否同步刷新物化表 如果選擇了刷新 則會按當前的參數(shù)設置傳遞給產(chǎn)生物化表的查詢 重新執(zhí)行得到結(jié)果并更新物化表 再在此基礎上執(zhí)行當前查詢 如果未選擇刷新 則直接 基于物化表里的已有數(shù)據(jù)執(zhí)行查詢 第 28 頁 由一個查詢生成物化表 該表會創(chuàng)建到查詢定義所在的數(shù)據(jù)源 如果是數(shù)據(jù)倉庫下 可 通過切換定義數(shù)據(jù)源查看當前所在數(shù)據(jù)源 而不是查詢?nèi)?shù)數(shù)據(jù)源 就是選中查詢后在右 邊屬性列表里的數(shù)據(jù)源 如果是客戶化下的查詢引擎 這兩者是一致的 因為客戶化下的 查詢引擎只支持單數(shù)據(jù)源 就是當前登錄賬套所在數(shù)據(jù)源 圖 3 37 創(chuàng)建物化表 圖 3 38 在定義查詢時引用創(chuàng)建的物化表 第 29 頁 第四章第四章 查詢引擎的界面模型查詢引擎的界面模型 界面模型節(jié)點的新建和管理參見第二章 我們可以設計新的界面模型 也可以對已有的界 面模型進行修改 界面模型的設計包括引用查詢 界面可視化設計 綁定數(shù)據(jù)集 數(shù)據(jù)預 處理等部分 界面模型 展現(xiàn)模型 設計如下 界面模型設計態(tài)和運行態(tài)的基本流程如下圖所示 設計態(tài)的操作并沒有嚴格意義上的順序 限制 圖 4 1 界面模型流程 第 30 頁 1 引用查詢引用查詢 引用查詢是指將界面模型所要展現(xiàn)的查詢結(jié)果集對應的查詢定義引用到模型中來 由于同 一查詢定義根據(jù)不同參數(shù)設置也可以得到不同結(jié)果集 所以為了區(qū)分這種綁定基于同一查 詢定義的不同結(jié)果集時 我們對每一個查詢結(jié)果集起一個單一的別名來標志 圖 4 2 查詢引用界面 對于數(shù)據(jù)集之間存在的某種一對多的關系 我們還可以根據(jù)需要建立主從關系 即主子表 查詢引擎支持兩個數(shù)據(jù)集之間按照多列關聯(lián)建立主從關系 圖 4 3 主子連接設置界面 2 格式設計格式設計 界面模型的格式設計包括了控件拖放 編輯控件屬性及數(shù)據(jù)綁定屬性 定義列格式 列表 頭 行表頭等行列格式以及數(shù)據(jù)預處理等幾部分 分別介紹如下 第 31 頁 圖 4 4 界面模型設計界面 2 1 控件管理 界面模型設計工具提供了幾種最常用的控件 如圖 4 4 中控件欄中所示 分別是按鈕 復 選框 組合框 標簽 列表 單選框 多頁簽 表 文本域 文本框 樹 面板 分割欄 圖表和參照控件 其中最重量級的控件是表和圖表 絕大部分的數(shù)據(jù)集展現(xiàn)工作是這兩個 控件完成的 初始時 界面上只有一個面板 處于選中狀態(tài) 布局是默認的 BorderLayout 我們接下來 的工作就是要在這個面板上定制我們的界面 這個過程和一般的 Java 可視化設計大同小異 查詢引擎的布局基本上沿用 Java 布局的 FlowLayout BorderLayout 和 GridLayout BorderLayout 和 Java 稍有區(qū)別 前兩種是比較常用的 FlowLayout 布局顧名思義 是流程式的 象字處理程序安排段落里的文本一樣布局 GUI 元 素 圖 4 5 FlowLayout 示例 查詢引擎里的 BorderLayout 將容器分成了北 中 南三個區(qū)域 每個區(qū)域放置一個子控件 和 Java 的五個區(qū)域稍有不同 北區(qū)域和南區(qū)域按控件首選高度來布置 寬度都是充滿 這個容器 剩下的空間全部劃分給中區(qū)域 如圖 4 6 主面板的布局就是 BorderLayout 其北區(qū)域放置了一個子面板 布局為 FlowLayout 中區(qū)域放置了一個分隔欄控件 左右各 第 32 頁 放了一個表格 南區(qū)域放置了一個多頁簽 圖 4 6 BorderLayout 示例 GridLayout 按照指定的行數(shù)和列數(shù)來平均分隔容器空間 形成很多子區(qū)域 每一個區(qū)域內(nèi) 放置一個子控件 圖 4 7 GridLayout 示例 圖 4 8 界面模型 雙擊界面上的控件就可以打開屬性編輯器 可以編輯控件的相關屬性 屬性編輯器上邊是 當前界面的控件列表 下面列出了當前選中控件的屬性列表 我們可以從控件列表中選中 控件 也可以在界面上雙擊控件來選中控件進行屬性編輯 圖 4 9 屬性編輯器 所有控件都有背景色 前景色 字體和首選大小等普通屬性 其次 控件具有一些自己特 有的屬性 如面板具有布局屬性 分割欄有分欄方向 分欄位置等特有屬性 下面我們來 介紹一下幾個主要的控件 展現(xiàn)數(shù)據(jù)集的最重要的控件 表的幾個屬性 1 綁定數(shù)據(jù)集 可以將表綁定到引用查詢中的某一個查詢定義 那么在運行態(tài)下 表展現(xiàn)的就是該查詢定義對應得到的查詢結(jié)果集 當設置了表的數(shù)據(jù)集綁定屬 性后 該查詢定義中定義的列就相應的出現(xiàn)在表里 此時沒有數(shù)據(jù)只有表頭 2 列格式綁定 有時候會對表中的數(shù)據(jù)展現(xiàn)有各種格式上的要求 如預警顯示 精度設置 前綴后綴等等 這時可以設置表的列格式屬性 在列格式屬性里不 但可以設置列綁定的列格式 也可以設置列的顯示順序 顯示與否等屬性 列 格式的定義在后面的小節(jié)里專門講述 第 33 頁 圖 4 7 列格式設置 3 列表頭綁定 當表綁定了數(shù)據(jù)集之后 可以根據(jù)展現(xiàn)需要綁定列表頭格式 在 表頭 ID 屬性里綁定表頭的 ID 之后 從界面上就可以看到表的列表頭已經(jīng)綁定 到了表頭 ID 對應的表頭格式 列表頭格式的設計在后面的小節(jié)里會專門講述 4 行表頭綁定 如果表綁定的查詢定義里定義了第一類交叉 即投影交叉 參見 第三章第 3 節(jié) 則表還可以設置行表頭格式 關于行表頭的定義和設置在后 面小節(jié)中講述 圖表 圖表控件在設置了數(shù)據(jù)集綁定屬性之后 可以設定其數(shù)據(jù)綁定屬性 在圖表控件上彈出右 鍵菜單點擊數(shù)據(jù)綁定菜單項 可彈出數(shù)據(jù)綁定設置界面如圖 4 8 所示 在這里我們可以設 置圖表的類型 以及綁定的系列等屬性 圖 4 8 圖表數(shù)據(jù)綁定設置界面 圖表支持的類型有三種 分類圖 餅圖和儀表圖 分類圖有 2D 和 3D 兩種 還可以選擇是水平方向還是垂直方向展開 如果選擇了各系列單 獨設置圖例 還可以對不同的系列設置不同的展現(xiàn)類型 如圖 4 9 顯示了兩個系列的數(shù) 據(jù) 一個系列是直方圖 一個系列是折線圖 第 34 頁 圖 4 9 分類圖 餅圖也有 2D 和 3D 兩種 圖 4 10 顯示了圖 4 9 中的數(shù)據(jù)用餅圖類型的展現(xiàn) 圖 4 10 餅圖 儀表圖將每個系列的數(shù)據(jù)在一個儀表盤中顯示 圖 4 11 為同樣的數(shù)據(jù)在儀表圖的展現(xiàn) 儀 表圖一次展現(xiàn)數(shù)據(jù)中的一條記錄 可以通過儀表圖中的導航工具欄瀏覽數(shù)據(jù) 第 35 頁 圖 4 11 儀表圖 列表 下拉框 文本框 標簽 參照等簡單控件提供了綁定到多種內(nèi)容的屬性 其中 列 表和下拉框可以綁定到查詢結(jié)果集中某列 導航或枚舉 綁定查詢結(jié)果集對應的參數(shù) 即 查詢參數(shù) 文本框可以綁定查詢參數(shù)和環(huán)境變量 參照控件可以綁定查詢參數(shù) 下面是設 置一個文本框綁定到查詢參數(shù)的截圖 圖 4 12 綁定查詢參數(shù)的文本框 2 2 行列格式設計 行列格式設計包括列格式定義 列表頭定義和行表頭定義三部分 分別說明如下 列格式定義 第 36 頁 圖 4 13 列格式定義界面 我們可以定義四種類型的列格式 字符型 數(shù)值型 貨幣型 百分比型 后三種實際上都 屬于數(shù)值型數(shù)據(jù)的不同展現(xiàn) 格式定義包括對齊方式 文本顏色 前導符號等等 對于數(shù) 值型的列格式還可以設置保留小數(shù)位數(shù) 是否加千分位等格式 列格式的一個比較重要的 設置就是設置預警顯示 預警顯示就是將符合指定條件的數(shù)據(jù)按指定顏色來顯示 如銷售 額這樣的數(shù)據(jù)通過分段預警就很容易體現(xiàn)出高中低來 方便瀏覽數(shù)據(jù) 圖 4 14 中所示預警設置就是將小于 60 的數(shù)用紅色顯示 60 到 80 之間的數(shù)用藍色顯示 大于 80 的數(shù)用黃色顯示 預警條件中除支持用常量表達式進行比較之外 也支持用含變量 的表達式進行比較 其中的變量名必須是表中某列的列名 如表中有 A B C 三列 要 求某行中 A 列中的值大于 B 列和 C 列的值之和時該行 A 列按某種指定顏色顯示 我們可 以給 A 列綁定列格式 在列格式的預警設置中設置預警條件為 B C 注 這里的 A B C 都是指的列名 不是列顯示名 參見圖 4 7 圖 4 14 預警設置界面 列表頭定義 第 37 頁 圖 4 15 列表頭設計界面 有時候為了方便歸類和分組列數(shù)據(jù) 我們需要定義多表頭來加強展現(xiàn) 如圖 4 15 我們可 以根據(jù)自己的需要定義一個多表頭用來展現(xiàn) 在這里 可以很方便的組合表中列 定義好 的表頭格式存在數(shù)據(jù)庫中 并有一個表頭 ID 與之對應 通過表頭 ID 該列表頭格式可以被 表綁定 綁定了列表頭的表效果參見圖 4 5 小技巧 定義對應某一查詢的列表頭展現(xiàn)時 我們可以通過參照 選中該查詢來快速引 入該查詢定義的列 而不用手工錄入 行表頭定義 如果設置表的綁定數(shù)據(jù)集屬性到一個定義了第一類交叉的查詢 那么表中會出現(xiàn)與查詢中 定義的列和行相對應的列頭和行頭 默認的列頭和行頭沒有任何附加的格式 如圖 4 16 所 示 第 38 頁 圖 4 16 綁定到第一類交叉查詢定義的表 就像可以給列分組定義列表頭一樣 我們也可以給行分組定義行表頭 如圖 4 17 所示 類似于列表頭的定義 我們也可以合并行 還可以定義行號顯示與否 行號顯示的位置 甚至可以為定義好的表頭綁定列表頭 保存后我們可以看到界面上的表已經(jīng)顯示了新定義 的行表頭格式 圖 4 17 行表頭設計界面 圖 4 18 定義了行列表頭格式的表 承圖 4 16 2 3 預定義數(shù)據(jù)處理 界面模型中支持兩種數(shù)據(jù)預定義的處理 定義公式列和定義小計合計 其中 公式列定義 是基于查詢結(jié)果集的 定義的公式列對于所有綁定該查詢結(jié)果集的控件都是可見的 小計 合計是基于表控件的 定義的小計合計只對該表起作用 不影響其他綁定到相同數(shù)據(jù)集的 第 39 頁 控件 公式列 點擊數(shù)據(jù)處理菜單下的公式列菜單項 就會彈出如圖 4 19 所示的公式列定義界面 圖 4 19 公式列定義界面 在查詢結(jié)果集下拉框中選中要定義公式列的數(shù)據(jù)集 如果是添加公式列 則數(shù)據(jù)集中可選 的列名會出現(xiàn)在可選列列表中 如果是預定義的公式列 則可選列是數(shù)據(jù)集的原始列 如 果是運行態(tài)定義的公式列 可選列還包括已經(jīng)定義的公式列 雙擊列項可將該列添加到公 式表達式中 公式列中可用函數(shù)和操作符也已列出 均是通過雙擊可以添加到表達式中 添加公式列需要指定公式列名和公式類型 也可以給公式列指定列格式 公式列表達式只 支持 Ascii 字符 不支持中文 如果表達式有誤 則運行態(tài)下公式列內(nèi)各行的值均為空 如果是刪除公式列 列表中列出了當前數(shù)據(jù)集已定義的公式列 選中即可刪除 修改公式 列界面與添加公式列類似 小計合計 設計界面模型時在表控件的表頭上彈出右鍵菜單 點擊小計合計菜單項可彈出設置小計合 計的界面 如圖 4 20 其中 根據(jù)表綁定的查詢定義的不同 界面會稍有區(qū)別 分別說明 如下 普通表 可以設置根據(jù)什么列分組 進行小計合計 以及分組列的升降序 可以設置小計合計計算與否 以及小計行和合計行標志展現(xiàn) 可以設置需要小計合計的列 以及統(tǒng)計運算的類型 目前支持的運算類型有求和 最大值 和最小值 可以設置統(tǒng)計數(shù)據(jù)放置在原始數(shù)據(jù)之前還是放置在后 第一類交叉表 投影交叉表 定義了第一類交叉的查詢結(jié)果集行列結(jié)構(gòu)是固定的 多用在固定格式的報表中 因此 其 第 40 頁 小計合計也設計得稍有區(qū)別 在這種情況下 小計合計是根據(jù)表的行頭來進行的 它根據(jù) 表行頭所示的樹狀結(jié)構(gòu)中樹節(jié)點的級次來小計合計 所以 對于這類表 我們設置的是小 計開始級次和終止級次 而不是分組列 a 普通表 b 投影交叉表 圖 4 20 小計合計設置界面 3 界面運行界面運行 對于已經(jīng)格式設計完畢的界面模型 我們可以運行該界面來查看結(jié)果 3 1 界面初始化 我們發(fā)出運行某界面的命令后 在界面呈現(xiàn)出來之前 系統(tǒng)會做一系列的初始化工作 根 據(jù)界面模型引用的查詢定義查詢得到對應的結(jié)果集 由界面定義構(gòu)造出界面 根據(jù)數(shù)據(jù)集 綁定屬性將控件綁定到對應的結(jié)果集 當所有的初始化工作都完成以后 界面才呈現(xiàn)在我 們面前 圖 4 21 查詢參數(shù)設置界面 第 41 頁 如果界面引用的查詢定義里定義了查詢參數(shù) 那么在初始化界面工作去后臺查詢結(jié)果集之 前 會要求我們輸入查詢參數(shù) 如當我們運行圖 4 5 中定義的界面模型 它引用的查詢?nèi)?圖 4 2 所示 時 因為其引用的查詢定義中 部門檔案 是定義了參數(shù)的 所以系統(tǒng)會彈 出查詢參數(shù)設置界面讓我們輸入查詢參數(shù) 如圖 4 21 所示 圖 4 22 界面模型運行結(jié)果 承圖 4 5 輸入相應的查詢參數(shù) 運行結(jié)果如圖 4 22 所示 3 2 數(shù)據(jù)處理 界面模型在運行態(tài)提供了幾種數(shù)據(jù)處理的功能 查找 排序 過濾 公式列 小計合計 交叉和穿透 其中 查找 排序 過濾和公式列是基于數(shù)據(jù)集的 這些操作對于所有綁定 到被操作數(shù)據(jù)集的控件都是起作用的 放在數(shù)據(jù)處理菜單下 而小計合計 交叉和穿透是 基于表控件的 放在表控件表頭右鍵菜單下 只對表控件本身的數(shù)據(jù)展現(xiàn)起作用 不影響 其他控件 查找 圖 4 23 查找設置界面 選中要進行查找的數(shù)據(jù)集 以及要查找的字段 輸入查找值就可以進行查找 如果數(shù)據(jù)集 中存在符合查找條件的記錄 數(shù)據(jù)集會滾動到這一條記錄 同時在界面控件上體現(xiàn)出來 第 42 頁 排序 圖 4 24 排序設置界面 選中要進行排序的數(shù)據(jù)集 選擇排序列及升降序 可以對數(shù)據(jù)集進行排序 相當于 Order By 過濾 過濾設置分兩種類型 疊加過濾和重新過濾 疊加過濾是在前過濾結(jié)果的基礎上再按指定 條件進行過濾得到新的結(jié)果 而重新過濾則是去掉了之前設置的過濾條件 在原始結(jié)果集 的基礎上按指定條件過濾得到新的結(jié)果 過濾條件的設置有普通模式和高級模式 普通模式的條件設置類似于查找設置 而高級模 式的過濾條件設置支持帶參數(shù)表達式的過濾 其表達式的定義類似與公式列表達式的定義 但必須是邏輯表達式 第 43 頁 圖 4 25 過濾設置界面 公式列 小計合計 運行態(tài)公式列定義和小計合計定義類似于預定義數(shù)據(jù)處理中所述 不再贅述 交叉 圖 4 26 第一類交叉 投影交叉設置界面 第 44 頁 圖 4 27 第二類交叉 旋轉(zhuǎn)交叉設置界面 數(shù)據(jù)交叉的意義和說明參見第三章第 3 節(jié) 界面運行態(tài)下的表控件支持交叉操作 如果綁 定了定義第一類交叉 投影交叉 的查詢定義 則表控件支持的是第一類交叉 如果綁定 的是其他查詢定義 表控件支持第二類交叉 穿透 第 4 28 穿透規(guī)則選取界面 穿透的意義和說明參見第三章第 4 3 小節(jié) 界面運行態(tài)上如果某表控件綁定到定義了穿透 規(guī)則的查詢定義 則該表控件支持穿透操作 回退 恢復 界面還提供了回退 恢復功能 在對數(shù)據(jù)集進行了一系列數(shù)據(jù)處理操作之后 可以利用恢復 功能恢復到原始狀態(tài) 表控件提供了回退功能可以撤銷交叉和穿透等操作 3 3 控件連動 控件連動分同步連動和主子連動兩種 同步連動 當多個控件綁定到一個數(shù)據(jù)集時 當對該數(shù)據(jù)集進行了查找 排序 過濾 公式列等操作 第 45 頁 時 數(shù)據(jù)集的變化會通知到每個控件 是它們相應的更新展現(xiàn) 體現(xiàn)出同步的連動 圖 4 29 上的表格和圖表引用了相同數(shù)據(jù)集 因此當進行排序 過濾等數(shù)據(jù)集操作的時候 表和圖上的數(shù)據(jù)會出現(xiàn)完全同步的變化 同樣 在圖上點擊某個系列時 表也會相應的定 位到該系列 圖 4 29 表 圖同步互動 主從連動 如果兩個數(shù)據(jù)集之間建立了主從關系 則分別綁定到這兩個數(shù)據(jù)集的控件之間就形成了主 從連動的關系 如圖 4 22 展現(xiàn)的就是兩組建立了主從連動關系的表控件 當主表選中某 行時 子表則相應的展現(xiàn)出與主表記錄對應的所有子表記錄 3 4 報表打印 界面模型提供了預覽和直接打印的功能 這部分的功能暫時還不完善 有待擴充 3 5 功能節(jié)點掛接 定義好的界面模型并不限制在查詢引擎下運行 它也可以作為獨立的功能節(jié)點掛接在各業(yè) 務組的功能模塊下 其掛接步驟如下 第 46 頁 圖 4 30 功能節(jié)點掛接 注冊功能節(jié)點 注冊功能節(jié)點時需指定對應文件名為 nc ui pub querymodel QueryNodeUI 每個節(jié)點還需 定義兩個參數(shù) pkQryNode 界面模型對應的編碼 dsName 定義數(shù)據(jù)源 這樣 功能節(jié)點掛接就完成了 第 47 頁 附錄附錄 1 查詢引擎查詢引擎 FAQ 之參數(shù)篇之參數(shù)篇 1 參數(shù)定義中的 操作符提示 列是什么意思 是否有用 答 通常此列內(nèi)容只有提示意義而無實際用處 只有對于參照型參數(shù)并且所填內(nèi)容為 like 或 in 的時候有特殊含義 前者會在參照出來的值后面加百分號 后者支持參照多選 2 數(shù)值型參數(shù)和字符型參數(shù)有何差別 答 數(shù)值型參數(shù)保證其在引用過程中參數(shù)值不加單引號 而字符型參數(shù)可能視引用的具體 情況有所不同 3 在進行復合查詢的參數(shù)定義時 是否需要列出所引用子查詢的參數(shù) 答 是的 復合查詢不會自動去遞歸提取所引用子查詢的參數(shù)并集 這個并集需要通過手 工引用 復合查詢自身不一定使用其中的參數(shù) 但它負責把參數(shù)分發(fā)給引用的子查詢 4 如何快速引用其它查詢對象的參數(shù) 答 鼠標單擊南部面板 5 什么是替換型參數(shù) 答 參數(shù)名以 開頭和結(jié)尾的參數(shù)稱為替換型參數(shù) 如 param1 這類參數(shù)在引用時被完 全字符替換為相應的參數(shù)值 而普通參數(shù)只限于在向?qū)皆O計中作為待定條件的取值 在 Sql 手工設計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論