'===================以下为系统权限控制与上机日志控制函数======================' Public Function Security_Log(gnsy As String, UserCode As String, Optional LogTF As Integer = 3, Optional State As Boolean = True, Optional Msg As Boolean = True) As Boolean '权限判断和日志 'Gnsy 功能索引 UserCode 用户编码 'LogTF (1、判断权限,写日志)、(2、只写日志)、(3、只判断权限) 'State 状态 (True 进入 false 完成) '返回Security_Log=true表示有权限,Security_Log=false表示没有有权限 'Msg 没有权限时是否提示(True 提示 False不提示) Dim Tsxx As String '系统信息提示
On Error Resume Next
Dim aDo_userGroup As New Recordset Dim aDo_gnbm As New Recordset: Dim SSql As String
Set aDo_gnbm = Cw_DataEnvi.DataConnect.Execute("select * from Xt_xtgnb where gnsy='" & Trim(gnsy) & "'")
If LogTF = 1 Or LogTF = 3 Then Set aDo_userGroup = Cw_DataEnvi.DataConnect.Execute("select * from Gy_Czygl where czybm='" & Trim(UserCode) & "'")
If Mid(aDo_userGroup!AuthorityID, aDo_gnbm!Id, 1) = "1" Then Security_Log = True Else Security_Log = False End If aDo_userGroup.Close Set aDo_userGroup = Nothing
If Security_Log = False Then Set aDo_userGroup = Cw_DataEnvi.DataConnect.Execute("select * from System_UserGroupInfo a ,System_UserGroup b where a.groupid=b.groupid and a.userid='" & Trim(UserCode) & "'") Do While Not aDo_userGroup.EOF If Mid(aDo_userGroup!AuthorityID, aDo_gnbm!Id, 1) = "1" Then Security_Log = True Exit Do Else Security_Log = False End If aDo_userGroup.MoveNext Loop aDo_userGroup.Close Set aDo_userGroup = Nothing End If If Security_Log = False Then If Msg = True Then Tsxx = "没有权限,请与管理员联系! " Call Xtxxts(Tsxx, 0, 4) End If End If End If '------------------------------------ If (LogTF = 1 And Security_Log = True) Or LogTF = 2 Then If State = True Then SSql = "insert into System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State)" _ & " values(getdate(),'" & UserCode & "','" & MachineName & "','" & Trim("" & aDo_gnbm!gnms) & "','" & "销售系统" & "','" & NTDomainUserName & "','进入')" Else SSql = "insert into System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State)" _ & " values(getdate(),'" & UserCode & "','" & MachineName & "','" & Trim("" & aDo_gnbm!gnms) & "','" & "销售系统" & "','" & NTDomainUserName & "','完成')" End If Cw_DataEnvi.DataConnect.Execute SSql End If aDo_gnbm.Close Set aDo_gnbm = Nothing
Public Function Security_Log(gnsy As String, UserCode As String, Optional LogTF As Integer = 3, Optional State As Boolean = True, Optional Msg As Boolean = True) As Boolean '权限判断和日志 'Gnsy 功能索引 UserCode 用户编码
'LogTF (1、判断权限,写日志)、(2、只写日志)、(3、只判断权限)
'State 状态 (True 进入 false 完成)
'返回Security_Log=true表示有权限,Security_Log=false表示没有有权限
'Msg 没有权限时是否提示(True 提示 False不提示)
Dim Tsxx As String '系统信息提示
On Error Resume Next
Dim aDo_userGroup As New Recordset
Dim aDo_gnbm As New Recordset: Dim SSql As String
Set aDo_gnbm = Cw_DataEnvi.DataConnect.Execute("select * from Xt_xtgnb where gnsy='" & Trim(gnsy) & "'")
If LogTF = 1 Or LogTF = 3 Then
Set aDo_userGroup = Cw_DataEnvi.DataConnect.Execute("select * from Gy_Czygl where czybm='" & Trim(UserCode) & "'")
If Mid(aDo_userGroup!AuthorityID, aDo_gnbm!Id, 1) = "1" Then
Security_Log = True
Else
Security_Log = False
End If
aDo_userGroup.Close
Set aDo_userGroup = Nothing
If Security_Log = False Then
Set aDo_userGroup = Cw_DataEnvi.DataConnect.Execute("select * from System_UserGroupInfo a ,System_UserGroup b where a.groupid=b.groupid and a.userid='" & Trim(UserCode) & "'")
Do While Not aDo_userGroup.EOF
If Mid(aDo_userGroup!AuthorityID, aDo_gnbm!Id, 1) = "1" Then
Security_Log = True
Exit Do
Else
Security_Log = False
End If
aDo_userGroup.MoveNext
Loop
aDo_userGroup.Close
Set aDo_userGroup = Nothing
End If
If Security_Log = False Then
If Msg = True Then
Tsxx = "没有权限,请与管理员联系! "
Call Xtxxts(Tsxx, 0, 4)
End If
End If
End If '------------------------------------
If (LogTF = 1 And Security_Log = True) Or LogTF = 2 Then
If State = True Then
SSql = "insert into System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State)" _
& " values(getdate(),'" & UserCode & "','" & MachineName & "','" & Trim("" & aDo_gnbm!gnms) & "','" & "销售系统" & "','" & NTDomainUserName & "','进入')"
Else
SSql = "insert into System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State)" _
& " values(getdate(),'" & UserCode & "','" & MachineName & "','" & Trim("" & aDo_gnbm!gnms) & "','" & "销售系统" & "','" & NTDomainUserName & "','完成')"
End If
Cw_DataEnvi.DataConnect.Execute SSql
End If
aDo_gnbm.Close
Set aDo_gnbm = Nothing
End Function
然后在每个有权限的模块及登录时调用此函数就行了!。
GetPrivateProfileString
这两个api对ini文件进行操作就可以了。