リンクテーブル作成をコーディングするって話はどこにでも転がってる情報なのだが、リンク元が信頼できる場所にない場合にセキュリティに関する通知が出てしまうということについて。
信頼する場所にリンク先ファイルがあれば当然でないけど、必要以上に信頼する場所の追加とかセキュリティレベルをいじってしまうのはどうなんだろうと。
自分の場合、CreateTableDefメソッドを使っていたのだが、データのインポートエクスポートマクロアクション、Docmd.TransferDatabaseメソッドでもリンクテーブルを作成することができる。ただ、セキュリティに関する通知については挙動が異なる。RuntimeもしくはRuntimeモードと製品版とでも違うがあるようだ。いまさらだけどきっちりと確認はしてない。
Sub CreateLinkTable1()
Dim db As DAO.Database, tbldf As DAO.TableDef
Set db = CurrentDb
Set tbldf = db.CreateTableDef("table1")
tbldf.Connect = _
";DATABASE=\\ServerName\SharedFolder\targetDb.accdb;TABLE=table1"
tbldf.SourceTableName = "table1"
db.TableDefs.Append tbldf
Set tbldf = Nothing: Set db = Nothing
Application.RefreshDatabaseWindow
End Sub
Sub CreateLinkTable2()
DoCmd.TransferDatabase acLink, _
"Microsoft Access", _
"\\ServerName\SharedFolder\targetDb.accdb", _
acTable, _
"table1", _
"table1"
End Sub
DoCmd.TransferDatabaseだとリンク先が信頼できる場所にない限りセキュリティに関する通知は出現する。
データのインポート/エクスポートマクロアクションの場合、製品版での実行であればセキュリティに関する通知は出ない。Runtime版もしくはRuntimeモードだと出る。
CreateTableDefメソッドの場合、セキュリティに関する通知は出ない。
確認してないけど、access2007でも同じような気がする。確認したら同じだった。
追記>>
TableDef.Connectプロパティ変更後、TableDef.RefreshLinkメソッドで更新する場合もセキュリティに関する警告はでない。ADOXでリンク先変更も同じくでない。
2 件のコメント:
この問題に関する情報がほかになく、とても助かりました。
ありがとうございました。
どういたしまして~
コメントを投稿