Dim drf As DataRow = DataTables("系统版本").SQLFind("用户名 = '" & User.name & "'")
If drf IsNot Nothing Then
drf("退出时间") = Date.now
drf.save
End If
上面代码放在 beforecloseproject 里面,用于记录用户退出系统的时间。但是,好像有时候记录不到退出时间,请问是什么原因呢?比如,同样在我的电脑登录,用开发者登录,可以记录退出时间;如果用其他用户登录,就不会记录退出时间。谢谢。
应该是内置用户管理吧,我没有专门设计过用户登录界面。
代码在什么事件的?
调试
msgbox(User.name)
Dim drf As DataRow = DataTables("系统版本").SQLFind("用户名 = '" & User.name & "'")
msgbox(drf IsNot Nothing)
If drf IsNot Nothing Then
drf("退出时间") = Date.now
drf.save
End If
msgbox代码不可能会受什么组别影响。要么代码根本就没有执行,也就是程序是强制退出的,比如
1、断电被关机
2、没有退出程序,直接关机
3、到任务管理器强制退出
是正常关闭系统的,就是点击系统右上角的 x 来退出系统的。现在发现,就是“营销”和“仓库”这个两个组的用户执行 beforecloseproject 就会有问题,其他组别都没有问题。我们再看下面的 beforeOpenProject 代码,这些代码,所有组别执行都没有问题:
'记录用户登录时的 IP 地址
Dim IPAdress As System.Net.IPAddress
Dim HostName As String
HostName = System.Net.Dns.GetHostName '获得本机的机器名
Dim l As Integer = System.Net.Dns.GetHostByName(HostName).AddressList.Length
Dim s As String = ""
For i As Integer = 0 To l - 1
IPAdress = System.Net.Dns.GetHostByName(HostName).AddressList.getValue(i) '获得本机的IP
s &= IPAdress.Tostring & ","
Next
s = s.trim(",")
If drf IsNot Nothing Then
drf("系统发布日期") = Publishdate
drf("登录时间") = Date.now
drf("计算机名称") = SysInfo.ComputerName
drf("IP地址") = s
drf("组别") = User.group
drf.save
Else
Dim dra1 As DataRow = DataTables("系统版本").AddNew()
dra1("用户名") = User.name
dra1("系统发布日期") = Publishdate
dra1("登录时间") = Date.now
dra1("计算机名称") = SysInfo.ComputerName
dra1("IP地址") = s
dra1("组别") = User.group
dra1.save
End If
'记录用户登录信息结束
不好意思,抄漏一行给你,下面这行是在8楼的代码最前面的:
Dim drf As DataRow = DataTables("系统版本").SQLFind("用户名 = '" & User.name & "'")