2015-12-07 212 views
0

我是MS Access的新手,我有一个[字段] [公司]字段的表单。我想让用户填写其中的任何一个,但不一定是两者。他们可以填写[姓名],[公司]或两者,但他们不能将两者留空。如何使MS Access中所需的两个字段之一?

我该如何做到这一点?

回答

2

您可以在VBA做到这一点:

创建一个数据集的保存之前运行的事件处理程序,并告诉它取消更新,如果你的条件不满足:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If (isnull(me!name) and isnull(me.company) then 
     msgBox "Give me more !" 
     Cancel = True 
    End If 
End Sub 
+1

或简单地说:'如果IsNull(Me!Name + Me!Company)那么' – Gustav

+0

这可行,但会产生一个问题:如果我开始输入新记录的数据然后删除它,Access将不会让我移动到上一个记录,因为这两个字段都不包含任何内容。 –

+0

Me.Undo取消您在当前记录上执行的所有操作,并让您跳出新记录。可以在取消= true或(更好)之后放置它:为它创建一个新按钮。 – Johanness

0

我会在这种情况下,建议使用数据宏(如果您使用Access 2010或更高版本)。与VBA相比,优势在于数据宏在引擎级别运行,因此如果您有多个表单与这些字段,则不必将VBA复制到其中的每个表单。这也消除了开始输入数据然后删除它们的问题。

转到表的设计,单击创建数据宏>变化之前,并添加如果情况是这样的:

Data macro Before Update

您可以使用VBA捕获错误号码1做一些东西。正如Access所说,错误号码是用户定义的,并且对Access没有任何意义。

+0

@Jeppe我也认为你不应该命名你的字段名称,因为它在使用VBA时会造成一些麻烦。我不记得究竟是什么 – Combinatix

相关问题