2

これは、一部のユーザー テーブル (DDL およびデータ) を Oracle データベースから Microsoft Access データベースに自動的にエクスポートする簡単な方法です。つまり、ユーザーの操作は必要ありません。

UPDATE : Access データベースのリンクされたテーブルは、有効なオプションではない oracle に接続するためのユーザー/パスワード ダイアログを表示します。

4

3 に答える 3

4

実際のOracleデータをコピーするのではなく、それを「指す」リンクテーブルをMS Accessに設定できます。そうすれば、データは常に最新です。

それ以外の場合は、スケジュールされたプロセスを作成するか、MS Access データベースを開くたびに VBA コードを介してインポートを実行する必要があります。

個人的には、リンクされたテーブルを使用します。

于 2009-01-26T00:33:52.253 に答える
0

警告

以下のコードに関する注意事項:

  1. テーブルがすでに最初にリンクされているかどうかはチェックされません。そうである場合は、処理する必要のあるエラーが発生します。

  2. ユーザー名とパスワードはクリアテキストとして渡されますが、これはセキュリティ上のリスクです。誰かがあなたのデータベースコードを開いて、あなたのデータベースに接続するために必要なすべての情報を入手し、潜在的に何らかの害を及ぼす可能性があります。これが重要な場合は、AccessデータベースをMDEにコンパイルして配布するか、接続情報をその場で暗号化/復号化する方法を見つける必要があります。

答え

ADOXを使用すると、ユーザーIDとパスワードの入力を求められることなく、テーブルをリンクできます。まず、 " MicrosoftADOExt。2.8forDDL and Security "ライブラリ(VBAエディターのTools \ References ...)への参照を設定します。使用可能な参照のリストにこのエントリが表示されない場合は、「msadox.dll」を参照して手動で追加してください。Accessのバージョンによって、バージョン番号が異なる場合があります(ここでは2003を使用しています)。

次に、次のようなコードを使用してOracleテーブルにリンクできます。

Sub LinkOracleTable(Server, UserID, Password, Schema, TableName)

Dim tbl As New ADOX.Table
Dim cat As New ADOX.Catalog

Set cat.ActiveConnection = CurrentProject.Connection

With tbl
    .Name = TableName

    Set .ParentCatalog = cat
    .Properties("Jet OLEDB:Create Link") = True
    .Properties("Jet OLEDB:Link Provider String") = "ODBC;" & _
        "Driver={Microsoft ODBC For Oracle};" & _
        "Server=" & Server & ";" & _
        "Uid=" & UserID & ";" & _
        "Pwd=" & Password & ";"
    .Properties("Jet OLEDB:Cache Link Name/Password") = True
    .Properties("Jet OLEDB:Remote Table Name") = Schema & "." & TableName
End With

cat.Tables.Append tbl
cat.ActiveConnection.Close

End Sub

あなたはこのように潜水艦を呼ぶでしょう:

LinkOracleTable "TNS Service Name", "UserName", "Password", "MySchema", "MyTable"
于 2009-01-26T12:33:37.883 に答える