Подключение MS Access к PostgreSQL серверу

У меня проблемы с подключением к нашему серверу postgres. Мне дали код, используемый для подключения ms доступа к нашему SQL Server. Это должно быть DSN-менее, я установил ODBC-driver и теперь я застрял в поиске правильной строки подключения для записи в код доступа VBA.

Я знаю, что это должно быть примерно так:

stConnect = "ODBC;Driver={PostgreSQL UNICODE};Data Provider=pgsqlODBC;hostaddr=[IP-adress];Port=61000;dbname=TE_TestFirst;user=admin;password=testtest;"

Или, может быть, так:

stConnect = "ODBC;Driver={PostgreSQL UNICODE};Data Provider=pgsqlODBC;SERVER=[IP-adress];PORT=61000;DATABASE=TE_TestFirst;UID=admin;PWD=testtest;"

Я прочитал, что 64-битные ПК должны быть предоставлены "Поставщик данных". Пока что ничего не работает, кроме версии DSN, которая нам не нужна. Я скопировал бесчисленные строки подключения с разных сторон, может быть, я что-то наблюдаю?

Я с нетерпением жду ваших ответов и заранее благодарю вас. Puddingloeffel

5 ответов

Решение

В итоге мы сделали следующее:

Использование строки подключения "PostgreSQL Unicode(x32)", написанной так, как показано выше + использование другого сценария для подключения к

Теперь работает нормально и без DSN:)

Я нашел способ создать User-DSN в модуле MS Access, который затем использую для подключения к серверу. Это не очень красивый код, но он работает. Для тех, кто ищет подобное решение:

    'Creating User DSN
    strAttributes = "Description=I did this myself" & Chr(13) & "Server=[Servername/ID]" & Chr(13) & "Database=TE_TestFirst" & Chr(13) & "Username=admin" & Chr(13) & "Password=***" & Chr(13) & "Port=61000"
    DBEngine.RegisterDatabase "DSNnew", "PostgreSQL Unicode", True, strAttributes
    MsgBox "DSN has been created", vbInformation

    Connection String
    stConnect = "ODBC;DSN=DSNnew;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"

Как видите, информация встраивается дважды, что мне действительно не нравится, но пока все в порядке. Вы можете проверить созданный DSN с администратором ODBC.

Вы можете найти оригинальный код здесь

Также этот код - способ, которым мы получаем таблицы с сервера в MS Access. Хотя пример касается SQL Server, он прекрасно работает и с PostgreSQL! (Как я вижу сейчас, эта сторона также предоставляет решение о создании DSN)

Что-то вроде этого:

stConnect = "Driver={PostgreSQL Unicode(x64)};Servername=dbtest;Port=5432;UID=postgres;Database=postgres;Password=****";

Я не смог решить проблему с помощью строки подключения, которая не содержит DSN, но с DSN file как @Erik van Asmuth и @krish KM сказал.

Файл DSN находится в папке "Мои документы" (администратор ODBC автоматически сохранил его в этой папке. Вы можете переместить его куда угодно, но затем вместо имени файла вам нужно будет указать путь)

Я открываю через VBA Code в MS Access со следующей строкой подключения:

stConnect = "ODBC;FILEDSN=PGUnicode32;Server=[IP-adress];Port=61000;Database=TE_TestFirst;Uid=admin;Pwd=****;"

Access получил соединение и загружает таблицу TE-TestFirst, Еще раз спасибо, ребята. Сейчас попробую подключиться через строку подключения без файла

Что-то изменилось с Office 365; кажется, раньше это было гораздо проще, чем сейчас. Меня это свело с ума, и единственный реальный намек был в ответе @Andrey-Belykh.

Вот что я обнаружил, что это действительно сработало.

В разделе «Внешние данные» -> «Диспетчер связанных таблиц» нажмите «Добавить». Появится следующее диалоговое окно:

Выберите нижний вариант «Пользовательский».

Затем появляется этот сводящий с ума бесполезный диалог с нулевой документацией (или онлайн-справкой):

Чтобы знать, что вы устанавливаете, вам нужно точное описание драйвера ODBC — существующие соединения ODBC очень помогают в этом. И описание должно быть в фигурных скобках:

Итак, в этом случае строка подключения начинается с:

      DRIVER={PostgreSQL Unicode(x64)};

Путь к источнику данных может быть просто «ODBC», а послеDRIVER=оператор, который вы можете поместить в фактическую строку подключения:

Оттуда появляется обычное диалоговое окно для каждой таблицы и представления.

Я надеюсь, что это кому-то поможет и сэкономит время, которое я только что потратил, пытаясь разобраться в этом.

Другие вопросы по тегам