如何防止Form_Current操作触发表验证错误?

时间:2013-07-05 16:37:09

标签: vba ms-access access-vba ms-access-2010

我有一个包含必填文本字段T的表item和一个用于填写当前用户登录ID的文本字段userID。我有一个表单mainForm,其中包含基于此表格的子表单TForm。为确保每条记录都有用户ID,我已将以下事件添加到TForm

Sub form_current()
 Me.userID = Environ("username")
End Sub

当我打开mainForm时,我会在打开时立即收到此错误消息:

You must enter a value in the 'T.item' field.

我认为这里发生的事情是form_current()事件使得Access认为我已经尝试完成新记录的输入,而T.item仍然是空白,这违反了表约束,因为那是必填字段。但奇怪的是,只有在我打开mainForm时才会发生这种情况。当我单独打开TForm时,我在打开时不会收到此错误消息。

我是否应该使用其他事件来填写每个字段的用户登录ID?或者有更好的方法来使用form_current()吗?

1 个答案:

答案 0 :(得分:1)

第一种方式。

在模块中创建一个函数:

Public Function getUserName() As String
    getUserName = Environ("Username")
End Function

然后打开您的TForm的属性窗口,选择" userId"字段,选择"数据"在属性窗口中的选项卡,找到"默认值"并放下一个表达式:= getUserName()。

我不知道为什么但访问权限并没有看到Environ()函数。

第二种方式。

实现OnLoad事件,如下所示:

Private Sub Form_Load()
    Me.userID.DefaultValue = "=""" & Environ("username") & """"
End Sub