Ms access 在MS Access 2010 I';我试图忽略控件中的重复项
我想忽略表单上特定文本字段中的重复条目。例如,我有3个字段用于输入印章。如果此人扫描印章两次,它将忽略副本,并将焦点保持在字段上,直到输入不同的号码。我拼凑了一些适用于第一个和第二个条目的代码,但不适用于第三个条目。当我调试时,它似乎发现了一个重复的数字,即使我输入了一个不同的数字Ms access 在MS Access 2010 I';我试图忽略控件中的重复项,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我想忽略表单上特定文本字段中的重复条目。例如,我有3个字段用于输入印章。如果此人扫描印章两次,它将忽略副本,并将焦点保持在字段上,直到输入不同的号码。我拼凑了一些适用于第一个和第二个条目的代码,但不适用于第三个条目。当我调试时,它似乎发现了一个重复的数字,即使我输入了一个不同的数字 Private Sub Seal2_AfterUpdate() If Seal2.Value = Seal1.Value Or Seal3.Value Then Seal2.Value = Null
Private Sub Seal2_AfterUpdate()
If Seal2.Value = Seal1.Value Or Seal3.Value Then
Seal2.Value = Null
Seal1.SetFocus
Seal2.SetFocus
End If
End Sub
Private Sub Seal3_AfterUpdate()
If Seal3.Value = Seal1.Value Or Seal2.Value Then
Seal3.Value = Null
Seal1.SetFocus
Seal3.SetFocus
End If
End Sub
您对
或的处理是错误的。它在Seal2.Value=Seal1.Value
之后求值
那个么你们在if语句中做了什么,等价于
If (Seal3.Value = Seal1.Value) Or Seal2.Value Then
由于Seal2有一个值,它的计算结果为True
你想要的东西更像:
If (Seal3.Value = Seal1.Value) Or (Seal3.Value = Seal2.Value) Then
此外,您似乎将焦点设置为一个字段,然后再设置另一个字段。你可能只想去其中一个,除非你试图在每一个事件中获得/失去焦点时触发/事件;然而,如果你这样做,你可能是在玩火
最后,您的if块可能希望如下所示:
If (Seal2.Value = Seal1.Value) Or (Seal2.Value = Seal3.Value) Then
Seal2.Value = Null
Seal2.SetFocus
End If
及
最后,如果您发现必须扩展到3个字段之外,那么您可能需要采取一种稍微不同的方法,这种方法更具可扩展性。例如,在内存中建立一个列表,对其进行排序和过滤。但是对于3到4件物品,你可以不必担心你已经拥有了什么
If (Seal3.Value = Seal1.Value) Or (Seal3.Value = Seal2.Value) Then
Seal3.Value = Null
Seal3.SetFocus
End If