摘 要:在管理信息系統和數據庫應用軟件的開發過程中,需投入大量的時間來進行日常數據輸入、維護應用軟件的開發。本文從數據庫底層設計入手,介紹了三種可以實現數據輸入、維護管理通用化設計的途徑和方法。
關鍵詞:數據庫;信息管理系統開發;通用化;數據輸入維護
中圖分類號:TP31 文獻標識碼:A 文章編號:1674-7712 (2013) 18-0000-01
一、前言
采用Power Builder開發信息管理系統,往往需在日常數據的輸入管理軟件開發上花大量的時間,如何實現輸入過程的通用化,這是一個值得研究、非常有意義的問題。要實現數據錄入過程的通用化設計,就必須研究每一張數據庫表的結構和型式,應當將同類型或結構相似的數據表進行歸類,針對每一類數據庫表采用一個通用的數據輸入窗口。另外,也可以采用文獻[1]介紹的數據庫分級技術,在對數據庫結構進行合理設計的基礎上,實現數據輸入過程的通用化設計。更為通用的做法,則是用軟件的方法來實現動態通用報表的設計。顯然,這對軟件開發人員而言有很高的要求。
筆者用Power Builder開發了一些信息管理系統,現將在通用化輸入管理方面的一點經驗與積累,介紹如下:
二、數據錄入管理過程通用化的途徑與方法
(一)數據錄入過程通用化設計的前提條件
為了實現數據錄入過程的通用化設計,需要考慮對每個記錄進行錄入、刪除、更新、檢索、調用等操作,盡可能實現規范化的設計。而數據庫結構的規范與標準化設計是數據錄入管理通用化設計的前提條件。如果可以設計出通用化的庫結構,也就可以開發一個通用的數據錄入與維護窗口。例如,我們可以將鉆井錄井中的氣測、鉆時、巖屑、泥漿等錄井要求,在一個通用化應用程序窗口中實現維護操作的一個簡單的窗口界面應用實例。
(二)通用化的途徑與方法
1.改變數據窗口的對象屬性
如果可以實現數據錄入窗口的通用化設計,則可以考慮將數據錄入過程在一個窗口中實現。
(1)每一張數據表,創建相應的數據窗口對象,分別如下(記為列表1):庫表名稱:BABA BABD BABE BABF BABG BABH BABI 存儲功能要求:索引表 巖屑錄井 鉆時錄井 氣測錄井 泥漿錄井 測井 取芯 數據窗口對象名稱:d_baba_list1 d_babd_list1 d_babe_list1 d_babf_list1 d_babg_list1 d_babh_list1 d_babi_list1 對應RadioButton按鈕Clicked事件中的腳本:—— DataRetrieve(dw_1, 'd_babd_list1',wellname) DataRetrieve(dw_1, 'd_babe_list1',wellname) DataRetrieve(dw_1, 'd_babf_list1',wellname) DataRetrieve(dw_1, 'd_babg_list1',wellname) DataRetrieve(dw_1, 'd_babh_list1',wellname) DataRetrieve(dw_1, 'd_babi_list1',wellname)
由于這些數據檢索操作都是按照井號來調用的,因此定義一個當前輸入井井號的全局變量wellname。
(2)在窗口對象中建立一個數據窗口操作函數:dataretrieve(datawindow dwname;string tablename;string well_name) returns integer。該操作的具體腳本如下:
int k
dwname.dataobject=tablename
dwname.settransobject(sqlca)
dwname.retrieve(well_name)
k=dwname.rowcount()
return(k)
該窗口函數的功能就是在數據窗口對象dwname中確定指定數據窗口對象的名稱,并從該對象所對應的數據庫表中檢索指定well_name井的數據。
(3)在每個Radiobutton按鈕的Clicked!事件中添加的腳本請參見列表1的介紹。
利用上述方法就可實現地質錄井數據的通用化輸入維護管理。實際上,鉆井工程井史數據庫中的大部分數據都可采用這樣的方法,進行用戶定制化數據窗口的設計,并實現數據管理、維護的通用化處理。
2.采用select語句
為避免創建數據窗口對象的麻煩,可采用select語句來動態創建數據窗口對象。此時,可以創建一個dataretrieve_s(datawindow dwname;string tablename;string well_name; string typename) returns string窗口函數。具體腳本如下:
string syntax , errors
syntax=\"SELECT * FROM \"+tablename+\" WHERE \"+tablename +\".jh='\"+well_name+\"'\"
dwname.Create(SyntaxFromSQL(sqlca,synaxst,\"style(type=\"+typename+\")\",errors))
if errors='' then
dwname.settransobject(sqlca)
dwname.retrieve(well_name)
dwname.rowcount()
end if
return(errors)
對應RadioButton按鈕的腳本事件就變為:DataRetrieve_S(dw_1, tablename,well_ name , ’grid’),其中tablename是字串型變量,其值為庫表名稱;typename為數據窗口對象的類型。雖然上述方法避開了創建數據窗口對象的麻煩,但是要想獲得具有專業外觀的應用效果,就需要采用modify()函數進行動態修正,這是一件十分麻煩的事情。
3.采用數據庫分級方法
分析、比較可以發現BABD、BABE、BABF、BABG這四張表的物理結構相似,完全可以采用文獻[1]介紹的數據庫分級技術,將這四張表用主輔兩張數據表統一表示。數據庫結構的統一設計是實現數據輸入、輸出,以及報表管理科學化的基礎,采用主、輔數據庫結構之后,在數據的組織管理上進行通用化的設計,從而為實現數據輸入管理的通用化設計打下基礎。
三、結束語
數據庫結構的規范與標準化設計是數據錄入管理通用化設計的前提條件。筆者在此介紹了通過“改變數據窗口的對象屬性”、“采用select語句來動態創建數據窗口對象”,以及“建立數據庫主、副數據庫表”的方法,來實現數據輸入、維護管理的通用化設計過程。
參考文獻:
[1]呂苗榮,古德生.分級技術在礦山信息管理系統中的應用與實踐[J].金屬礦山,2003(1):41-44.