專利名稱:一種實時修改客戶端數(shù)據(jù)報表的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)的處理技術(shù),尤指通過在服務(wù)器端(Server)數(shù)據(jù)的配置而實現(xiàn)的客戶端(Client)數(shù)據(jù)報表自動實時修改的方法。
背景技術(shù):
現(xiàn)有的報表實現(xiàn)方法主要有兩種Client端報表固定配置方法和Client端報表自行配置方法。
Client端報表固定配置方法,通過在Client端提供固定的一些配置好的報表模板,Client端程序通過讀取這些報表模板,然后根據(jù)報表模板的數(shù)據(jù)項配置,連接到Server端取得數(shù)據(jù)填充到報表模板中生成最終顯示出來的報表。
這種實現(xiàn)方法有以下缺陷1、報表的種類依賴于系統(tǒng)開發(fā)初期的報表設(shè)計,如果Client端開發(fā)時沒有考慮到該報表,則該報表無法實現(xiàn)。
2、報表數(shù)據(jù)的顯示格式、控制權(quán)限都是開發(fā)初期就定死的,在系統(tǒng)使用時不能進行修改。
Client端報表自行配置方法,通過在Client端提供一個報表編輯器,編輯器提供了用戶可見的報表統(tǒng)計數(shù)據(jù)項,由用戶自行通過報表編輯器編輯生成報表。
這種實現(xiàn)方法有以下缺陷1、自行進行報表的編輯對Client端用戶的要求過高,Client端用戶不可能全部對系統(tǒng)的數(shù)據(jù)項有很多的了解。
2、報表數(shù)據(jù)項的正確性無法得到很好的保證,因為統(tǒng)計數(shù)據(jù)項自行編輯,沒有經(jīng)過驗證,且報表的格式無法統(tǒng)一。
3、不能控制Client端報表的權(quán)限,Client端用戶可自行編輯自己的報表,這些報表的權(quán)限均無法控制。
發(fā)明內(nèi)容
本發(fā)明提供一種通過服務(wù)器端數(shù)據(jù)配置實時修改客戶端數(shù)據(jù)報表的方法,實現(xiàn)對表報格式及權(quán)限的統(tǒng)一管理。
本發(fā)明的方法,包括下列步驟A)在服務(wù)器端進行報表配置;B)客戶端通過調(diào)用服務(wù)器端的應(yīng)用程序接口函數(shù)(API函數(shù)),取得自身在服務(wù)器端有使用權(quán)限的數(shù)據(jù)報表。
所述步驟A)包括在服務(wù)器端數(shù)據(jù)庫建立報表的配置數(shù)據(jù)表,該報表的配置數(shù)據(jù)表包括報表基本信息表和報表參數(shù)表。
所述報表基本信息表至少包括有報表ID、報表名稱、報表權(quán)限和報表類別字段;所述報表參數(shù)表至少包括有報表參數(shù)ID、報表參數(shù)名、報表參數(shù)關(guān)聯(lián)的報表ID和參數(shù)數(shù)據(jù)類型字段。
所述步驟B)中客戶端調(diào)用服務(wù)器端API函數(shù)是通過其API接口調(diào)用控件來實現(xiàn)的。
所述步驟B)更包括如下步驟B1)客戶端登錄服務(wù)器端后,向服務(wù)器端發(fā)出請求報表的類別信息,服務(wù)器端返回該客戶有權(quán)使用的報表類別信息并顯示于客戶端的顯示界面上;B2)客戶端向服務(wù)器端發(fā)出請求某類別下的報表信息,服務(wù)器端返回該客戶有權(quán)使用的報表信息并顯示于客戶端的顯示界面上;B3)客戶端向服務(wù)器端發(fā)出請求某報表的輸入?yún)?shù)信息,服務(wù)器端返回該客戶有權(quán)使用的輸入?yún)?shù)信息并在客戶端的顯示界面上構(gòu)建一輸入?yún)?shù)的輸入界面,以供使用者輸入相關(guān)參數(shù);
B4)客戶端將輸入?yún)?shù)傳遞給服務(wù)器端同時向服務(wù)器端發(fā)出請求報表結(jié)果的信息,服務(wù)器端根據(jù)客戶端的輸入?yún)?shù)返回該報表的結(jié)果信息并顯示于客戶端的顯示界面上。
上述方法中當(dāng)客戶端登錄服務(wù)器端后,從服務(wù)器端得到一唯一ID,客戶端每次發(fā)出請求信息時,都將該唯一的ID傳遞給服務(wù)器端。
所述客戶端有使用權(quán)限的數(shù)據(jù)報表可通過服務(wù)器端的報表配置進行設(shè)定或動態(tài)修改。
本發(fā)明方法具有如下優(yōu)點1、通過服務(wù)器端的數(shù)據(jù)配置可實時更新客戶端的報表統(tǒng)計數(shù)據(jù)項、顯示格式和權(quán)限。
2、服務(wù)器端進行報表修改后,客戶端程序無需進行升級即可實時得到修改后的報表。
3、報表數(shù)據(jù)項的獲取、顯示經(jīng)過系統(tǒng)管理員的驗證,實現(xiàn)報表的有效管理。
圖1為本發(fā)明方法中客戶端向服務(wù)器端請求顯示報表的信號交互過程示意圖。
具體實施例方式
本發(fā)明方法中首先需在服務(wù)器(Server)端進行報表配置,因此,在Server端數(shù)據(jù)庫建立報表的配置數(shù)據(jù)表。
Server端報表的數(shù)據(jù)配置表詳細說明如下(1)tblQueryTable[表含義]報表基本信息表 [QueryID][int]NOT NULL,[QueryName][varchar](500)NOT NULL,[ProcedureName][varchar](50)NOT NULL,[Role][Varchar](50)NOT NULL,[Category][varchar](200)NULL[字段含義]QueryID報表ID。
QueryName報表的名稱。
ProcedureName報表需要調(diào)用存儲過程名。
Role報表的權(quán)限列表。
Category報表的類別。
(2)tblQueryParamTable[表含義]報表參數(shù)表[表結(jié)構(gòu)][ParamID][int]IDENTITY(0,1)NOT NULL,[ParamName][varchar](200)NOT NULL,[ParamSerialNo][int]NOT NULL,[QueryID][int]NOT NULL,[ParamTyPe][int]NOT NULL,[InnerIDType][int]NOT NULL,[IsAppClientID][bit]NOT NULL,[IsOutIDType][bit]NOT NULL,[InnerParamType][int]NOT NULL,[SQL][varchar](512)NULL,[ValueType][int]NOT NULL,[ValueLen][int]NOT NULL, [varchar](50)NOT NULL[字段含義]ParamID報表參數(shù)ID。
ParamName報表參數(shù)名。
ParamSerialNo報表參數(shù)的順序號。
QueryID參數(shù)關(guān)聯(lián)的報表ID。
ParamType參數(shù)數(shù)據(jù)類型。
InnerIDType內(nèi)部常量ID號。
InnerParamType內(nèi)部常量類型。
SQL參數(shù)從數(shù)據(jù)庫取出列表所檢索用的SQL語句。
ValueType對報表對應(yīng)的存儲過程輸入?yún)?shù)的類型。
ValueLen對報表對應(yīng)的存儲過程輸入?yún)?shù)的長度。
ValueParamName對報表對應(yīng)的存儲過程輸入?yún)?shù)的參數(shù)名。
使用上述這兩個報表的配置表,Server端就可以給Client端提供報表。
Server端為Client端提供的應(yīng)用程序接口函數(shù)(API函數(shù))詳細說明如下(1)GetQueryCategory[函數(shù)含義]得到有權(quán)限的報表的類別[函數(shù)說明]通過該API函數(shù)取得當(dāng)前用戶在Server端有權(quán)限的報表的類別,用于Client端的顯示,以及進一步獲取每個類別下的報表。
function GetQueryCategory(var CategoryNumInteger;var CategoryArrayOLEVariant;var ErrorInfostring)Integer;[參數(shù)說明]
CategoryNum返回Client端當(dāng)前用戶有權(quán)限的報表類別的個數(shù)。
CategoryArray返回Client端當(dāng)前用戶有權(quán)限的報表類別的類別名數(shù)組。
ErrorInfo該函數(shù)執(zhí)行失敗時的錯誤信息。
整型,返回0表示成功,否則為錯誤號。
(2)GetQueryUnderCategory[函數(shù)含義]得到某類別下有權(quán)限的報表[函數(shù)說明]通過該API函數(shù)取得當(dāng)前用戶在某類別下有權(quán)限的報表,用于Client端的顯示,以及進一步獲取每個報表的參數(shù)信息。
function GetQueryUnderCategory(Categorystring;var QueryNumInteger;var IDArray,NameArrayOLEVariant;var ErrorInfostring)Integer;[參數(shù)說明]Category報表類別名。
QueryNum返回該類別下有權(quán)限報表的個數(shù)。
IDArray返回該類別下有權(quán)限報表的ID數(shù)組。
NameArray 返回該類別下有權(quán)限報表的報表名數(shù)組。
ErrorInfo該函數(shù)執(zhí)行失敗時的錯誤信息。
整型,返回0表示成功,否則為錯誤號。
(3)GetQueryParamByQueryID 得到某報表的輸入?yún)?shù)列表[函數(shù)說明]通過該API函數(shù)取得當(dāng)前用戶在某報表中需要輸入的參數(shù)列表,用于Client端報表輸入?yún)?shù)的顯示,以及進一步獲取每個報表的查詢結(jié)果信息。
function GetQueryParamByQueryID(QueryIDInteger;var ParamNumInteger;var ParamInfoarray of TParamDesc;var ErrorInfostring)Integer;[參數(shù)說明]QueryID報表ID。
ParamNum返回該報表輸入?yún)?shù)的個數(shù)。
ParamInfo返回該報表的輸入?yún)?shù)信息的數(shù)組。
ErrorInfo該函數(shù)執(zhí)行失敗時的錯誤信息。
整型,返回0表示成功,否則為錯誤號。
(4)GetQueryDataByQueryID[函數(shù)含義]得到某報表的查詢結(jié)果[函數(shù)說明]通過該API函數(shù)取得當(dāng)前用戶在某報表中的查詢結(jié)果,用于Client端報表查詢的顯示。
function GetQueryDataByQueryID(QueryID,
ParamNumInteger;ParamNameArray,ParamValueArrayOLEVariant;var FieldNum,RecordNumInteger;var FieldNameArray,RecordDataArrayOLEVatiant;var ErrorInfostring)Integer;[參數(shù)說明]QueryID報表ID。
ParamNum該報表輸入?yún)?shù)的個數(shù)。
ParamNameArray該報表輸入?yún)?shù)的參數(shù)名數(shù)組。
ParamValueArray該報表輸入?yún)?shù)的參數(shù)值數(shù)組。
FieldNum返回該報表查詢結(jié)果集的字段數(shù)。
RecordNum返回該報表查詢結(jié)果集的記錄條數(shù)。
FieldNameArray返回該報表查詢結(jié)果集的字段的字段名數(shù)組。
RecordDataArray返回該報表查詢結(jié)果集的記錄的記錄數(shù)組。
ErrorInfo該函數(shù)執(zhí)行失敗時的錯誤信息。
整型,返回0表示成功,否則為錯誤號。
Client端通過API接口調(diào)用控件進行對Server端的上述API函數(shù)調(diào)用,得到報表信息,就可以顯示出報表。
該接口調(diào)用控件可通過微軟公司的DCOM協(xié)議來完成對Server端遠程對象、遠程方法的調(diào)用。
圖1所示是Client端顯示報表實現(xiàn)的信號交互過程示意圖,其信號交互過程如下1、客戶端登錄服務(wù)器端后,向服務(wù)器端發(fā)出請求報表的類別信息,服務(wù)器端返回該客戶有權(quán)使用的報表類別信息并顯示于客戶端的顯示界面上;2、客戶端向服務(wù)器端發(fā)出請求某類別下的報表信息,服務(wù)器端返回該客戶有權(quán)使用的報表信息并顯示于客戶端的顯示界面上;3、客戶端向服務(wù)器端發(fā)出請求某報表的輸入?yún)?shù)信息,服務(wù)器端返回該客戶有權(quán)使用的輸入?yún)?shù)信息并在客戶端的顯示界面上構(gòu)建一輸入?yún)?shù)的輸入界面,以供使用者輸入相關(guān)參數(shù);4、客戶端將輸入?yún)?shù)傳遞給服務(wù)器端同時向服務(wù)器端發(fā)出請求報表結(jié)果的信息,服務(wù)器端根據(jù)客戶端的輸入?yún)?shù)返回該報表的結(jié)果信息并顯示于客戶端的顯示界面上。
上述過程中,Client通過輸入用戶名、密碼登錄Server后,得到該Client的唯一ID,Client的每個請求調(diào)用,都需要將唯一的Client的ID,傳遞給Server,Server通過數(shù)據(jù)庫中tblQueryTable中Role字段的權(quán)限列表,進行用戶權(quán)限的控制,過濾掉Client無權(quán)限的數(shù)據(jù)。另外,在GetQueryDataByQueryID函數(shù)中,Server也可以根據(jù)Client不同的權(quán)限,返回給Client不同的報表查詢結(jié)果。這樣,通過一種簡便的方式,即可實現(xiàn)不同權(quán)限的用戶,看到不同的報表,不同的報表輸入?yún)?shù),不同的報表查詢結(jié)果,實現(xiàn)了非常靈活的報表機制。同時,通過在Server的數(shù)據(jù)庫中的tblQueryTable表和tblQueryParamTable表中記錄的實時增加、修改,可以方便的實現(xiàn)Client端報表的實時更新。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求書的保護范圍為準(zhǔn)。
權(quán)利要求
1.一種實時修改客戶端數(shù)據(jù)報表的方法,包括下列步驟A)在服務(wù)器端進行報表配置;B)客戶端通過調(diào)用服務(wù)器端的應(yīng)用程序接口函數(shù)(API函數(shù)),取得自身在服務(wù)器端有使用權(quán)限的數(shù)據(jù)報表。
2.如權(quán)利要求1所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于所述步驟A)包括在服務(wù)器端數(shù)據(jù)庫建立報表的配置數(shù)據(jù)表,該報表的配置數(shù)據(jù)表包括報表基本信息表和報表參數(shù)表。
3.如權(quán)利要求2所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于所述報表基本信息表至少包括有報表ID、報表名稱、報表權(quán)限和報表類別字段;所述報表參數(shù)表至少包括有報表參數(shù)ID、報表參數(shù)名、報表參數(shù)關(guān)聯(lián)的報表ID和參數(shù)數(shù)據(jù)類型字段。
4.如權(quán)利要求1所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于所述步驟B)中客戶端調(diào)用服務(wù)器端API函數(shù)是通過其API接口調(diào)用控件來實現(xiàn)的。
5.如權(quán)利要求1所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于所述步驟B)更包括如下步驟B1)客戶端登錄服務(wù)器端后,向服務(wù)器端發(fā)出請求報表的類別信息,服務(wù)器端返回該客戶有權(quán)使用的報表類別信息并顯示于客戶端的顯示界面上;B2)客戶端向服務(wù)器端發(fā)出請求某類別下的報表信息,服務(wù)器端返回該客戶有權(quán)使用的報表信息并顯示于客戶端的顯示界面上;B3)客戶端向服務(wù)器端發(fā)出請求某報表的輸入?yún)?shù)信息,服務(wù)器端返回該客戶有權(quán)使用的輸入?yún)?shù)信息并在客戶端的顯示界面上構(gòu)建一輸入?yún)?shù)的輸入界面,以供使用者輸入相關(guān)參數(shù);B4)客戶端將輸入?yún)?shù)傳遞給服務(wù)器端同時向服務(wù)器端發(fā)出請求報表結(jié)果的信息,服務(wù)器端根據(jù)客戶端的輸入?yún)?shù)返回該報表的結(jié)果信息并顯示于客戶端的顯示界面上。
6.如權(quán)利要求5所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于當(dāng)客戶端登錄服務(wù)器端后,從服務(wù)器端得到一唯一ID,客戶端每次發(fā)出請求信息時,都將該唯一的ID傳遞給服務(wù)器端。
7.如權(quán)利要求1所述的實時修改客戶端數(shù)據(jù)報表的方法,其特征在于所述客戶端有使用權(quán)限的數(shù)據(jù)報表可通過服務(wù)器端的報表配置進行設(shè)定或動態(tài)修改。
全文摘要
本發(fā)明有關(guān)一種實時修改客戶端數(shù)據(jù)報表的方法,包括步驟A)在服務(wù)器端進行報表配置;B)客戶端通過調(diào)用服務(wù)器端的應(yīng)用程序接口函數(shù)(API函數(shù)),取得自身在服務(wù)器端有使用權(quán)限的數(shù)據(jù)報表。本發(fā)明通過服務(wù)器端的數(shù)據(jù)配置可實時更新客戶端的報表統(tǒng)計數(shù)據(jù)項、顯示格式和權(quán)限;服務(wù)器端進行報表修改后,客戶端程序無需進行升級即可實時得到修改后的報表。
文檔編號G06F17/00GK1591392SQ0315619
公開日2005年3月9日 申請日期2003年9月4日 優(yōu)先權(quán)日2003年9月4日
發(fā)明者戎兵, 劉小剛 申請人:華為技術(shù)有限公司