反映在 MS ACCESS 2013 中进行记录更新的 Windows 用户 ID 和时间

Posted

技术标签:

【中文标题】反映在 MS ACCESS 2013 中进行记录更新的 Windows 用户 ID 和时间【英文标题】:Reflect the Windows User ID and Time of who did the record update in MS ACCESS 2013 【发布时间】:2015-10-19 04:55:23 【问题描述】:

我有一个包含 5 个表的 MS access 2013 db。我在每个表中创建了两个字段(更新依据和更新时间)。我创建了 5 个数据输入表单,并包含了几个操作按钮,例如添加新记录、删除记录和保存记录等……这些操作按钮是使用 MS access 宏生成器创建的。我想做的是,每当用户单击“保存”按钮时,上述两个字段(更新者和更新时间)都会填充该用户的 Window 用户 ID(活动目录 ID)和系统时间。我试图更新 Save 按钮的 OnClick 事件来做到这一点,但它对我不起作用。任何帮助。 表单的 After update 事件会随着对表单字段的任何修改或操作而一直更新这两个字段。

提前感谢您提供的任何帮助。

【问题讨论】:

您可能需要添加一些有关您尝试过的代码的详细信息。 【参考方案1】:

这绝对是你想要的 OnClick 事件。

要获取用户名,请将其放在按钮后面:

Dim lngLen As Long
Dim lngX As Long
Dim strUserName As String

strUserName = String$(254, 0&)
lngLen = 255&
lngX = apiGetUserName(strUserName, lngLen)
If (lngX > 0&) Then
    strUserName = Left$(strUserName, lngLen - 1&)
End If

If strUserName <> vbNullString Then
    GetNetworkUserName = strUserName
Else
    GetNetworkUserName = "unknown"
End If

然后把它放在一个单独的模块中:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

对于时间片,只需使用 TimeValue:

TimeValue(Now)

【讨论】:

以上是关于反映在 MS ACCESS 2013 中进行记录更新的 Windows 用户 ID 和时间的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 2013:表格中间歇性隐藏的记录

MS-Access 2013;根据多记录形式的记录数据更改组合框选项

在 MS Access 2013 报告上标记超链接

我可以在 MS Access 2013 中根据另一个表中的值生成多条新记录吗?

MS Access 2013 DoCmd for on click 函数返回错误

在按钮单击 MS Access 2013 VBA 在子窗体中创建新记录