【正文】
String Dim datasource As String provider = provider= datasource = data source= amp。 \ With Adodc1 .Mode = adModeReadWrite .ConnectionString = provider amp。 amp。當(dāng)找到記錄后,可以對(duì)其進(jìn)行相對(duì)的刪除、修改等操作。當(dāng)表中記錄移到最前面( BOF)或最后面( EOF)時(shí),會(huì)把上一條或下一條其中的一個(gè)按鈕的 enable 屬性設(shè)置為 true。 上一條與下一條主要代碼如下: 39。移動(dòng)記錄 = True If Then = False End If 添加用戶可以添加使用該管理軟件的用戶。軟件默認(rèn)為兩個(gè)級(jí)別:管理員、普通用戶。普通用戶,只有普通的查看、查詢、備份、添加等權(quán)力。在添加用戶時(shí)你可以選擇一個(gè)且必須選擇一個(gè)。一經(jīng)刪除即不可以在恢復(fù)。 刪除操作部分代碼: If = 1 Then = False End If If (MsgBox(你真的想刪除當(dāng)前記錄嗎? , vbOKCancel, 系統(tǒng)提示 )) = vbOK 25 學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) Then End If 編輯操作可以對(duì)當(dāng)前所選擇的用戶進(jìn)行編輯,可以修改其用戶名與密碼。修改記錄即更新表中的某一條記錄。因?yàn)樗械脑O(shè)置都在此進(jìn)行。寢室的添加、修改、刪除以及班級(jí)的添加、修改和刪除操作。這里主要涉及到的問(wèn)題是datagrid 的顯示,以及 treeview 及時(shí)形成新的結(jié)構(gòu)。 在點(diǎn)擊 sstab 各版的時(shí)候,要在這時(shí)重新生成寢室設(shè)置中的樹型結(jié)構(gòu), Select Case PreviousTab Case 0 Call startree1 Case 1 Dim I As Integer I = 1 If 0 Then Do While I ((宿舍 名稱 )) I = I + 1 Loop End If Call startree1 Case 2 Call startree1 End Select End Sub (1) 宿舍 設(shè)置 ① 宿舍 設(shè)置效果圖 27 學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 圖 設(shè)置 ② 界面制作與實(shí)現(xiàn)方法 在這個(gè)界面中主要用到了一個(gè) Sstab 控件與一個(gè)顯示表中內(nèi)容的 Datagrid 控件。 在右下角的文本框中可以輸入想要添加的 宿舍 名稱。 Datagrid 中會(huì)立即刷新顯示更新內(nèi)容。然后點(diǎn)擊更新就會(huì)完成此操作。刪除操作更為簡(jiǎn)單,選擇想要?jiǎng)h除的 宿舍 名稱,點(diǎn)擊刪除,確認(rèn)后完成此操作。其它表的有關(guān)此 宿舍 的信息還會(huì)存在。 在添加前要判斷所寫 宿舍 名稱是否正確,即是否輸入名稱,該記錄不能為空,不為空則對(duì)數(shù)據(jù)庫(kù)表進(jìn)行查找,判斷當(dāng)前輸入記錄是否已在表中存在,如果已存在,則會(huì)給出提示,不存在,添加成功。 amp。 39。 amp。 39。 amp。 39。 amp。用到的控件主要是 Sstab 與30 第四章 程序設(shè)計(jì) Treeview。 在添加一個(gè)寢室前先要選擇所要添加寢室所在的 宿舍 。樹中的節(jié)點(diǎn)在點(diǎn)擊后會(huì)把父節(jié)點(diǎn)顯示在選擇 宿舍 后面的列表框中,而選中的節(jié)點(diǎn)會(huì)出現(xiàn)在寢室名稱里。添加后會(huì)把 Treeview 重新刷新一下。 添加源碼: 宿舍 名稱 =39。 amp。 If = True Then MsgBox 此 宿舍 不存在 , , 提示 Exit Sub End If If = Or = Then MsgBox 請(qǐng)輸入所要添加的寢室及其所屬 宿舍 , , 提示 Exit Sub End If With Adodc2 . .(0).Value = .(1).Value = . End With = = Call startree1 修改操作可以把當(dāng)前選中的寢室進(jìn)行名稱修改與其所屬 宿舍 進(jìn)行修改。當(dāng)要對(duì)當(dāng)前寢室的所屬 宿舍 進(jìn)行修改時(shí),需要先選擇所要修改的寢室,然后在上面的 宿舍 名稱后填寫所要修改的寢室名稱。但是這種操作不是常見。 amp。 39。sql = select * form qinshi where 宿舍 名稱 =39。 Trim() amp。 and 寢室 =39。 Trim() amp。 update qinshi set 寢室 =39。 amp。,宿舍 名稱 =39。 Trim() amp。where 寢室 =39。 Trim() amp。and 宿舍 名稱 =39。 Trim() amp。 = = Call startree1 刪除操作可以刪除掉當(dāng)前樹型 顯示中的任何一個(gè)子節(jié)點(diǎn),也就是這個(gè)樹型節(jié)點(diǎn)中的寢室名稱,注意的是,刪除后這個(gè)記錄只在 qinshi 表中刪除,其相關(guān)記錄不會(huì)被刪除掉的,如果想刪除,還需要人工操作。實(shí)現(xiàn)的部分代碼如下所示: If = Or = Or = 宿舍 管理系統(tǒng) Then MsgBox 選擇所要?jiǎng)h除的寢室 , , 提示 Exit Sub End If If (MsgBox(你真的想刪除 amp。 amp。 amp。 amp。 39。 amp。 39。在這個(gè)界面中主要用到了一個(gè) Sstab 控件與一個(gè)顯示表中內(nèi)容的 Datagrid 控件。 在右下角的文本框中可以輸入想要添加的班級(jí)名稱。 Datagrid 中會(huì)立即刷新顯示更新內(nèi)容。然后點(diǎn)擊更新就會(huì)完成此操作。刪除操作更為簡(jiǎn)單,選擇想要?jiǎng)h除的班級(jí)名稱,點(diǎn)擊 刪除,確認(rèn)后完成33 學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 此操作。 amp。 39。 amp。因?yàn)樵诓僮髦锌赡軙?huì)導(dǎo)致數(shù)據(jù)遭到破壞,或者是系統(tǒng)的原因使數(shù)據(jù)庫(kù)損壞,或者是一些其它的人為原因,這樣你可以用此功能把數(shù)據(jù)恢復(fù)到最后一次備份的狀態(tài) ,使損失做到最少,經(jīng)常備份,操作起來(lái)更有安全感。然后點(diǎn)擊數(shù)據(jù)備份即可。 amp。 amp。 \ dbasize = FileLen(PathName) err: Exit Sub 數(shù)據(jù)備份部分在本程序中用到了一個(gè)模塊,在模塊中有一個(gè)方法, dobackup。 Dobackup 實(shí)現(xiàn)方法代碼如下所示: Dim lFileOp As Long Dim lresult As Long Dim lFlags As Long Dim SHFileOp As SHFILEOPSTRUCT Dim strSourceDir As String Dim strDestinationDir As String = vbHourglass 36 第四章 程序設(shè)計(jì) BackupFolderName = strDestinationPath MkDir BackupFolderName amp。 Format(Date, ) lFileOp = FO_COPY lFlags = lFlags And Not FOF_SILENT lFlags = lFlags Or FOF_NOCONFIRMATION lFlags = lFlags Or FOF_NOCONFIRMMKDIR lFlags = lFlags Or FOF_FILESONLY With SHFileOp .wFunc = lFileOp .pFrom = strSourcePath amp。 \Backup amp。 vbNullChar .fFlags = lFlags End With lresult = SHFileOperation(SHFileOp) = vbDefault = Backup Complete 在備份分前先要選擇一個(gè)備份路徑,點(diǎn)擊 … 那個(gè)按鈕開始進(jìn)行選擇,實(shí)現(xiàn)方法如下: Dim strTemp As String strTemp = fBrowseForFolder(, Select backup path) If strTemp Then txtDestination = strTemp End If 數(shù)據(jù)恢復(fù)界面同上,它的功能主要是在當(dāng)前數(shù)據(jù)庫(kù)遭到破壞后,可以利用它來(lái)進(jìn)行數(shù)據(jù)恢復(fù),在數(shù)據(jù)恢復(fù)前要選擇所要恢復(fù)的數(shù)據(jù)庫(kù)路徑,如下: Dim strTemp As String strTemp = fBrowseForFolder(, Restore From) If strTemp Then txtSource = strTemp dbasize2 = FileLen(txtSource amp。 Format((dbasize2 / 1024) / 1024, standard) amp。File Not Found lblSelectedDba = No Backup at this location = False End Select 它主要是查看數(shù)據(jù)庫(kù)是否存在,如果所恢復(fù)的數(shù)據(jù)不存在,則會(huì)提示錯(cuò)誤。數(shù)據(jù)恢復(fù)代碼如下: If MsgBox(Restoring database from location amp。 will replace existing database you want to Contunue, vbYesNo) = vbYes Then DoRestore , If NoDba = True Then MsgBox Database Restored Click Ok to Exit Program Unload frmRestoreDba End If Else = Database Restore Canceled End If 其中 DoRestore 實(shí)現(xiàn)的功能源碼如下所示: DEFSOURCE = PROVIDER=。Data Source= DBName = \。 Set Db = New DEFSOURCE amp。 DBName Dim lFileOp As Long Dim lresult As Long Dim lFlags As Long Dim SHFileOp As SHFILEOPSTRUCT Dim strSourceDir As String Dim strDestinationDir As String = vbHourglass BackupFolderName = strDestinationPath lFileOp = FO_COPY 38 第四章 程序設(shè)計(jì) lFlags = lFlags And Not FOF_SILENT lFlags = lFlags Or FOF_NOCONFIRMATION lFlags = lFlags Or FOF_NOCONFIRMMKDIR lFlags = lFlags Or FOF_FILESONLY With SHFileOp .wFunc = lFileOp .pFrom = strSourcePath amp。 vbNullChar .pTo = strDestinationPath amp。 amp。這實(shí)屬本人精力與能力有限所置。 ①界面效果圖 圖 ②實(shí)現(xiàn)方法 在這里用到了一個(gè)顯示 gif 圖片的控件。 首先要在 list 中加載各表 名。添加表名部分在 load 進(jìn)行加載,其中的導(dǎo)出與取消按鈕是由 coolbar 制作而成。 \icon\ Dim n1 As Dim rstschema As Dim strn As String Set n1 = New strn = provider=。 data source= amp。 \ strn Set rstschema = (adSchemaTables) Do Until temp = rstschema!Table_Name If Left(temp, 1) M Then temp End If Loop = 0 On Error GoTo err PathName = amp。轉(zhuǎn)換代碼如下: Select Case Case 1 Dim provider As String Dim datasource As String provider = provider= datasource = data source= amp。 \ With Adodc1 .Mode = adModeReadWrite 40 第四章 程序設(shè)計(jì) .ConnectionString = provider amp。 amp。開始轉(zhuǎn)換 Dim Irow, Icol As Integer Dim Irowcount, Icolcount As Integer Di