我真的不知道为什么这不起作用,但我想让以下工作:
If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
& Me.Text1") Then
MsgBox "It works"
Else
End If
上面的代码是我正在处理的大型项目的测试代码,因此表和字段名称仅用于测试。此外,Field1是一个数字字段。基本上,当我在Text1中输入1时,我希望DLookup功能在Test1_Table.Field1中找到1并给我一条消息,说明它有效。我能够使用字符串值,例如:
If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1='" _
& Me.Text1 & "'")Then
同样适用于在Text1中输入1:
If 1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
& Me.Text1") Then
但是,我试过了:
If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
& Forms!TestSearch_Form!Text0)Then
和
If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
& Forms!TestSearch_Form!Text0)Then
等...
我尝试了很多不同的组合,在处理数值时似乎无法让两者相等。有谁知道我缺少什么或有什么想法?
谢谢,
Damion
答案 0 :(得分:2)
怎么样:
If Not IsNull(DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)) Then
仅当Field1被定义为数字字段时才会有效,如果它是日期时间或文本字段,则需要分隔符。
编辑:
上述语句要么等于Me.Text1的值,要么为null。另一种使用DllookUp的方法是:
SomeVar=DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)
SomeVar将为null,即找不到,或返回值或Field1,它等于Me.Text1,因为这是我们在Where语句中要求的。你可以从中看到,返回Field1的值是没有意义的,它被发现等于text1,或者找不到,并且为null。获得DlookUp值的唯一理由是,如果您在表中查找其他值或计算。
在此之后,重要的是要记住你正在寻找一个完全匹配,十进制值可能会在小数点右侧非常不同,你不太可能看到。
答案 1 :(得分:0)
Dim sWhere as String
sWhere = "Test1_Table.Field1=" & Me.Text1
If CInt(Me.Text1)=DLookup("Field1", "Test1_Table", sWhere) Then
MsgBox "It works"
Else
'do something else
End If
尝试在DLookup中做太多vba可能是个问题?
答案 2 :(得分:0)
如果CInt(Me.Text1)= DLookup(“Field1”,“Test1_Table”,“Test1_Table.Field1 =”& Me.Text1)那么......
以上代码完美无缺。感谢Guiness,我能够利用我的原始代码,只需将CInt添加到if语句中。
另外,谢谢大家的意见。
DFM