Как закодировать DLookup, используя несколько полей со списком?

#vba #dlookup

#vba #dlookup

Вопрос:

Я боролся с тем, как закодировать DLookup в форме. У меня есть два поля со списком (один сотрудник, одно название учебного класса), и мне нужно, чтобы появлялось окно сообщения, если сотрудник уже посещал класс. Я беру запись из таблицы Employee и одну запись из таблицы учебного класса, и если комбинация этих двух существует, мне нужно закодировать messagebox, что они уже приняли класс. Обратите внимание, что я не программист на VBA; Я взялся за существующий проект базы данных Access, поэтому я учусь по ходу с YouTube и замечательных досок сообщества, подобных этому.

Вот что я пробовал, но это не работает:

 Private Sub Date_Taken_BeforeUpdate(Cancel As Integer)

If Not IsNull(DLookup("[Training Classes Taken tbl].[Officer]", "[Training Classes Taken tbl]", "[Training Classes Taken tbl].[Officer] = '" amp; Me.Officer amp; "'") amp; "'AND Me.[Training Class Name]= '" amp; Me.[Training Class]) Then

MsgBox "Class already taken."

Cancel = True

End If
   Exit Sub  
  

Ответ №1:

DLookup ищет («поле, которое вы хотите», «таблица, из которой оно получено» и «поле поиска и значение, которое оно должно быть») . Итак, я бы, вероятно, использовал в событии нажатия кнопки и попробовал (при условии, что office:

 Dim varx as variant

varx = Dlookup("Officer", "[Training Classes Taken]", "[Training Class Name]='" amp; me.[Training Class] amp; "'")

if not IsNull(varx) then
    msgbox("you have already taken this course")
end if