Где еще MS Access может получить DSN? - PullRequest
0 голосов
/ 27 октября 2009

У меня есть приложение Access 2000 для управления. DSN указывает на производственную базу данных Postgresql, и я хотел бы указать ее на ту, которая работает на моей машине для тестирования.

Проблема в том, что я не могу понять, как это изменить. Я попытался запустить odbcad32.exe, и я увидел DSN и смог изменить его на то, что я хотел (и он прошел тест «тестовое соединение»), но он все еще, кажется, подключается к старой производственной DSN. Я подтвердил это, проверив журналы соединений, которые сбрасываются до C:\. Я искал в реестре имя рабочего сервера; Я не смог найти его (и я убедился, что мои изменения были опубликованы в реестре. Я искал в источниках форм всего проекта имя сервера, но не смог найти его и там.

Где еще Access может получить DSN?

Ответы [ 2 ]

1 голос
/ 27 октября 2009

Не используйте DSN. Я очень предпочитаю DSN-Less соединения, так как кому-то нужно меньше настраивать на каждом ПК, а пользователям - меньше.

Использование подключений без DSN

Учебное пособие по ODBC DSN-Less Часть I

HOWTO: Используйте ODBC-соединения без DSN с RDO и DAO

Строка подключения Carl Prothman's Home Page

Повторное связывание таблиц ODBC с кодом

Также проще иметь настройку, в которой для вас используется строка подключения для разработки и строка подключения для производства для всех остальных. Например, если ваши пользователи получают только MDE / ACCDE, вы можете использовать следующую функцию, чтобы определить, какую строку подключения использовать

Public Function tt_IsThisAnMDE()
On Error GoTo tagError

  Dim dbs As Database
  Set dbs = CurrentDb
  Dim strMDE As String
  On Error Resume Next
  strMDE = dbs.Properties("MDE")
  If Err = 0 And strMDE = "T" Then
    tt_IsThisAnMDE = True
  Else
    tt_IsThisAnMDE = False
  End If

    Exit Function

tagError:
    Call LogError(Application.CurrentObjectName, "")
    Exit Function

End Function
0 голосов
/ 30 октября 2009

Очевидно, что MS Access хранит всю строку подключения, а не только имя DSN. Вот что я вижу, открывая файл .mdb в Блокноте:

DSN=SQL-Northwind;APP=Microsoft Office 2003;WSID=DELLNOTEBOOK;DATABASE=Northwind;Network=DBMSSOCN;Address=LOCALHOST;Trusted_Connection=Yes

MS Access поставляется с Linked Table Manager, однако он не будет обновлять DSN после его изменения (по крайней мере, для меня)

Полагаю, ваш единственный выбор - удалить ссылку и создать новую.

...