Я очень новичок в VBA и Access и безумно искал в Интернете ответы, но, похоже, я застрял на этом. Я могу застрять мышление в логике электронных таблиц Excel при попытке создать это в Access.Как использовать критерии DLookup из разных таблиц в Access
У меня есть две таблицы, REQUESTFORM и CLIENTDATABASE. Форма запроса имеет различные поля, созданные из входящих писем. Я хочу, чтобы ClientDatabase автоматически заполняла новые CLIENTID, когда электронные письма от новых людей поступали в таблицу RequestForm и добавляли соответствующий CLIENTID в таблицу REQUESTFORM. REQUESTFORM имеет поля для NEWFIRSTNAME и NEWLASTNAME, тогда как CLIENTDATABASE будет иметь поля FIRSTNAME и LASTNAME, чтобы имена полей были разными. Я хочу, чтобы CLIENTDATABASE имела данные первичного ключа, поэтому я могу обрабатывать любые ошибки правописания, которые входят.
Использование DLOOKUP аналогично VLOOKUP от excel, но DLOOKUP, похоже, использует критерии в той же таблице. В Excel вы можете «указывать» на другие таблицы, если это необходимо.
Так что, когда я пытаюсь это в запросе:
NameMatch: DLookUp("[ClientID]","ClientDatabase","[FirstName]=[NewFirstName] And [LastName]=[NewLastName]")
Это, кажется, не работает, потому что он не признает NewFirstName, потому что это не в ClientDatabase, он находится в RequestForm.
Я попытался кодировать определенную пользователем функцию в VB, но я все время сталкиваюсь с той же проблемой, даже если я уменьшу ее до одного критерия. Я могу работать с одним критерием, если мне нужно, объединив имя и фамилию в качестве поля fullname, но все же.
Public Function NameMatch(ByVal pInput As String) As String
On Error Resume Next
NameMatch = DLookup("[ClientID]", "ClientDatabase", "[FirstName] = 'pInput'")
End Function
Есть ли способ, чтобы закодировать пользователю функции, определенной для определения «Pinput» как [NewFirstName] и успешно его видите? Или написать формулу лучше в запросе? Я не получаю ошибку с UDF, просто пустым. Там, наверное, еще десяток других подводных камней, которые я пропустил. Любая помощь оценивается.
Stardance
Это очень возможно ... но где вы используете его, в форме, в запрос и т. д.? –
NameMatch = nz (DLookup («[ClientID]», «ClientDatabase», «[FirstName] = 'pInput»), DLookup («[ClientID]», «RequestForm», «[FirstName] =' pInput»)) – Xilmiki