2014-09-18 3 views
0

я не могу за жизнь мне выяснить, что не так с этим, но я не/VBA разработчиков Access обычно ..MS Access VBA DLookUp на Да/Нет поле

У меня есть база данных таблица с примерно 20 полями, одним из которых является поле «Да/Нет». Я хочу, чтобы извлечь Да/Нет значения, используя DLookup, однако я получаю следующее сообщение об ошибке:

Run-time error '3075': 
Syntax error (missing operator) in query expression 'Enabled'. 

код, я использую его:

MsgBox (DLookup("Enabled", "Numbers", "ID = " & Me.cbxNumber.Value & "")) 

Enabled является Да/Нет поле ID не является Строковое поле.

Вышеупомянутый DLookup работает абсолютно нормально, чтобы возвращать значения String для других полей, поэтому последний параметр с поисковым запросом и поле таблицы должны быть точными. Он просто жалуется на поле возврата («Включено»), думая, что это запрос.

Элемент MsgBox также не имеет значения, поскольку я попытался назначить результат Integer и Boolean, и он не жалуется на несоответствие типов, которое я ожидал бы, если бы это была проблематичная часть.

Любые мысли?

ответ

2

Вы указали, что ID является строковым полем. Если это так, попробуйте изменить DLookup к ...

DLookup("[Enabled]", "Numbers", "ID = " & Chr(34) & Me.cbxNumber.Value & Chr(34)) 

Если ID является Long, а затем использовать эту строку ...

DLookup("[Enabled]", "Numbers", "ID = " & Me.cbxNumber.Value) 
+0

Это сработало отлично - квадратные скобки исправили его, а не то, что я действительно понимаю этот элемент синтаксиса. – jacob21

2

Ваш код отлично работает для меня:

Таблица:

Example table

Форма:

Example form

Код:

Private Sub Command30_Click() 

    MsgBox (DLookup("Enabled", "Numbers", "ID = " & Me.cbxNumber.Value & "")) 

End Sub 

В окне сообщений отображается 0 или -1, если необходимо. Что нужно проверить:

Ваш код в модуле форм? В противном случае Me.cbxNumber.Value ничего не вернет.

Что вы получите, если вы запустите

debug.print Me.cbxNumber 

от OnClick кнопки на форме?

+0

Me.cbxNumber, безусловно, в рамках, потому что я m с использованием DLookup с другими полями в первом параметре и тем же запросом в третьем параметре. Отладка корректно выводит идентификатор. Это решение было исправлено ниже; это были квадратные скобки, отсутствующие, а не то, что я действительно понимаю этот элемент синтаксиса! – jacob21

+0

Приятно слышать, что он работает сейчас!Кажется странным, что квадратные скобки фиксировали его; Мне показалось, что они нужны только тогда, когда имя поля содержит пробел (что «Включено», очевидно, нет). Я не поймал вашу записку о том, что ID является строкой - если это так, я также удивлен, что ваш код с '" ID = "& Me.cbxNumber.Value &" "' в качестве третьего параметра работает! Строка должна быть заключена в двойные кавычки, так как это было предложено Кевин Фрэнсис, он должен быть ' "ID =" & Chr (34) & Me.cbxNumber.Value & Chr (34)' или '» ID = "" "& Me.cbxNumber.Value &" "" "' с помощью двойного «для выхода». –

Смежные вопросы