摘要:文件檔案管理系統(tǒng)是辦公自動化系統(tǒng)的一個(gè)重要的組成部分。本系統(tǒng)的重點(diǎn)在于將文檔按照部門機(jī)關(guān)和文檔類別進(jìn)行分類列表,從而方便用戶查詢文檔信息。文件列表減少了用戶在查找時(shí)所耗費(fèi)的時(shí)間。強(qiáng)大的管理功能保證了文檔資料能夠最大化實(shí)現(xiàn)其價(jià)值,作為公司各個(gè)部門有力的參考資料,優(yōu)化企業(yè)資源。
關(guān)鍵詞:文檔管理;數(shù)據(jù)備份與數(shù)據(jù)恢復(fù);ADO.NET;VB
中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)08-10ppp-0c
1 引言
在日常工作和學(xué)習(xí)中,我們必然積累了大量的文檔資料,這些資料大部分是以Word、Excel、PowerPoint、Notes公文、各類圖片等形式存在。隨著時(shí)間的推移,這些資料積累越來越多,特別在企業(yè)信息資料和文檔的管理帶來了許多難題。我們分析了大量的中小型企業(yè)和公司,在企業(yè)信息和文檔的管理上普遍存在以下問題:文檔管理較亂,查找困難企業(yè)在運(yùn)作過程中積累的大量圖形文件、設(shè)計(jì)文件、Word文檔,代碼文件等等目前采用的僅僅是操作系統(tǒng)提供的文件管理功能,所有文件存放在各自使用的計(jì)算機(jī)或文件服務(wù)器中,分別由不同人來維護(hù),往往造成同一設(shè)計(jì)文件有多處備份。 文檔安全性差,由于目前企業(yè)的大量文件存放在各自使用的計(jì)算機(jī)或文件服務(wù)器中,分別由不同人來維護(hù),需要共享時(shí),一般都只是利用局域網(wǎng)簡單的共享文件,這樣容易造成文件被不需要的人拿到或者看到,造成信息泄密。并且由于缺乏安全的備份策略,有的文件甚至?xí)蝗藧阂獾膭h除掉,給企業(yè)造成重大的損失??梢哉f企業(yè)信息是企業(yè)生命所在,沒有企業(yè)信息的安全就沒有企業(yè)的安全。
因此,我們需要一個(gè)專門的文檔管理系統(tǒng)來管理那些凌亂的資料,它可以是我們的工作更加趨向與高效率和高質(zhì)量。還可以是我們的文檔信息更加具有安全性。
2 文檔管理系統(tǒng)的簡介
本系統(tǒng)實(shí)現(xiàn)了企業(yè)對大量文件、資料的規(guī)范管理,可以將企業(yè)的所有設(shè)計(jì)文檔全部按產(chǎn)品結(jié)構(gòu)樹進(jìn)行分類管理,并且提供了完善的版本及權(quán)限管理機(jī)制,確保技術(shù)文檔管理的安全性和有效性;另外,系統(tǒng)提供的圖檔關(guān)聯(lián)功能可以將同一圖檔關(guān)聯(lián)到其它多個(gè)產(chǎn)品結(jié)構(gòu)樹分支上,實(shí)現(xiàn)一圖多用,保證了圖檔的一致性。
本系統(tǒng)能改善企業(yè)現(xiàn)有的圖文檔管理現(xiàn)狀,提高管理規(guī)范性、安全保密性、操作可控性和版本一致性,從而提高產(chǎn)品數(shù)據(jù)信息的利用率,改善電子設(shè)計(jì)資料管理混亂的局面,為提高企業(yè)的技術(shù)創(chuàng)新能力和產(chǎn)品設(shè)計(jì)及研發(fā)效率起到非常重要的作用,同時(shí)也為后期的PDM 系統(tǒng)集成奠定良好的基礎(chǔ)。
文件檔案管理系統(tǒng)是辦公自動化系統(tǒng)的一個(gè)重要的組成部分。本系統(tǒng)是以VB.NET為前臺開發(fā)工具,SQL SERVER 2000為后臺數(shù)據(jù)庫的文檔管理系統(tǒng),其數(shù)據(jù)庫連接主要運(yùn)用了VB.NET中的ADO.NET控件。本文檔系統(tǒng)主要由用戶查詢、文檔管理和用戶管理三個(gè)大的功能模塊組成。用戶查詢是一般用戶登錄系統(tǒng)到一般用戶界面可以對文檔進(jìn)行查詢?nèi)缓蟛殚單臋n內(nèi)容。管理員主要負(fù)責(zé)對文檔信息的管理和用戶信息管理,文檔信息管理主要是對歸檔文檔信息的更改,刪除等操作。用戶信息管理同樣是對用戶信息的添加,刪除,更新的操作。本系統(tǒng)的重點(diǎn)在于將文檔按照部門機(jī)關(guān)和文檔類別進(jìn)行分類列表,從而方便用戶查詢文檔信息。文件列表減少了用戶在查找時(shí)所耗費(fèi)的時(shí)間。強(qiáng)大的管理功能使管理員對文檔信息和其他信息在長時(shí)間里做到實(shí)效性的維護(hù),對文檔進(jìn)行了合理有效的管理。保證了文檔資料能夠最大化實(shí)現(xiàn)其價(jià)值,作為公司各個(gè)部門有力的參考資料,優(yōu)化企業(yè)資源。
3 流程分析
文檔管理系統(tǒng)數(shù)據(jù)流程圖如圖1所示。

圖1 數(shù)據(jù)流程
4 數(shù)據(jù)庫設(shè)計(jì)
4.1 文檔管理系統(tǒng)功能分析
4.1.1 功能需求分析
該系統(tǒng)的主要功能是有效的管理用戶在工作中積累的大量文檔資料,使用戶更加有效的管理資料和保證用戶資料的安全性。文檔要是保存到文檔管理系統(tǒng),就存入了數(shù)據(jù)庫中,數(shù)據(jù)庫具有很高的安全性。而且系統(tǒng)的數(shù)據(jù)備份與數(shù)據(jù)恢復(fù)功能可以有效的避免資料的丟失等問題。該系統(tǒng)還要有數(shù)據(jù)的查詢功能,這是用戶所必須的。用戶可以很快的從大量的文檔資料中查找出自己所需的資料。用戶還可以打開數(shù)據(jù)庫中的文檔資料進(jìn)行修改,然后保存到數(shù)據(jù)庫中。用戶可以把所需要的資料保存入庫,隨時(shí)在系統(tǒng)中打開。要是用戶想打印文檔,可以直接在系統(tǒng)中打印。
4.1.2 功能設(shè)計(jì)
系統(tǒng)分為系統(tǒng)操作、系統(tǒng)維護(hù)、系統(tǒng)管理三個(gè)模塊。系統(tǒng)操作包括:對樹形結(jié)構(gòu)圖中的節(jié)點(diǎn)的操作(增加節(jié)點(diǎn)、刪除當(dāng)前節(jié)點(diǎn)、修改當(dāng)前節(jié)點(diǎn)),當(dāng)在菜單欄或用快捷菜單進(jìn)行操作是都會實(shí)現(xiàn)其功能。用戶可以修改或添加節(jié)點(diǎn)來增強(qiáng)系統(tǒng)文檔的名稱,從而使文檔更加有條理,更清晰。添加文檔是用戶可以將打開的文檔保存入數(shù)據(jù)庫中。系統(tǒng)維護(hù)包括:數(shù)據(jù)備份和數(shù)據(jù)還原系統(tǒng)初始化,用戶可以在必要的時(shí)候進(jìn)行數(shù)據(jù)備份,以防數(shù)據(jù)丟失。就算丟失了還有一招就是可以數(shù)據(jù)還原。在數(shù)據(jù)備份的時(shí)候選好路徑就可以開始備份了,當(dāng)備份完成是會彈出備份完成的消息欄。
4.2 數(shù)據(jù)庫的設(shè)計(jì)
打開SQL SERVER中的企業(yè)管理器,連接好服務(wù)器之后,右鍵單擊數(shù)據(jù)庫,然后新建數(shù)據(jù)庫,新建數(shù)據(jù)庫表。建立4個(gè)表,分別命名為表excel,表txt,表doc和表image. 然后用導(dǎo)入數(shù)據(jù)的方式將excel、txt文檔、doc文檔和image類型文檔將他們存儲在不同的表中。必須注意的是存儲它們的數(shù)據(jù)類型要用image類型。在建立一個(gè)數(shù)據(jù)庫表是存儲用戶名和用戶登錄密碼的表,命名為用戶。系統(tǒng)是通過用戶表在用戶登錄時(shí)驗(yàn)證用戶名和密碼。如果密碼和用戶名都正確用戶才能進(jìn)入系統(tǒng)主界面,如果密碼或用戶名錯(cuò)誤,則會顯示密碼或用戶名錯(cuò)誤的信息提示。
5 結(jié)構(gòu)圖的設(shè)計(jì)
各功能模塊的設(shè)計(jì)圖如圖2所示。

圖2 系統(tǒng)結(jié)構(gòu)圖
6 系統(tǒng)的實(shí)現(xiàn)
6.1 系統(tǒng)界面的設(shè)計(jì)
6.1.1 登錄界面如圖3

圖3 登錄界面
6.1.2 系統(tǒng)主界面設(shè)計(jì)如圖4

圖4 系統(tǒng)主界面
6.1.3 數(shù)據(jù)還原與備份界面如圖5

圖5 數(shù)據(jù)還原與備份界面
6.2 系統(tǒng)部分功能代碼
6.2.1 命名空間里輸入以下代碼
Imports system.data.common
6.2.2 Form1的load事件代碼
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With OpenFileDialog1
.Filter = \"Office Documents \" _
\"(*.doc,*.xls,*.txt)|*.doc;*.xls;*.txt\"
.FilterIndex = 1
End With
TreeView1.ImageList = ImageList1
Dim n1 As New TreeNode(\"所有文件\")
n1.ImageIndex = 0
Dim i As Integer
For i = 1 To 10
Dim n2 As New TreeNode(i)
n2.ImageIndex = 1
Next
End Sub
6.2.3 新增節(jié)點(diǎn)代碼
Private Sub 新增節(jié)點(diǎn)ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新增節(jié)點(diǎn)ToolStripMenuItem.Click
Dim newnode As TreeNode = New TreeNode(\"節(jié)點(diǎn)名稱\")
TreeView1.SelectedNode.Nodes.Add(newnode)
End Sub
6.2.4 刪除當(dāng)前節(jié)點(diǎn)代碼:
Private Sub 刪除當(dāng)前節(jié)點(diǎn)ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 刪除當(dāng)前節(jié)點(diǎn)ToolStripMenuItem.Click
TreeView1.Nodes.Remove(TreeView1.SelectedNode)
End Sub
6.2.5 添加文檔代碼:
Private Sub 添加文檔ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 添加文檔ToolStripMenuItem.Click
Dim strFileName As String
With OpenFileDialog1
.FileName = \"\"
.ShowDialog()
strFileName = .FileName
End With
If strFileName.Length Then
oDocument = Nothing
WebBrowser1.Navigate(strFileName)
End If
End Sub
6.2.6 數(shù)據(jù)備份代碼:
Dim conn As New SqlConnection(\"server=\" TextBox1.Text \";database=Erms;Integrated Security=SSPI\")
Try
Dim comm As New SqlCommand
conn.Open()
Dim flie As String
flie = TextBox1.Text
If Len(Dir(flie)) Then
Kill((flie))
End If
'ComboBox1.Text 為數(shù)據(jù)庫名稱 flie 為要備份的路徑
comm.CommandText = \"backup database \" ComboBox1.Text \" to disk='\"
Flie+\"’ \"
comm.Connection = conn
comm.ExecuteNonQuery()
MsgBox(\"備份成功!\", MsgBoxStyle.Exclamation, \"提示信息\")
Catch ex As Exception
MsgBox(\"發(fā)生異常,異常原因:\" ex.Message, MsgBoxStyle.Exclamation, \"
提示信息\")
Finally
conn.Close()
End Try
6.2.7 數(shù)據(jù)還原
還原的時(shí)候一般還原本系統(tǒng)的數(shù)據(jù)庫時(shí)候都會報(bào)錯(cuò),顯示數(shù)據(jù)庫正在使用,所以我們需要先銷毀進(jìn)程,然后在別的數(shù)據(jù)庫中來還原我們使用的數(shù)據(jù)庫。在master數(shù)據(jù)庫中新建這樣一個(gè)存儲過程。
create prockillspid(@dbname varchar(20))
as
begin
declare@sqlnvarchar(500),@tempvarchar(1000)
declare@spid int
set@sql='declaregetspidcursorfor
selectspid fromsysprocesseswheredbid=db_id('''+@dbname+''')'
exec(@sql)
opengetspid
fetchnextfromgetspidinto @spid
while@@fetch_status =0
begin
set@temp='kill '+rtrim(@spid)
exec(@temp)
fetchnextfromgetspidinto@spid
end
closegetspid
deallocategetspid
end
然后再在數(shù)據(jù)還原中寫入以下代碼:
If sql(\"execute killspid '\" ComboBox1.Text \"'\") Then
Else
Exit Sub
End If
If sql(\"RESTORE DATABASE \" ComboBox1.Text \" FROM DISK = '\"
TextBox2.Text \"'\") Then
MsgBox(\"還原成功\", MsgBoxStyle.Exclamation, \"提示信息\")
Else
Exit Sub
End If
7 系統(tǒng)實(shí)現(xiàn)效果(如圖6)

圖6 系統(tǒng)實(shí)現(xiàn)效果圖
8 結(jié)束語
本系統(tǒng)能改善企業(yè)現(xiàn)有的圖文檔管理現(xiàn)狀,提高管理規(guī)范性、安全保密性、操作可控性和版本一致性,從而提高產(chǎn)品數(shù)據(jù)信息的利用率,改善電子設(shè)計(jì)資料管理混亂的局面,為提高企業(yè)的技術(shù)創(chuàng)新能力和產(chǎn)品設(shè)計(jì)及研發(fā)效率起到非常重要的作用,同時(shí)也為后期的PDM 系統(tǒng)集成奠定良好的基礎(chǔ)系統(tǒng)制作的難點(diǎn)在于如何將數(shù)據(jù)庫中的文檔與樹形結(jié)構(gòu)中的節(jié)點(diǎn)綁定并顯示在WEBBROWSE控件中。
參考文獻(xiàn):
[1]徐國智,汪孝宜.SQL SERVER數(shù)據(jù)庫開發(fā)實(shí)例精粹[M].北京:電子工業(yè)出版社,2006.
[2]Michael Halvorson,著,李宏益,趙明,陳強(qiáng),等,譯.VISUAL BASIC.NET程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.
[3]趙松濤.SQL SERVER2000系統(tǒng)管理實(shí)錄[M].北京:電子工業(yè)出版社,2002.
[4]劉保順.Visual Basic.NET數(shù)據(jù)庫開發(fā)[M].北京:清華大學(xué)出版社,2004.
[5]耿文蘭.SQL Server2000數(shù)據(jù)庫管理與開發(fā)[M].北京:電子工業(yè)出版社,2003.