Почему Access хочет, чтобы вы идентифицировали первичный ключ в связанных таблицах? - PullRequest
5 голосов
/ 30 июля 2010

Я поддерживаю пользователей, которые используют MS Access в качестве внешнего интерфейса для просмотра некоторых таблиц Oracle в нашем институте. Как правило, они используют для написания специальных запросов конструктор запросов Access, а также они любят LOVE Access, поскольку он позволяет им создавать печатные отчеты без необходимости выполнять длительные и дорогостоящие запросы на программирование через наш отдел технической поддержки.

При создании ссылки на внешнюю таблицу их иногда просят идентифицировать первичный ключ таблицы. Конечно, как они могут иметь какое-либо представление о том, какими будут поля первичного ключа?

У меня такой вопрос: почему Access хочет знать, что является полем (ями) первичного ключа связанной таблицы? Индексирование должно происходить в исходной базе данных, не так ли?

Недавно у нас возникла проблема, когда пользователи начали переходить на Access 2007, который, наконец, был «исправлен» двумя способами: 1) новое соединение ODBC или 2) определение другого столбца первичного ключа для связанной таблицы. Моя техническая поддержка пыталась настаивать на том, что мне придется изменить свою практику, сказав моим пользователям выбрать правильное поле первичного ключа. Я утверждал, что это не должно иметь значения. Но я не могу отказаться от мысли, что MS Access не будет спрашивать, не имеет ли это значения для что-то . Просто не уверен, что это может быть.

Примечание: «проблема» описана в этом посте: Доступ 2007 к связанной таблице Oracle 10g - запрос с ошибочными результатами, но без ошибок

Ответы [ 3 ]

4 голосов
/ 31 июля 2010

Если вашим пользователям просто необходим доступ только для чтения, для запросов и создания отчетов попросите их нажать кнопку «Отмена» в ответ на вопрос «Доступ» о том, какие поля использовать в качестве первичного ключа. Они по-прежнему смогут создавать ссылку, но она будет доступна только для чтения.

Если вашим пользователям нужно изменить данные в связанных таблицах Oracle, дайте им копии файла базы данных Access, который вы для них создадите. Вы устанавливаете связанные таблицы, и свойства соединения сохраняются в TableDef ссылки ... Доступ не должен возвращаться к вашему DSN для этой ссылки впоследствии. Таким образом, пользователям также не понадобится DSN.

2 голосов
/ 31 июля 2010

Как пользователи узнают, что означает таблица, или как объединить ее с другими таблицами, если они не знают, что это за ключи?Знание того, какие ключи существуют, очень важно для получения полезных результатов из базы данных SQL.

0 голосов
/ 11 февраля 2015

Не только использует ПК для обновления. Также при создании гетерогенного соединения, т.е. между таблицей odbc и локальной таблицей или таблицами из разных источников odbc доступ должен доставлять все данные локальным для выполнения объединения. Наличие цикла pk может выполнять множественные запросы к внешнему источнику, используя pk. Это действительно хорошо для небольших локальных таблиц и длинных длинных таблиц odbc.

...