ODBC Driver Connect автозаполнение - PullRequest
0 голосов
/ 15 марта 2019

У меня есть база данных доступа, связанная (связанная таблица) с базой данных Oracle. Я написал несколько запросов на выборку. Каждый раз, когда я запускаю его, я получаю поле ввода «Oracle ODBC Driver Connect». Есть ли способ написать макрос VBA для ввода имени пользователя и пароля (автозаполнение) и Enter Ok. Попытка настроить автоматический запуск макросов в этой базе данных Access.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 17 марта 2019

Как уже указывалось, когда вы связываете таблицы, вам предоставляется возможность сохранить пароль в этих ссылках таблицы.Если вы пропустили этот шаг, вы получите приглашение ODBC.

ЭТО НУЖНО, когда вы пишете запросы на выборку.Просто попробуйте нажать на одну из связанных таблиц, которые вы используете в таких запросах.Либо вы получаете приглашение ODBC, либо нет.

Если вы это сделаете, то, конечно, вы получите такое приглашение при написании запроса.Сначала вы хотите, чтобы ссылки на таблицы работали без приглашения ODBC, а затем пишите эти запросы на основе связанных таблиц.

Так что сначала работайте со связанными таблицами.Забудьте о своих запросах и не беспокойтесь о них.До тех пор, пока простой щелчок (открытие) связанной таблицы не сработает и не выдаст приглашение ODBC, вы будете смотреть на НЕПРАВИЛЬНУЮ проблему.

Как только ваши связанные таблицы будут работать без приглашения,тогда ваши запросы также будут работать без запроса.

Таким образом, у вас есть два варианта решения этой проблемы.

Простое повторное связывание таблиц и установка флажка [x] во времяповторно ссылку, чтобы сохранить пароль.

Приглашение, которое вы пропустили и хотите выбрать, выглядит следующим образом:

enter image description here

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

Конечно, удаление ссылок на таблицы часто может привести к изменению имен связанных таблиц, и это может быть проблемой, особенно если у вас есть LOTсвязанных таблиц.Только вы можете сделать это суждение о том, что меньше работы.Если у вас есть всего несколько таблиц, просто удалите их и используйте внешние данные ->, затем в разделе импорта и ссылок выберите ODBC, и вы можете добавить таблицы, но ПОМНИТЕ, чтобы выбрать (поставить галочку) вышеуказанное поле сохранения пароля какза выше, что вы пропустили.

Теперь большинство людей с течением времени сталкиваются с какими-то таблицами повторного связывания кода VBA.Так что, если у вас уже есть и работает удобный код повторной ссылки, просто повторите этот код, введя имя пользователя / пароль в строку подключения, которую вы используете в этом коде.Конечно, если у вас нет такого кода, то вышеупомянутый менеджер связанных таблиц в Access - это решение без кода и, очевидно, ваш лучший выбор и курс действий.

Таким образом, вместо приведенного выше, вы можете найти некоторый код повторной ссылки на таблицу, который принудительно (сохранит) пользователя / идентификатор в ссылках таблицы для вас.

Однако, если вы неЕсли вы не хотите удалять + заново создавать все эти таблицы, и вы еще не настроили какой-либо код повторной ссылки, есть и другой (третий) выбор.

В коде запуска вашего приложения просто выполнитеодноразовый вход.Если вы сделаете это, приглашение ODBC не будет отображаться при использовании связанных таблиц и, следовательно, также не будет отображаться при попытке выполнить / построить / использовать запрос на основе этих связанных таблиц.

Код для выполненияоднократный вход в систему будет выглядеть следующим образом:

Function TestLogin(strCon As String) As Boolean

  On Error GoTo TestError

  Dim dbs          As DAO.Database
  Dim qdf          As DAO.QueryDef

  Set dbs = CurrentDb()
  Set qdf = dbs.CreateQueryDef("")

   qdf.connect = strCon

   qdf.ReturnsRecords = False

   'Any VALID SQL statement that runs on server will work below.
   ' this does assume user has enough rights to query built in
   ' system tables

   qdf.sql = "SELECT 1 "
   qdf.Execute

   TestLogin = True

   Exit Function

TestError:
   TestLogin = False
   Exit Function

End Function

При выполнении вышеупомянутого кода ОДИН раз при запуске вашего приложения, таким образом, будут исключены приглашения ODBC при нажатии на связанную таблицу.И, конечно, как только проблема связанных таблиц будет решена, тогда, конечно, создание или нажатие на ваш запрос или выполнение этих запросов теперь также будет работать без запросов.

Вы НЕ можете автоматически заполнять это приглашение, вам нужнов первую очередь предпримите ПРАВИЛЬНЫЕ шаги, чтобы ПРЕДОТВРАТИТЬ эту подсказку.Итак, чтобы ответить на ваш вопрос?

Нет, вы не можете написать код для ввода запрошенного приглашения, но если вы свяжете свои таблицы с сохраненным паролем или выполните приведенный выше код входа в систему, приглашение НЕ появится впервое место.

...