李武韜
(常州信息職業(yè)技術(shù)學(xué)院經(jīng)貿(mào)管理學(xué)院 江蘇常州 213164)
金蝶K/3 BOS直接SQL報表舉例
李武韜
(常州信息職業(yè)技術(shù)學(xué)院經(jīng)貿(mào)管理學(xué)院江蘇常州213164)
摘要:金蝶K/3 ERP直接SQL報表不僅是直接寫SQL語句,通過舉例來說明:在金蝶K/3 BOS的ERP的二次開發(fā)中,使用K/3 BOS中的數(shù)據(jù)庫描述生成工具,字段描述查詢工具等來輔助生成直接SQL報表更加方便和便于理解。
關(guān)鍵詞:金蝶K/3; BOS; 直接SQL報表
0引言
金蝶K/3是企業(yè)管理信息化應(yīng)用的ERP軟件產(chǎn)品。金蝶K/3系統(tǒng)提供豐富的報表查詢功能,除基本的報表查詢功能外,還提供強大的報表分析查詢功能[1]。K/3 BOS(Business Operating System,簡稱BOS)是金蝶ERP二次開發(fā)的工具,在K/3 BOS中,借助K/3 BOS的數(shù)據(jù)庫描述生成工具,字段描述查詢工具,以及SQL Server的視圖等工具,可以更加方便地完成直接SQL報表。本文以制作直接SQL采購明細報表為例說明。
1確定報表的內(nèi)容
本文在金蝶K/3 12.1版本的“藍海機械”示例帳套中制作直接SQL采購明細報表,連接的數(shù)據(jù)庫為SQL Server2005。藍海機械公司是一家專業(yè)生產(chǎn)經(jīng)營柴油機及其配件產(chǎn)品的企業(yè),藍海機械采用金蝶ERP系統(tǒng),全面實現(xiàn)財務(wù)、業(yè)務(wù)和生產(chǎn)環(huán)節(jié)的自動化管理,是典型的標準供應(yīng)鏈解決方案。
在藍海機械的采購管理中需要查詢分析采購明細,特別是某個時間段、針對某個供應(yīng)商的采購明細。在采購明細報表中顯示所采購的每項物料的名稱、數(shù)量、具體的供應(yīng)商以及當時采購的訂單編號和日期。用戶在調(diào)用報表時能動態(tài)設(shè)置具體查詢哪個時間段、針對哪個供應(yīng)商的采購明細,即以“起始日期”、“截止日期”和“供應(yīng)商名稱”字段作為報表的過濾條件。
2分析報表所關(guān)聯(lián)的數(shù)據(jù)表
報表生成的關(guān)鍵在于確定內(nèi)容涉及K/3底層數(shù)據(jù)庫的哪些數(shù)據(jù)表[2]。采購明細報表查詢所采購物料的數(shù)量、訂單編號和日期,必然要對采購訂單所關(guān)聯(lián)的數(shù)據(jù)表進行查詢,采購訂單關(guān)聯(lián)了兩張數(shù)據(jù)表,分別是單據(jù)頭所在的POOrder表和單據(jù)體字段所在的分錄表POOrderEntry。
報表還要求由用戶動態(tài)指定供應(yīng)商進行查詢,供應(yīng)商是k/3標準基礎(chǔ)資料,因此查詢還關(guān)聯(lián)到k/3數(shù)據(jù)庫中原有的標準表,供應(yīng)商檔案表t_Supplier。同時,報表還要求顯示采購的物料名稱,因此查詢還關(guān)聯(lián)到k/3數(shù)據(jù)庫中物料表t_ICItem。
由于金蝶k/3數(shù)據(jù)庫結(jié)構(gòu)的復(fù)雜性,在此借助集成在k/3 BOS SDK中的二次開發(fā)工具,數(shù)據(jù)庫描述生成工具來查看上述數(shù)據(jù)表的具體信息,這些信息包括:數(shù)據(jù)表的所屬子系統(tǒng),數(shù)據(jù)表的描述,數(shù)據(jù)表的結(jié)構(gòu)信息。在數(shù)據(jù)表的結(jié)構(gòu)信息中可以看到表中字段信息,甚至可以對字段信息進行維護。
使用數(shù)據(jù)庫描述生成工具,可以看到:采購訂單表POOrder,以及采購訂單分錄表POOrderEntry屬于采購管理系統(tǒng),表中包含了訂單編號和采購物料的數(shù)量字段等的訂單詳細信息;供應(yīng)商檔案表t_Supplier屬于供應(yīng)商管理系統(tǒng),存放供應(yīng)商檔案的詳細資料,包括報表要求的供應(yīng)商名稱;物料表t_ICItem屬于基本信息管理系統(tǒng),物料是K/3的標準基礎(chǔ)資料,包含物料名稱在內(nèi)的物料詳細信息。
數(shù)據(jù)庫描述生成工具使用表的名稱來查詢表的信息,確定表所屬的子系統(tǒng)。另外,使用BOS平臺的K3字段描述查詢工具來查詢數(shù)據(jù)表的全部的索引信息和更為詳細的字段信息,其中包括:字段名、字段類型、字段長度等數(shù)據(jù)庫字段基本信息,還能查看字段描述、字段備注,用于了解字段的作用。
通過上述工具的使用,對報表關(guān)聯(lián)的數(shù)據(jù)表及其結(jié)構(gòu)有了詳細的了解,根據(jù)報表的查詢要求,確定所需要的字段:采購訂單表POOrder選擇采購訂單號FBillNo和單據(jù)日期FDate,采購訂單分錄表POOrderEntry選擇訂貨數(shù)量FQty,供應(yīng)商檔案表t_Supplier選擇供應(yīng)商名稱FName,物料表t_ICItem選擇物料名稱FName。同時也要明確:采購訂單表POOrder和采購訂單分錄表POOrderEntry必須對應(yīng)同一張訂單,需要通過采購訂單內(nèi)碼FInterID關(guān)聯(lián);采購訂單分錄表POOrderEntry和物料表t_ICItem必須對應(yīng)同一種物料,需要通過物料內(nèi)碼FItemID關(guān)聯(lián);采購訂單表POOrder和供應(yīng)商檔案表t_Supplier必須對應(yīng)同一家供應(yīng)商,需要供應(yīng)商內(nèi)碼FSupplyID關(guān)聯(lián)。在此注意,供應(yīng)商檔案表t_Supplier中的供應(yīng)商內(nèi)碼字段不是FSupplyID,而是FItemID。
3用數(shù)據(jù)庫中的視圖生成SQL語句
視圖是從一個或多個表中查詢數(shù)據(jù)的另外一種方式[3]。手工的編寫SQL語句制作報表容易出錯,同時增加調(diào)試SQL語句的復(fù)雜性。在此使用SQL Server數(shù)據(jù)庫管理系統(tǒng)的視圖工具來生成SQL語句,方便并且不容易出錯。
打開金蝶k/3所連接的后臺數(shù)據(jù)庫,SQL Server Management Studio,找到“藍海機械”帳套對應(yīng)的數(shù)據(jù)庫,在此數(shù)據(jù)庫中創(chuàng)建視圖。選取上述分析中,報表所關(guān)聯(lián)的數(shù)據(jù)表和相應(yīng)字段,在此注意,物料表t_ICItem在數(shù)據(jù)庫中實際是一個視圖。
按照報表的要求,需要對選定的表和視圖進行相應(yīng)的關(guān)聯(lián),采購訂單表POOrder和采購訂單分錄表POOrderEntry通過采購訂單內(nèi)碼FInterID建立內(nèi)連接;采購訂單分錄表POOrderEntry和物料表t_ICItem通過物料內(nèi)碼FItemID建立內(nèi)連接;采購訂單表POOrder和供應(yīng)商檔案表t_Supplier通過供應(yīng)商內(nèi)碼FSupplyID和FItemID建立內(nèi)連接。
為了使后面報表更加直觀,給選擇的字段都加上相應(yīng)的別名,生成如下SQL語句。
SELECT dbo.POOrder.FBillNo AS 采購訂單號, dbo.POOrder.FDate AS 單據(jù)日期, dbo.POOrderEntry.FQty AS 訂貨數(shù)量, dbo.t_Supplier.FName AS 供應(yīng)商名稱, dbo.t_ICItem.FName AS 物料名稱 FROM dbo.POOrder INNER JOIN dbo.POOrderEntry ON dbo.POOrder.FInterID = dbo.POOrderEntry.FInterID INNER JOIN dbo.t_Supplier ON dbo.POOrder.FSupplyID = dbo.t_Supplier.FItemID INNER JOIN dbo.t_ICItem ON dbo.POOrderEntry.FItemID = dbo.t_ICItem.FItemID
4完成報表
在BOS平臺的直接SQL報表中打開報表向?qū)?,在向?qū)е行枰斎隨QL語句時,粘貼上述視圖中生成的SQL語句。同時,設(shè)置查詢關(guān)鍵字,按報表要求需要指定“起始日期”、“截止日期”和“供應(yīng)商名稱”作為查詢條件,因此增加如下where子句。
Where dbo.poorder.fdate>=’********’ and dbo.poorder.fdate<=’######’ and dbo.t_supplier.fname like ‘@SuppName@’
然后按照向?qū)崾就瓿芍苯覵QL報表的制作,并且進行測試,測試成功后發(fā)布到主控臺上供用戶使用。
5結(jié)束語
由于金蝶k/3數(shù)據(jù)庫結(jié)構(gòu)的復(fù)雜性,借助其提供的數(shù)據(jù)庫描述生成工具和K3字段描述查詢工具,以及數(shù)據(jù)庫的視圖來制作直接SQL報表更加方便和容易理解,這種方法對于其他類型的報表開發(fā)也具有參考價值。
參考文獻:
[1]金蝶軟件(中國)有限公司.金蝶ERP-K/3完全使用詳解[M]. 北京: 人民郵電出版社,2013: 217.
[2]葉玫,等.金蝶ERP二次開發(fā)(K/3 BOS)應(yīng)用教程[M]. 北京: 人民郵電出版社,2014:121.
[3]田彬,等.SQL寶典[M]. .北京: 電子工業(yè)出版社,2013: 278.
收稿日期:2015-03-30
作者簡介:李武韜(1972-),男,講師,從事研究方向:計算機應(yīng)用與教學(xué)
中圖分類號:F 232
文獻標志碼:A
文章編號:1672-2434(2015)04-0022-02
A Case of Direct SQL Statements Based on
Kingdee K/3 BOS
LI Wutao
(School of Economy & Trading Management, Changzhou College of Information Technology, Changzhou 213164, China)
Abstract:Based on the given cases, this article expounds the descriptions in the secondary development of Kingdee K/3 BOS, Kingdee K/3 ERP direct SQL report, which is not only a direct written SQL statement, but also is becoming more convenient and easier to understand by adopting the K/3 database description generation tool, field description query tool to aid directly to generate SQL statements.
Key words:Kingdee K/3; BOS; direct SQL statement