Как создать связанные таблицы из MDB в SQL Server - PullRequest
0 голосов
/ 10 марта 2012

У меня есть приложение с проблемами доступа к базе данных MDB по беспроводной сети.

Было бы быстрым решением иметь локальный файл MDB на всех рабочих станциях, который связывает все его таблицы с базой данных SQL Server?

Будет ли это способом избежать необходимости переписывать весь код доступа к данным в приложении?

1 Ответ

1 голос
/ 10 марта 2012

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

Выполните следующие шаги:

1) Перенос ваших таблиц в SQLServer
2) Создание источника данных ODBC, который будетиспользоваться для подключения к вашей серверной базе данных
3) Соедините ваши таблицы
4) Переименуйте ваши связанные таблицы, чтобы удалить квалификатор схемы (например, "dbo_"), такВаши связанные таблицы имеют то же имя, что и раньше.

Теперь пришло время протестировать весь ваш код.
Надеюсь, вам не придется ничего переписывать.

Реальные проблемы лежат на клиентских ПК, где вам нужно создать источник данных ODBC, которыйсоответствует вашей оригинальной.Кроме того, если вы распространяете свою базу данных переднего плана, возможно, вам придется заново подключить все таблицы с клиентских компьютеров.Вам нужно вызвать такую ​​функцию:

Public Function UpdateODBCTables() As Boolean

    On Error GoTo Exit_On_Error
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim sDSN As String
    Dim sDB As String
    Dim sComputer As String
    Dim sDesc As String
    Dim sApp As String
    Dim strConnect As String

    sDSN = "YOUR_DSN_NAME"
    sDB = "YOUR_DATABASE_NAME"
    sComputer = "YOUR_COMPUTER_NAME"
    sApp = "YOUR_APP_NAME"
    sDesc = "DESCRIPTION_OF_YOUR_APP"

    strConnect = "ODBC;DSN=" & sDSN & ";" & _
                 "DATABASE=" & sDB & ";" & _
                 "WSID=" & sComputer & ";" & _
                 "TrustedConnection=Yes;" & _
                 "Description=" & sDesc & ";" & _
                 "APP=" & sApp ";"
    Set dbs = CurrentDb
    ' Loop over tabledefs of ODBC type and reconnect
    For Each tdf In dbs.TableDefs
        If tdf.Connect <> "" And Left(tdf.Connect, 4) = "ODBC" And Left(tdf.Name, 1) <> "~" Then
            tdf.Connect = strConnect
            tdf.RefreshLink
        End If
    Next
    dbs.TableDefs.Refresh
    UpdateODBCTables = True

Exit_On_Return:
   Set dbs = Nothing
   Exit Function

Exit_On_Error:
   MsgBox Err.Description, vbCritical, "YOUR_MESSAGE_TITLE"
   Resume Exit_On_Return
End Function
...