【正文】
, , acSaveNo Else MsgBox 您輸入的密碼不正確!, vbCritical, 密碼錯(cuò)誤 Me![密碼].SetFocus End If End If End IfExit_用戶(hù)登錄_Click: Exit SubErr_用戶(hù)登錄_Click: MsgBox Resume Exit_用戶(hù)登錄_ClickEnd SubPrivate Sub 取消登錄_Click()On Error GoTo Err_取消登錄_Click 39。使用DoCmd對(duì)象的Quit方法退出當(dāng)前數(shù)據(jù)庫(kù)系統(tǒng) acQuitSaveNoneExit_取消登錄_Click: Exit SubErr_取消登錄_Click: MsgBox Resume Exit_取消登錄_ClickEnd Sub附錄C權(quán)限管理代碼Option Compare DatabasePrivate Sub 刪除用戶(hù)_Click()On Error GoTo Err_刪除用戶(hù)_ClickDim sTemp As StringDim i As IntegerDim Rs As Set Rs = New sTemp = Select * From 系統(tǒng)用戶(hù)39。打開(kāi)“系統(tǒng)用戶(hù)”數(shù)據(jù)表 sTemp, , adOpenKeyset, adLockOptimistic 39。使用For…Next循環(huán)語(yǔ)句在Rs數(shù)據(jù)集中循環(huán)判斷 For i = 1 To 39。判斷記錄集中的“用戶(hù)編號(hào)”字段值是否與子窗體中“用戶(hù)編號(hào)”文本框內(nèi)的值 If Rs(用戶(hù)編號(hào)) = Me![用戶(hù)編號(hào)] Then 1 i = + 1 Else End If Next i 39。關(guān)閉記錄集 39。打開(kāi)“系統(tǒng)權(quán)限”數(shù)據(jù)表 sTemp = Select * From 系統(tǒng)權(quán)限 sTemp, , adOpenKeyset, adLockOptimistic For i = 1 To If Rs(用戶(hù)編號(hào)) = Me![用戶(hù)編號(hào)] Then 1 i = + 1 Else End If Next i MsgBox 用戶(hù)資料已經(jīng)刪除完成!, vbOKOnly, 刪除完成 Me![系統(tǒng)權(quán)限管理 子窗體].Requery Me![用戶(hù)編號(hào)].Requery Me![用戶(hù)名] = Set Rs = NothingExit_刪除用戶(hù)_Click: Exit SubErr_刪除用戶(hù)_Click: MsgBox Resume Exit_刪除用戶(hù)_ClickEnd SubPrivate Sub 修改權(quán)限_Click()On Error GoTo Err_修改權(quán)限_Click 39。彈出“是否修改”窗口,提示用戶(hù)是否修改用戶(hù)權(quán)限 If MsgBox(確定要修改用戶(hù)權(quán)限嗎?, vbYesNo, 是否修改) = vbYes Then Me![系統(tǒng)權(quán)限管理 子窗體].Locked = False Else Exit Sub End IfExit_修改權(quán)限_Click: Exit SubErr_修改權(quán)限_Click: MsgBox Resume Exit_修改權(quán)限_ClickEnd SubPrivate Sub 用戶(hù)編號(hào)_AfterUpdate()On Error GoTo Err_用戶(hù)編號(hào)_AfterUpdate 39。使用DLookup函數(shù)在“系統(tǒng)用戶(hù)”數(shù)據(jù)表中搜索“用戶(hù)名” Me![用戶(hù)名] = DLookup(用戶(hù)名, 系統(tǒng)用戶(hù), _ [用戶(hù)編號(hào)]= 39。 amp。 Me![用戶(hù)編號(hào)] amp。 39。) 39。使用DLookup函數(shù)在“系統(tǒng)用戶(hù)”數(shù)據(jù)表中搜索“所管樓號(hào)” Me![所管樓號(hào)] = DLookup(所管樓號(hào), 系統(tǒng)用戶(hù), _ [用戶(hù)編號(hào)]=39。 amp。 Me![用戶(hù)編號(hào)] amp。 39。 ) 39。刷新“系統(tǒng)權(quán)限管理 子窗體”子窗體 Me![系統(tǒng)權(quán)限管理 子窗體].RequeryExit_用戶(hù)編號(hào)_AfterUpdate: Exit SubErr_用戶(hù)編號(hào)_AfterUpdate: MsgBox Resume Exit_用戶(hù)編號(hào)_AfterUpdateEnd SubPrivate Sub 退出窗體_Click()On Error GoTo Err_退出窗體_Click Exit_退出窗體_Click: Exit SubErr_退出窗體_Click: MsgBox Resume Exit_退出窗體_ClickEnd Sub附錄D 通用代碼Option Compare DatabaseOption Explicit39。用戶(hù)登錄的“用戶(hù)編號(hào)”P(pán)ublic UserID As String39。用戶(hù)登錄的“用戶(hù)名”P(pán)ublic username As StringPublic varTemp(5) As VariantFunction OpenForm(FormID As Integer)On Error GoTo Err_OpenFormDim i As IntegerDim sTemp As StringDim Rs1 As Dim Rs2 As Set Rs1 = New Set Rs2 = New 39。打開(kāi)“系統(tǒng)權(quán)限”數(shù)據(jù)表sTemp = Select * From 系統(tǒng)權(quán)限 sTemp, , adOpenKeyset, adLockOptimistic39。打開(kāi)“系統(tǒng)窗體”數(shù)據(jù)表sTemp = Select * From 系統(tǒng)窗體 sTemp, , adOpenKeyset, adLockOptimisticDim blnOpen As BooleanDim FormName As String blnOpen = False 39。判斷“系統(tǒng)權(quán)限”數(shù)據(jù)是否為空 If 1 Then blnOpen = False Else 39。判斷當(dāng)前“登錄用戶(hù)”是否有權(quán)限打開(kāi)FormID對(duì)應(yīng)的窗體 For i = 1 To If Rs1(用戶(hù)編號(hào)) = UserID And Rs1(窗體編號(hào)) = FormID _ And Rs1(權(quán)限) = True Then blnOpen = True Else End If Next i End If 39。在“系統(tǒng)窗體”數(shù)據(jù)表中搜索待打開(kāi)窗體的“名稱(chēng)” For i = 1 To If Rs2(窗體編號(hào)) = FormID Then FormName = Rs2(窗體名稱(chēng)) Else End If Next i 39。判斷用戶(hù)是否有權(quán)限打開(kāi)窗體,blnOpen為“真”有權(quán)限 If blnOpen = False Then MsgBox 您沒(méi)有權(quán)限使用 amp。 “ amp。 FormName amp。 ”窗體, vbCritical, 無(wú)權(quán)使用 Else FormName, acNormal, , , , acWindowNormal End If Set Rs1 = Nothing Set Rs2 = Nothing Exit FunctionErr_OpenForm: Set Rs1 = Nothing Set Rs2 = Nothing MsgBox , vbOKOnly, 窗體打開(kāi)錯(cuò)誤End Function附錄E 修改密碼窗體的代碼Option Compare DatabasePrivate Sub 確定_Click()Dim stsql As StringIf 舊密碼 = DLookup(密碼, 系統(tǒng)用戶(hù), 用戶(hù)名=39。 amp。 username amp。 39。) Then False 39。屏蔽系統(tǒng)錯(cuò)誤 update 系統(tǒng)用戶(hù) SET 密碼 = 39。 amp。 新密碼 amp。 39。 where 用戶(hù)名=39。 amp。 username amp。 39。 True MsgBox 恭喜你!密碼修改成功!, vbInformation acForm, 修改密碼Else MsgBox 操作有誤,請(qǐng)重新輸入!, vbInformation = = End IfEnd SubPrivate Sub 取消_Click()On Error GoTo Exit_Err acForm, 修改密碼 Forms! = TrueExit_Err: Exit SubEnd Sub35