Почему некоторые операторы SELECT открывают RecordSet, а другие возвращают «Ошибка 13, несоответствие типов» - PullRequest
0 голосов
/ 24 февраля 2020

Прежде всего, позвольте мне заявить, что эта проблема для VBA в приложении Access. Теперь это подзапрос гораздо более длинного запроса, но я хочу изложить основы, прежде чем пытаться построить еще больший запрос.

По какой-то причине следующие строки кода успешно открывают DAO.Recordset, через который я могу через l oop выполнить операции:

Dim testRS As DAO.Recordset testQuery = "SELECT * FROM midsecurity_city INNER JOIN itincity ON midsecurity_city.cityid4security = itincity.city_id;" Set testRS = CurrentDb.OpenRecordset(testQuery)

Это сравнение двух столбцов типа BIGINT в двух разных таблицах в двух разных схемах.

Теперь следующее также сравнивает два столбца типа VARCHAR в двух разных таблицах, которые также содержатся в двух разных схемах. Я включил все эти детали, так как я довольно новичок в Access и не уверен, влияет ли эта информация на мою проблему. Для чего это стоит, я вхожу в Postgres БД.

Этот запрос выдает мне сообщение "Ошибка 13: несоответствие типов" , а затем отменяет выполнение.

Dim testRS As DAO.Recordset testQuery = "SELECT * FROM itincity INNER JOIN itinerary ON itincity.city = itinerary.city;" Set testRS = CurrentDb.OpenRecordset(testQuery)

Я предполагаю, что Access действительно ненавидит СОЕДИНЕНИЯ, которые включают в себя что-либо, кроме INTEGER сравнения двух столбцов? Я близок к тому, чтобы быть точным в этом? Если это так, есть ли способ обойти это ограничение или есть другой способ полностью приблизиться к чему-то подобному? Любой учебный материал о том, как JOINS работает в Access, также будет оценен, так как он, кажется, не играет по тем же правилам, что и выполнение запроса в pgAdmin.

Спасибо за помощь. Я изучал этот вопрос около недели.

1 Ответ

0 голосов
/ 29 февраля 2020

Что ж, «решение» казалось таким, как я ожидал. Доступ просто ненавидит JOINS, которые включают текстовые столбцы. В качестве обходного пути я добавил в таблицу внешний ключ (FK), который казался наиболее зависимым от другого. Этот столбец FK был обозначен как тип "BIGINT". Теперь мой массивный запрос с многочисленными ВНУТРЕННИМИ СОЕДИНЕНИЯМИ (все из которых теперь также используют bigints) работает легко.

Однако мне все еще интересно, почему Access отклоняет текстовые СОЕДИНЕНИЯ ... Похоже, что так и должно быть. быть вполне приемлемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...