Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/76: Рейтинг темы: голосов - 76, средняя оценка - 4.93
2 / 2 / 0
Регистрация: 12.04.2016
Сообщений: 9
1

Access и PostgreSQL: подключение к БД, работа с таблицами

08.06.2016, 14:58. Показов 13813. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Возникла необходимость научиться работать через элементы управления, созданные в Access 2013 с PostgreSQL.

Для начала решил подключиться к БД и присоединить из нее тестовую пустую таблицу.

Что сделано:
  • Сервер PostgreSQL работает (на удаленном компе).
  • ODBC-драйвер на моем компе установлен.
  • PGAdmin с моего компа и сервер и базу и таблицу в ней видит.
  • Тест соединения из "Администратора источника данных ODBC" выдает положительный ответ.

Что не так:
При попытке подключиться (действие повешено на одну из кнопок) выдает ошибку 3151 "ODBC - ошибка подключения к PostgreSQL35W"

Код, который затыкается на последней строке (хотя дело явно не в ней):
Visual Basic
1
2
3
4
    Set NewTableDef = CurrentDb.CreateTableDef("From_PGSQL")
    NewTableDef.Connect = "ODBC;DSN=PostgreSQL35W;DATABASE=pgtest;SERVER=!!!ИМЯСЕРВЕРА!!!;UID=pgtest;PWD=пароль;"
    NewTableDef.SourceTableName = "tt01"
    CurrentDb.TableDefs.Append NewTableDef
PostgreSQL35W - название DSN в настройках источников данных ODBC
!!!ИМЯСЕРВЕРА!!! - на самом деле на это место ставилось имя сервера из PGAdmin'a или имя компьютера, на котором запущен PostgreSQL, что на результате не сказалось.
tt01 - таблица в базе данных pgtest.
From_PGSQL - наименование будущей подсоединенной таблицы в Access (если я все верно понял - оно может быть произвольным, в разумных пределах, пробовал дать имя соответствующее имени в PostgreSQL - tt01 - те же грабли).

Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2016, 14:58
Ответы с готовыми решениями:

Работа с таблицами Access на VBA
Уважаемые форумчане, владеющие VBA для Access! Помогите мне, пожалуйста, с решением следующей...

Работа с временными таблицами в VB6.0 + MS Access 20*
Добрый день, формучане. Во время реализации проекта по разработке базы данных склада на Visual...

Работа с таблицами и запросами Access на VBA
Уважаемые форумчане! Прошу посмотреть мою базу данных. В ней 3 простых таблицы и 1 модуль на...

Работа с таблицами Access через форму-оболочку
Уважаемые участники форума, помогите пожалуйста с экспресс-советом. Есть готовая база данных -...

4
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
08.06.2016, 16:08 2
Есть толковая статья про подключение постгре к аксу, написана известным акцесником assa: http://ssy.mccinet.ru/pg_no_dsn.html
Почитайте, возможно поможет
4
2 / 2 / 0
Регистрация: 12.04.2016
Сообщений: 9
09.06.2016, 13:59  [ТС] 3
Уважаемый mobile, благодарю за ответ!

Указанную статью видел, и делал все как раз так, как написано, после чего, в результате неудачи, и создал тему.

Пока разбирался дальше сам выяснил следующее. Одна из проблем состоит в разрядности ОС и Access. У меня х64 Win7 и 32-битный офис. Установленный драйвер ODBC был 64-битным и, по всей видимости, неверно воспринимался офисом. С ним и из Excel и "ручными" способом (через "Внешние данные" -> "база данных ODBC") в Access вылетала ошибка. После установки дополнительно 32-битной версии ручное подключение к БД и ее подключение в Excel заработало.

Теперь проблема в том, что после ручного подключения и отключения таблицы программный код срабатывает правильно (подключает ее), а без ручного подключения - нет. В результате "нет" вылетает ошибка 3000 ("Зарезервированная ошибка (-7711); сообщение для данной ошибки отсутствует").

Будем думать дальше.
1
Эксперт MS Access
7398 / 4535 / 295
Регистрация: 12.08.2011
Сообщений: 14,027
09.06.2016, 14:27 4
Цитата Сообщение от Кака Кнобекайзе Посмотреть сообщение
Установленный драйвер ODBC был 64-битным и, по всей видимости, неверно воспринимался офисом.
Там же две папки, в одной 64, а в другой 32, ищите.
0
2 / 2 / 0
Регистрация: 12.04.2016
Сообщений: 9
09.06.2016, 17:29  [ТС] 5
Уважаемый alvk!
Цитирую продолжение своего предыдущего сообщения: "После установки дополнительно 32-битной версии ручное подключение к БД и ее подключение в Excel заработало."
А вот проблема программного подключения посредством VBA никуда не делась.
Вручную таблица линкуется, после того, как приликнованную таблицу вручную же удалишь (так быстрее) - начинает работать и программная линковка.
Если прилинкованную таблицу удалить и перезапустить Access - снова не линкуется.
Если прилинкованную таблицу не удалять, перезапустить Access, удалить прилинкованную таблицу - снова не линкуется.
Если прилинкованную таблицу не удалять, перезапустить Access, открыть и закрыть прилинкованную таблицу, затем удалить прилинкованную таблицу - программный линк работает.

Понять что ручная линковка делает такого, что не получается сделать программно не получается.

Добавлено через 13 минут
Уважаемые коллеги, всем спасибо за помощь!

Оказалось проблема в двух моментах:
1) Версия ODBC драйвера - должна соответствовать битности Access (из-за этого была масса глюков)
2) Совершенно дурацкая ошибка с моей стороны - не учел регистр при наборе пароля После ручного подключения, видимо, где-то сохранялась информация о том, что правильный пароль был введен.

Проблема решена, тему можно закрывать.

Добавлено через 6 минут
Кому интересно - код:
Visual Basic
1
2
3
4
    Set NewTableDef = CurrentDb.CreateTableDef("tt01")
    NewTableDef.Connect = "ODBC; DSN=PostgreSQL; SERVER=ИмяСервера; DATABASE=pgtest; UID=pgtest; PWD=Пароль;"
    NewTableDef.SourceTableName = "tt01"
    db.TableDefs.Append NewTableDef
DSN отличается от предыдущего, т.к. создан новый.
Пароль теперь с большой буквы.
Все. Всем спасибо!
1
09.06.2016, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2016, 17:29
Помогаю со студенческими работами здесь

Подключение к базе ACCESS(работа с ADODB.Connection)
Суть вопроса, есть БД ACCESS находится на сервере в папке с доступом для пяти человек, я пишу...

Подключение базы данных Access и работа с ней
не знаю правильно ли, но вот так подключил базу <connectionStrings> <add...

Подключение и работа с базой данных MS Access 2007
Доброго времени суток. Очень нужна помощь. Есть база данный на Access 2007.Есть Studio 2013. бд...

Подключение PostgreSQL к QT
Подскажите как с нуля посгрю к кьют подключить, или ссылочек на инфу, на просторах сети не чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru