0

我真的不知道为什么这不起作用,但我试图让以下工作:

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

ETC...

我尝试了许多不同的组合,在处理数值时似乎无法使两者相等。有谁知道我错过了什么或有什么想法?

谢谢,

达米恩

4

3 回答 3

2

怎么样:

 If Not IsNull(DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)) Then

这仅在 Field1 被定义为数字字段时才有效,如果它是日期时间或文本字段,则需要分隔符。

编辑:

上述语句要么等于 Me.Text1 的值,要么为空。使用 DllookUp 的另一种方法是:

 SomeVar=DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)

SomeVar 要么为 null,即未找到,要么返回值或 Field1,它等于 Me.Text1,因为这是我们在 Where 语句中要求的。从中可以看出,返回Field1的值是没有意义的,要么找到且等于text1,要么未找到,为null。获取 DlookUp 值的唯一原因是您在表中查找其他值或计算。

在此之后,重要的是要记住您正在寻找精确匹配,并且小数点在小数点右侧可能有很大不同,您不太可能在此处查看。

于 2009-05-19T17:12:29.450 回答
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

Trying to do too much vba inside the DLookup could be an issue?

于 2009-05-19T15:43:06.257 回答
0

如果 CInt(Me.Text1) = DLookup("Field1", "Test1_Table", "Test1_Table.Field1=" & Me.Text1) 那么...

上面的代码完美运行。感谢吉尼斯,我能够利用我的原始代码并将 CInt 添加到 if 语句中。

另外,谢谢大家的意见。

DFM

于 2009-05-20T00:02:57.850 回答