проблема с синтаксической ошибкой DLOOKUP для новой базы данных - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть база данных с 4 таблицами, но в первую очередь это таблица / форма перенаправления (DiversionT / F) и таблица / форма окупаемости (PaybackT / F). По сути, когда моя программа ссужает части другим программам в моей организации, в DiversionT создается диверсия. Когда программа хочет окупиться, она создает запись окупаемости в PaybackT.

У меня возникла проблема, из-за которой я запутался: при PaybackF пользователь вводит NSN (длинный код детали), который он хочет окупить. В конечном счете, я хочу, чтобы часть формы автоматически заполнялась информацией о деталях на основе введенного NSN. Информация хранится в DiversionT. Я создал несколько текстовых полей на PaybackF, чтобы показать информацию. Первое текстовое поле, которое я пытаюсь заполнить автоматически на основе NSN, - это текстовое поле PartName. Он должен найти DiversionT для этого NSN и заполнить соответствующее PartName на PaybackF. В источнике управления для поля, которое я набрал:

=DLookUp("[PartName]","[DiversionT]", "[PartName]=" & Forms![PaybackF]!NSN)

я получаю следующую ошибку:

Введенное вами выражение содержит недопустимый синтаксис.

Честно говоря, я пока не очень понимаю VBA (до сих пор провел свою жизнь с C, C ++, Java и Python), но посмотрел эту функцию на сайте Microsoft.

Если я не собираюсь делать это правильно, пожалуйста, дайте мне знать?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

При использовании DLookup для получения данных, если вы имеете дело с текстовыми строками, вам необходимо убедиться, что вы используете одинарные кавычки для переноса текста.

Кроме того, я думаю, что ваша логика c в DLookup немного не так. Я думаю, что это то, что вы после:

=DLookUp("[PartName]","[DiversionT]", "[NSN]='" & Me!NSN & "'")

С уважением,

0 голосов
/ 15 апреля 2020

Вы не можете ввести VBA для формирования свойств, таких как контроль версий. VBA используется только в процедурном коде в VBE. Тем не менее, есть функция DLOOKUP, доступная для формирования полей, и синтаксис аналогичен. Это причина вашей путаницы.

ПРИМЕР СИНТАКСА ДЛЯ ЧИСЕЛ:

=DLookUp("[PartName]","DiversionT", "[PartName]=" & [NSN])

ПРИМЕР СИНТАКСА ДЛЯ СТРОК:

=DLookUp("[PartName]","DiversionT", "[PartName]='" & [NSN] & "'")

ПРИМЕЧАНИЕ: я не могу сказать, что форма, в которой вы находитесь, или если NSN из родительской формы или подчиненной формы. По сути, NSN должен быть читаемым из той же формы, где существует это текстовое поле.

...