Мы используем Доступ MS в качестве фронтенда создания отчетов для Oracle. К данным получают доступ через соединение ODBC, и существует две связанных таблицы в Доступе к Oracle, которые являются таблицами необработанных данных. Я хотел бы смочь настроить соединение и связать таблицы из файла Доступа. Тем путем пользователи не должны волноваться об установке DSN для соединения ODBC (большинство из них не является очень техническими пользователями и потребует содержания руки для чего-то вроде этого), и мы можем в конечном счете иметь точку файла Доступа к различным тестовым средам и генерировать отчеты.
Действительно ли возможно создать соединение с базой данных динамично, когда файл открыт, и я могу динамично измениться, где мои Связанные таблицы связываются с?
Требуется подключение к связанной таблице без DSN от Access. Это возможно, и я сделал это, но у меня нет кода с собой. Я думаю, что это было примерно так (здесь используется источник SQL Server, но у Oracle просто будет немного другая строка подключения). Чтобы таблицы были созданы при запуске, вам необходимо проверить наличие каждого tabledef, прежде чем пытаться создать их снова, и вызвать подпрограмму, подобную приведенной ниже, при открытии базы данных Access.
Function LinkTables()
Dim DB As Database, tDef As TableDef
Set DB = CurrentDb
Set tDef = DB.CreateTableDef("YourAccessLinkedTableNameHere")
tDef.Connect = "ODBC;Driver={SQL Server};Server=srvname;Database=dbname;UID=sqluserid;PWD=sqlpwd"
tDef.SourceTableName = "dbo.YourSourceTableNameHere"
DB.TableDefs.Append tDef
End Function
Я делаю свои программы на рабочей станции с определенным DSN, а затем перед распространением для производственного использования запускаю вариант кода Дага Стила для преобразования всех строк подключения на основе DSN в строки без DSN.