经检查模块名字或者权限名称没有重复,错误**标记的是第一个rst.Update
Public Sub btnSave_Click()
SetCursor ctWait
Dim strSQL As String: strSQL = "SELECT ModuleID FROM SysLocalModules WHERE Allow<>0"
Dim rstTmp As Object: Set rstTmp = CurrentDb.OpenRecordset(strSQL)
DAORunSQL "DELETE FROM Sys_ModulePermissions WHERE RoleID=" & Me.lstRoleID
strSQL = "SELECT * FROM Sys_ModulePermissions WHERE RoleID=" & Me.lstRoleID
Dim rst As Object: Set rst = OpenADORecordset(strSQL, adLockOptimistic)
Do Until rstTmp.EOF
rst.AddNew
rst!ModuleID = rstTmp!ModuleID
rst!RoleID = Me.lstRoleID
rst!Allow = True
rst.Update-----此处错误标记
rstTmp.MoveNext
Loop
rst.Close
strSQL = "SELECT ModuleID,FunctionID FROM SysLocalFunctions WHERE Allow<>0"
Set rstTmp = CurrentDb.OpenRecordset(strSQL)
DAORunSQL "DELETE FROM Sys_FunctionPermissions WHERE RoleID=" & Me.lstRoleID
strSQL = "SELECT * FROM Sys_FunctionPermissions WHERE RoleID=" & Me.lstRoleID
Set rst = OpenADORecordset(strSQL, adLockOptimistic)
Do Until rstTmp.EOF
rst.AddNew
rst!ModuleID = rstTmp!ModuleID
rst!FunctionID = rstTmp!FunctionID
rst!RoleID = Me.lstRoleID
rst!Allow = True
rst.Update
rstTmp.MoveNext
Loop
rst.Close
MsgBoxEx LoadString("Authorized successfully!"), vbInformation
WriteOperationLog Me.Caption, Me.btnSave.Caption, Me.lstRoleID.Column(2)
End Sub