Я думаю, у вас есть проблемы со схемой. Запрос UNION почти всегда свидетельствует об этом (хотя и не во всех случаях).
Вопрос ко мне:
Что вы возвращаете в качестве результата?
Если вы нашли человека, отображается ли список людей?
Или, если вы найдете место, список мест?
Или смесь обоих?
Я бы сказал, что если вы хотите вернуть список обоих, вам нужно что-то вроде этого:
SELECT tblPerson.PersonID, tblPerson.LastName & ", " & tblPerson.FirstName, "Person"
FROM tblPerson
WHERE tblPerson.LastName LIKE "Andrew*"
OR tblPerson.FirstName LIKE "Andrew*"
UNION
SELECT tblVenue.Venue, tblVenue.Venue, "Venue"
FROM tblVenue
WHERE tblVenue.Venue LIKE "Andrew*"
ORDER BY Venue
Это даст список совпадений, указывающих, кто является человеком, а какое место проведения, и позволит вам затем выбрать один из них и открыть подробный вид (путем проверки значения в третьем поле).
Что вы определенно не хотите сделать, это:
SELECT tblPerson.PersonID, tblPerson.LastName & ", " & tblPerson.FirstName, "Person"
FROM tblPerson
UNION
SELECT tblVenue.Venue, tblVenue.Venue, "Venue"
FROM tblVenue
затем сохраняем это и пытаемся запросить его во втором столбце. Это будет крайне неэффективно. Вы хотите, чтобы ваше предложение WHERE находилось в полях, которые можно искать по индексу, и это означает, что у каждого подзапроса вашего UNION должно быть соответствующее предложение WHERE.