按代码中的SQL语句来看,就存在问题了,前面一句DELETE,后面一句却来UPDATE。这不前后矛盾吗?前面把记录删除了,后面却要更新记录,这样的操作实现的了吗?如果要DELETE你只能用INSERT INTO了。
前面一句删除记录的SQL代码也存在问题:FUserID=Me.subUsers!FUserID,在lstUsers中选择,用别的地方记录做条件?
给个按你代码思路做的代码给你:经测试可用,不过我有在窗体中添加一个选择用来参照的用户组合框,行来源:SELECT usysUsers.FUserID, usysUsers.FUserName FROM usysUsers ORDER BY usysUsers.FUserID;
批量操作是先在lstusers中选择要设置的用户,再在cbouse组合框中选择要参照的用户;记住不能自己参照自己。
Private Sub 批量权限_Click()
Dim strsql As String
If Me.lstUsers <> Me.CboUse Then
If Nz(Me.lstUsers) = "" Then
MsgBox "请选择一个用户!", vbCritical, ""
Exit Sub
End If
strsql = "DELETE * FROM usysRights WHERE FUserID=" & Me.lstUsers
CurrentDb.Execute strsql
Me.subRights.Requery
strsql = "INSERT INTO usysRights ( FFormID, FRight, FUserID ) SELECT usysRights.FFormID, usysRights.FRight, " & Me.lstUsers & " AS ID FROM usysRights WHERE FUserID= " & Me.CboUse
CurrentDb.Execute strsql
Me.subRights.Requery
End If
End Sub