2016-04-15 22 views
0

Я очень новичок в 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

+0

Это очень возможно ... но где вы используете его, в форме, в запрос и т. д.? –

+0

NameMatch = nz (DLookup («[ClientID]», «ClientDatabase», «[FirstName] = 'pInput»), DLookup («[ClientID]», «RequestForm», «[FirstName] =' pInput»)) – Xilmiki

ответ

0

Это будет что-то вроде этого, где вы concate значения в критерии поиска:

NameMatch: DLookUp("[ClientID]","ClientDatabase","[FirstName] = '" & [NewFirstName] & "' And [LastName] = '" & [NewLastName] & "'") 
Смежные вопросы