Как сделать TextBox Access, с Numberic величину, равную DLookUp с TextBox в качестве критерия

голоса
0

Я действительно понятия не имею, почему это не работает, но я стараюсь, чтобы получить следующий к работе:

If Me.Text1 = DLookup(Field1, Test1_Table, Test1_Table.Field1= _
     & Me.Text1) Then
   MsgBox It works
Else
End If

Приведенный выше код представляет собой тестовый код для большего проекта, что я работаю, поэтому имена таблиц и полей только для тестирования. Кроме того, Field1 является Numberic поля. В принципе, когда я вхожу в 1 Text1, я хотел бы функцию DLookUp найти 1 в Test1_Table.Field1 и дать мне сообщение о том, что он работает. Я могу получить эту работу со строковыми значениями, такими как:

If Me.Text1 = DLookup(Field1, Test1_Table, Test1_Table.Field1=' _
    & Me.Text1 & ')Then

Точно так же это работает, когда 1 вводится в Text1:

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

Задан 19/05/2009 в 14:25
источник пользователем
На других языках...                            


3 ответов

голоса
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

Попытка сделать слишком много VBA внутри DLookup может быть проблема?

Ответил 19/05/2009 в 16:43
источник пользователем

голоса
2

Как насчет:

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

Это будет работать только тогда, когда Field1 определяется как числовое поле, то вам нужно разделители, если это DateTime или текстовое поле.

РЕДАКТИРОВАТЬ:

Приведенное выше утверждение либо равно значению Me.Text1 или равна нулю. Другой способ использования DllookUp было бы сказать:

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

SomeVar будет либо нулевым, то есть, не найден, или возвращает значение или Field1, которое равно Me.Text1, потому что это то, что мы просили в Where заявлении. Вы можете видеть из этого, что не имеет смысла возвращать значение Field1, он либо нашел andequal в TEXT1, или не нашли, и нуль. Olnly причина для получения значения DLookUp, если вы ищете некоторую другую величину или вычисления в таблице.

После этого, важно помнить, что вы ищете точное соответствие и десятичные значения могут быть совершенно разными далеко справа от десятичной точки, где вы вряд ли смотреть.

Ответил 19/05/2009 в 18:12
источник пользователем

голоса
0

Если CInt (Me.Text1) = DLookup ( "Field1", "Test1_Table", "Test1_Table.Field1 =" & Me.Text1) Тогда ...

Приведенный выше код работает отлично. Благодаря Guiness, я был в состоянии использовать свой исходный код и просто добавить CInt к, если заявление.

Кроме того, спасибо всем за ваш вклад.

DFM

Ответил 20/05/2009 в 01:02
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more