无法使用VBA更新访问表字段

时间:2017-12-05 17:36:39

标签: vba access-vba

我在访问中有一个用户表单,它将数据提交到表中,表中有两个字段,我想在用户在表单中创建新条目时自动填充这些字段。我正在使用以下vba代码:

Option Compare Database

Public Function GetUserName() As String
 Dim obj1 As Object
 Set obj1 = CreateObject("WScript.Network")
 GetUserName = DLookup("[BAFUser]", "BAF_User", "[BRID] = '" & obj1.UserName & "'")
 Set obj1 = Nothing

End Function

Private Sub Form_BeforeInsert(Cancel As Integer)
 Owner2 = CreateObject("WScript.Network").UserName
 AdvisorName = GetUserName

End Sub

Private Sub Form_Load()
 Me.DataForm.Form.Recordset.MoveLast

End Sub

Private Sub SaveBtn_Click()
 RunCommand acCmdSaveRecord
 Me.Requery
 Me.DataForm.Form.Recordset.MoveLast
End Sub

我可以在“所有者”字段中获取值,但不能在“AdvisorName”字段中获取。 这背后可能的原因是什么? 我的代码中是否有任何错误,或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

以下代码应使用querydef将两个值都提交到表中。这是我的首选方法,但也有其他方法可以做到这一点。 qdf表示可以接受代码参数的sql字符串。我们将变量的值直接插入到sql字符串中。

我从保存按钮复制了代码,以便在输入后重新建立表单状态。这应该使最后一条记录重新启动,但它将取决于记录集的cursortype是否表示已保存的记录(它可能会倒退)。

Private Sub Form_BeforeInsert(Cancel As Integer)

    Dim qdf As QueryDef
    Dim Owner2 As String
    Dim AdvisorName As String

    Owner2 = CreateObject("WScript.Network").UserName
    AdvisorName = GetUserName

    Set qdf = CurrentDb.CreateQueryDef("", "INSERT INTO Mau_con (Owner, AdvisorName) VALUES ('" & Owner2 & "', '" & AdvisorName & "')")
    qdf.Execute
    Me.Requery
    Me.DataForm.Form.Recordset.MoveLast
    Set qdf = Nothing

End Sub