我有一个带有sql后端的Microsoft访问数据库。我需要成功打开表单的日期和时间的Windows用户的日志。我更喜欢将数据记录到链接的 sql 服务器表中。有没有办法做到这一点?
这将为你获得Windows用户名:
Environ("username")
这将为您提供日期和时间:
Now()
我建议在公共模块中定义一个函数,例如:
Function winuser() As String
winuser = Environ("username")
End Function
然后使用以下 SQL 将记录插入到日志表中:
insert into log ([username], [timestamp]) values (winuser(), now())
将log
、username
×tamp
更改为表和字段的名称。
然后,可以将此 SQL 作为表单的On Open
事件的一部分执行。
作为Lee Macs回答的附录:
出于安全原因,您应该使用
CreateObject("Wscript.Network").UserName
而不是
Environ("username")
检索到当前登录的Windows用户,因为环境变量username
很容易被覆盖(意味着有人可以假装不同的用户(。
或者,如果您愿意,也可以使用 Windows API:
Private Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetWindowsUserName() As String
Dim buffer As String * 255
Dim result As Long
result = GetUserName(buffer, 255)
If result > 0 Then _
GetWindowsUserName = Left(buffer, InStr(buffer, Chr(0)) - 1)
End Function