0

ワイヤレス ネットワークを介した MDB データベースへのデータ アクセスに問題があるアプリがあります。

簡単な解決策は、すべてのワークステーションに、そのすべてのテーブルを SQL Server データベースにリンクするローカル MDB ファイルを配置することでしょうか?

これは、アプリ内のすべてのデータ アクセス コードを書き直す必要を回避する方法でしょうか?

4

1 に答える 1

1

はい、それはかなりうまくいくでしょう。多くのお客様がこのようにつながっています。
しかし、それは簡単な作業ではありません。必要なすべての努力が報われるかどうかはわかりません。
そして、いくつかの新しいメンテナンスと展開の問題があります。

従うべき手順は次のとおりです。

1)テーブルを SQLServer に移行します。
2)バックエンド データベースへの接続に使用する ODBC データ ソースを作成します。
3)
テーブルを接続します。テーブルは以前と同じ名前です。

ここで、すべてのコードをテストします。
うまくいけば、何も書き直す必要はありません。

実際の問題は、元のデータ ソースと一致する ODBC データ ソースを作成する必要があるクライアント PC にあります。また、フロントエンド データベースを再配布する場合、クライアント PC からすべてのテーブルを再接続する必要がある可能性があります。次のような関数を呼び出す必要があります。

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
于 2012-03-10T17:38:29.647 に答える