Могу ли я использовать FULL OUTER JOIN в доступе VBA? - PullRequest
0 голосов
/ 11 мая 2018

Я знаю, что не могу использовать ПОЛНЫЕ ВНЕШНИЕ СОЕДИНЕНИЯ в объектах запроса доступа, и вместо этого мне нужно ОБЪЕДИНИТЬ соединение слева и справа. Можно ли избежать этого лишнего бизнеса при создании наборов записей в VBA или VBA использует ту же систему SQL?

Например:

Recordset = CurrentDb.OpenRecordset(_
"SELECT Table1.Field1, Table2.Field2 FROM Table1" & _
"FULL OUTER JOIN Table2 On Table1.Field1 = Table2.Field1")

Или я должен сделать что-то вроде этого:

Recordset = CurrentDb.OpenRecordset(_
"SELECT Table1.Field1, Table2.Field2 FROM Table1" & _
"LEFT JOIN Table2 On Table1.Field1 = Table2.Field1" & _
"UNION SELECT Table1.Field1, Table2.Field2 FROM Table1" & _
"RIGHT JOIN Table2 On Table1.Field1 = Table2.Field1")

1 Ответ

0 голосов
/ 11 мая 2018

Это зависит от того, к какой базе данных вы пытаетесь подключиться. Если вы подключаетесь к базе данных, которая поддерживает FULL OUTER JOIN, то вы можете использовать FULL OUTER JOIN из VBA.

Поскольку вы используете CurrentDb.OpenRecordset, вы запрашиваете механизм базы данных Access / Jet, и FULL OUTER JOIN не поддерживается.

Если вы нацелены на другую СУБД, которая поддерживает FULL OUTER JOIN, вы можете создать сквозной запрос с FULL OUTER JOIN и вызвать OpenRecordset для этого запроса.

...