将计算机名称或用户ID添加到Access中的新记录

时间:2019-07-10 14:54:40

标签: vba ms-access access-vba

我正在尝试设置一个简单的功能,以添加将记录添加到访问数据库的人员的计算机名称。例如,如果计算机12345上的用户在表tblTask​​s中创建了一条新记录,则在“所有者”字段中将该人的计算机名称作为输入。

我目前正在处理的方法(不确定这是最好的方法)是,在“所有者”字段下的表单上,我已将“默认值”设置为= owner,并创建了以下函数:< / p>

Function Owner()
 Dim cdb As DAO.Database, rst As DAO.Recordset
 Dim wshNet As Object

 Set wshNet = CreateObject("Wscript.Network")
 Set cdb = CurrentDb
 Set rst = cdb.OpenRecordset("SELECT * FROM tblTasks", dbOpenDynaset)
 rst.AddNew
 rst!Owner = wshNet.Computername
 rst.Update '<---- Error starts here
 Set wshNet = Nothing
End Function

创建新记录时出现以下错误:

error message

我知道问题的一部分与我创建的验证规则有关,该规则不允许在没有“任务名称”的情况下创建记录,但我想保留该记录。

我认为“所有者”字段给出#Error的问题还与以下事实有关:我不使用按钮操作来创建记录,而是保持从列表底部添加内容的能力。记录。我也想保持不变。

任何帮助或建议将不胜感激!

谢谢!! -德克

1 个答案:

答案 0 :(得分:1)

几天前,我从事类似的工作,并开始使用像您这样的字段。我找到了与您拥有的宏类似的解决方案。

为表单的BeforeInsert属性创建一个宏事件。使用下面的宏代码并进行更新以适合您的需求。

Private Sub Form_BeforeInsert(Cancel As Integer)
Dim Owner As String
Owner = Environ("COMPUTERNAME")

            Me!AddedBy= Owner
End Sub

编辑 关于您收到的错误,我不确定这是否有帮助,但是尝试将Owner定义为

Dim wshNet As String

 Set wshNet = Environ("COMPUTERNAME")