鄭 煜
[摘 要]J.Martin給數(shù)據(jù)庫下了一個比較完整的定義:數(shù)據(jù)庫是存儲在一起的相關(guān)數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無有害的或不必要的冗余,并為多種應(yīng)用服務(wù);數(shù)據(jù)的存儲獨立于使用它的程序;對數(shù)據(jù)庫插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進(jìn)行。當(dāng)某個系統(tǒng)中存在結(jié)構(gòu)上完全分開的若干個數(shù)據(jù)庫時,則該系統(tǒng)包含一個“數(shù)據(jù)庫集合”。
[關(guān)鍵詞]數(shù)據(jù)庫 Access 質(zhì)量
[中圖分類號]G250[文獻(xiàn)標(biāo)識碼]A[文章編號]1007-9416(2009)12-0109-02
1 引言
數(shù)據(jù)庫有廣泛的應(yīng)用空間,可是一般人會認(rèn)為數(shù)據(jù)庫是專業(yè)化知識,數(shù)據(jù)庫開發(fā)應(yīng)該是軟件工程師才能夠完成的工作,從而使得數(shù)據(jù)庫的應(yīng)用客戶都視其復(fù)雜的開發(fā)技術(shù)為畏途。數(shù)據(jù)庫離我們到底有多遠(yuǎn)?以下我們就以一個生產(chǎn)廠的質(zhì)量管理系統(tǒng)開發(fā)過程進(jìn)行表述。
2 數(shù)據(jù)庫的支架
數(shù)據(jù)庫不會憑空產(chǎn)生,數(shù)據(jù)是數(shù)據(jù)庫的靈魂。小到家庭主婦的賬本,大到谷歌全球個人信息數(shù)據(jù)庫。凡是有數(shù)據(jù)需要記錄查詢的地方都是一個數(shù)據(jù)庫。在這里我們用一個工廠產(chǎn)品的質(zhì)量記錄作為數(shù)據(jù)庫的支架,用最簡單的微軟Access數(shù)據(jù)庫軟件來編寫程序。
我們先來熟悉下數(shù)據(jù)庫需要完成的工作,我們將產(chǎn)品的檢測性息記錄保存下來,并在日后隨時可以查詢到。生成記錄單,生成一段時期的記錄情況報表。
3 數(shù)據(jù)庫的開發(fā)過程
當(dāng)然我們首先是打開Accsee軟件,然后慢慢的進(jìn)行后面的操作。
根據(jù)上面的需要,我們的數(shù)據(jù)庫要具備以下功能,數(shù)據(jù)輸入,數(shù)據(jù)各種條件查詢,各種報表的生成。如圖1所示。
3.1 數(shù)據(jù)表
首先,我們要根據(jù)產(chǎn)品類別的不同分別建立幾張表,A類產(chǎn)品、B類產(chǎn)品、C類產(chǎn)品。將我們需要記錄的項目定義在表中。比如產(chǎn)品編號、產(chǎn)品名稱、檢測的各種數(shù)據(jù)、檢測結(jié)果等。這里面需要有一個主鍵,意思就是每一條記錄都會有一個地方是不會重復(fù)的,這里我們定義產(chǎn)品編號為主鍵,因為只有產(chǎn)品編號是一一對應(yīng)的。
我們數(shù)據(jù)的錄入不可能直接在表里面操作,雖然感覺上直接操作表上的數(shù)據(jù)熟悉的人會比較輕松,但是容易誤操作。特別是還有其他不是很熟練的人。這里我們需要自己做一個人機界面——窗口。
3.2 表窗口
于是,我們對應(yīng)每一張表,做一個數(shù)據(jù)輸入的窗口界面,這里我們需要輸入的過程中同時觀察到表的內(nèi)容,我們選擇用分割窗口來做。自動生成分割窗口后,我們可以看到之前我們在表中定義的數(shù)據(jù)都羅列在新的窗口中,我們可以通過在窗口中輸入數(shù)據(jù)來改變表中的數(shù)據(jù)。除了這些,我們還需要一些其他的按鈕來幫助我們完善界面功能,有很多按鈕系統(tǒng)都自帶了的,很方便,直接加載就可以了,比如前進(jìn)、后退、最前列、最后列、刪除、退出等。我們這里需要定義一個按鈕,準(zhǔn)備將它指引到操作界面上去。這里為了方便數(shù)據(jù)輸入,在窗口編程界面頻繁的使用了下面的程序。
Private Sub編號_Enter()
On Error GoTo AddNew
If IsNull(編號.Value) Then
編號.Value = "D" & Mid(Date, 3, 2) & Format(CLng(Mid(DMax("mid(編號,2,6)", "XL"), 3, 4) + 1), "0000")
End If
Exit Sub
AddNew:
If Err.Number = 94 Then
產(chǎn)品編號.Value = "D" & Mid(Date, 3, 2) & "0001"
End If
End Sub
意思是自動生成編號格式為T090001、T090002、T090003……的累加編號。
Private Sub 額定電流_Enter()
If IsNull(額定電流.Value) Then
額定電流.Value = DLast("額定電流", "XL")
End If
End Sub
自動重復(fù)上次輸入的數(shù)據(jù)。這兩段程序可以大幅減輕我們數(shù)據(jù)輸入的工作量。
3.3 集合查詢
表是存放數(shù)據(jù)的地方,一般情況我們都可以隨意的修改里面的數(shù)據(jù),其實是相當(dāng)不安全的,我們查找調(diào)用的數(shù)據(jù)最好不要直接引用數(shù)據(jù)表,容易被誤操作。這里我們建立一個查詢,切換到SQL試圖用SELECT “項目” from “表名稱”將數(shù)據(jù)表的內(nèi)容反映到查詢,以后我們調(diào)用的數(shù)據(jù)由查詢這里來,我們在調(diào)用的過程中就不能修改里面的內(nèi)容,加強安全性。如果想把幾張表合為一張,可以使用UNION語句來解決這個問題。
3.4 操作界面
這是軟件的人機界面,主要在上面有鏈接到表窗口、各種查詢功能的按鈕。
3.5 登陸界面
為了防止無關(guān)人隨意進(jìn)入,特別制定的一個登陸界面,里面顯示一些軟件信息,以及密碼輸入界面。只需要簡單的條件語句就可以定義密碼。密碼的設(shè)置五花八門,我這里只是一個彩蛋,Text77.Value我是默認(rèn)的一個時間time()。
If Text72.Value = Left(Right(Text77.Value, 5), 2) Then
DoCmd.Close
DoCmd.OpenForm "操作界面"
大概意思是將密碼定義為現(xiàn)在的分鐘數(shù),是一個隨時間變化而變化的動態(tài)密碼。
3.6 條件查詢
這里可以定義一些查詢條件,比如在某個時間段,產(chǎn)品檢驗合格情況,產(chǎn)品型號等,這里大量引用了where條件語句。將查詢的結(jié)果顯示在報表上面。
OpenReport“報表”
Where“條件”
3.7 生成報表
我們再在條件查詢基礎(chǔ)上,建立報表文件,將查詢的內(nèi)容調(diào)入報表相應(yīng)的文本框。格式和具體內(nèi)容根據(jù)工藝要求可以隨時修改,只要保持整潔條例清晰就好了。報表上面推薦講查詢時間與查詢條件都引用上去,讓報表更加直觀。
3.8 保存報表
生成的報表有的時候只是需要看一下,有的時候需要打印下來,當(dāng)然還有的時候希望能保存為電子文檔。這里推薦使用PDF文件打印機,可以通過打印成電子文檔PDF的方式講報表以圖片的形式保存下來。
4 結(jié)語
數(shù)據(jù)庫的無處不在,關(guān)鍵看人們怎么去應(yīng)用。應(yīng)用得當(dāng)不但可以提高工作效率,還能檢查工作中的各種不足,對工作狀態(tài)的監(jiān)控提供第一手的資料。數(shù)據(jù)庫質(zhì)量管理系統(tǒng)只是其中一個小小的應(yīng)用,不但達(dá)到了很好的管理效果,還大量節(jié)約了人力,節(jié)約了大量紙張。