Page 115 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼VBAでのリンクテーブル作成について こうちゃん 02/11/18(月) 14:14 ┗Re:VBAでのリンクテーブル作成について yu-ji 02/11/18(月) 18:06 ┣ありがとうございました。OKです。 こうちゃん 02/11/18(月) 18:23 ┗蛇足 JuJu 02/11/22(金) 5:00 ┗Re:蛇足 こうちゃん 02/11/22(金) 9:01 ─────────────────────────────────────── ■題名 : VBAでのリンクテーブル作成について ■名前 : こうちゃん <nakajima19@hotmail.com> ■日付 : 02/11/18(月) 14:14 -------------------------------------------------------------------------
皆様、こんにちは。いつもお世話になっております。 VBAでデータベースパスワードを設定してあるmdbファイルのリンクテーブルを作成する方法について教えてください。 パスワードを設定していないmdbの場合は以下のコードでリンクできます。 DoCmd.TransferDatabase acLink, "Microsoft Access", _ "DBフルパス名", acTable, "テーブル名", "テーブル名", False パスワード設定してあるmdbの場合、パスワード入力ダイアログが表示されますが、正確なパスワードを入力してもリンクテーブルが作成できません。 「ファイル」「外部データの取り込み」「テーブルのリンク」メニューで、該当のmdbを指定すると、同様のパスワード入力ダイアログが表示され、パスワードを入力すればリンクテーブルが作成されるのですが・・ DoCmd.TransferDatabase以外でもいいんですが、VBA上でデータベースパスワードを設定してあるmdbファイルのリンクテーブルを作成する方法をご存知の方がいらっしゃればお教え願えませんでしょうか? 当方 (Win2000 or WinNT) + Access2000です。 |
いつもお世話になってますm(__)m ▼こうちゃん さん: >VBAでデータベースパスワードを設定してあるmdbファイルのリンクテーブルを >作成する方法について教えてください。 >DoCmd.TransferDatabase以外でもいいんですが、VBA上でデータベースパスワード >を設定してあるmdbファイルのリンクテーブルを作成する方法をご存知の方が >いらっしゃればお教え願えませんでしょうか? 確かに、パスワード入力にはなっても(エラーは出なくても)、実際にはリンクが 貼れませんねぇ。 で、WEB検索してみたらヒットしたんですが、DAOだったので、勉強を兼ねて ADOに修正してみました。 一応動作確認済です。 ******** Dim cat As New ADOX.Catalog Dim tdf As New ADOX.Table cat.ActiveConnection = CurrentProject.Connection tdf.Name = "テーブル名" Set tdf.ParentCatalog = cat tdf.Properties("Jet OLEDB:Create Link") = True tdf.Properties("Jet OLEDB:Link Datasource") = "リンク先データベース名" tdf.Properties("Jet OLEDB:Link Provider String") = ";pwd=パスワード" tdf.Properties("Jet OLEDB:Remote Table Name") = "リンク先テーブル名" cat.Tables.Append tdf cat.Tables.Refresh Set tdf = Nothing Set cat = Nothing ********* 慣れないADOなので、変なところがあるかもしれませんが(^^; |
yu-jiさん、ありがとうございました。 動作確認できました。 そっか〜、ADOXですよね〜。 mdbに対するADO、ちょっと苦手で、思いつきませんでした。 もう少し勉強しますね。 #言い訳めいてしまいますが、SQLサーバーだと「リンクテーブル」の概念がないもので・・(^^;) ほんとうに感謝、感謝です。(^^) |
yu-jiさん、こうちゃん、いつもお世話になってます^^ > cat.ActiveConnection = CurrentProject.Connection すでに接続されたConnectionがある時は、 Set cat.ActiveConnection = CurrentProject.Connection にしておくと新しい接続を作らない分、速くなるかも。 (私はADOXは使ったことはないのですが、多分同じかなぁ) > 一応動作確認済です。 このパソコン、Access入っていないので未確認です。ごめんなさい。 ではではぁ |
JuJu さん、いつもお世話になってます >> cat.ActiveConnection = CurrentProject.Connection > >すでに接続されたConnectionがある時は、 > > Set cat.ActiveConnection = CurrentProject.Connection > >にしておくと新しい接続を作らない分、速くなるかも。 >(私はADOXは使ったことはないのですが、多分同じかなぁ) はいはい、ありがとうございます。 Set *** = CurrentProject.Connection は定型で、自動的に書いちゃいます。スピードは意識したことはなかったんですが・・(^^;) >cat.ActiveConnection = CurrentProject.Connection この書き方だと、新しい接続をつくるんですか?勉強になりました。 どのくらい速さに違いがあるか、時間のある時に検証してみますね。 ありがとうございました。 |