我做了一个应用系统,现在想在里面加入系统日志,来记录谁登陆过本系统,登陆的时间,以及登陆的ID,做了很长时间都没有结果,希望大家能帮帮我!

解决方案 »

  1.   

    '===================以下为系统权限控制与上机日志控制函数======================'
    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
    然后在每个有权限的模块及登录时调用此函数就行了!。
      

  2.   

    WritePrivateProfileString
    GetPrivateProfileString
    这两个api对ini文件进行操作就可以了。
      

  3.   

    谢谢楼上的两位大哥,能不能说的再详细一点,我刚学编程看的不是太懂,是不是在每一个需要记录的地方添加一个WritePrivateProfileString向一个文件中写入所做的操作,或者是id,类似输出的用法.再用GetPrivateProfileString来读取文件中所做的记录?