如何使用文本框作为标准来创建具有数值的Access TextBox,等于DLookup

时间:2009-05-19 13:25:35

标签: ms-access textbox lookup

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

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

3 个答案:

答案 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