我在访问中有一个用户表单,它将数据提交到表中,表中有两个字段,我想在用户在表单中创建新条目时自动填充这些字段。我正在使用以下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”字段中获取。 这背后可能的原因是什么? 我的代码中是否有任何错误,或者有更好的方法吗?
答案 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