過去ログ

                                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です。

 ───────────────────────────────────────  ■題名 : Re:VBAでのリンクテーブル作成について  ■名前 : yu-ji  ■日付 : 02/11/18(月) 18:06  -------------------------------------------------------------------------
   いつもお世話になってます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なので、変なところがあるかもしれませんが(^^;

 ───────────────────────────────────────  ■題名 : ありがとうございました。OKです。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/18(月) 18:23  -------------------------------------------------------------------------
   yu-jiさん、ありがとうございました。
動作確認できました。

そっか〜、ADOXですよね〜。
mdbに対するADO、ちょっと苦手で、思いつきませんでした。
もう少し勉強しますね。

#言い訳めいてしまいますが、SQLサーバーだと「リンクテーブル」の概念がないもので・・(^^;)

ほんとうに感謝、感謝です。(^^)

 ───────────────────────────────────────  ■題名 : 蛇足  ■名前 : JuJu <juju-bbs@su-u.com>  ■日付 : 02/11/22(金) 5:00  -------------------------------------------------------------------------
   yu-jiさん、こうちゃん、いつもお世話になってます^^

> cat.ActiveConnection = CurrentProject.Connection

すでに接続されたConnectionがある時は、

 Set cat.ActiveConnection = CurrentProject.Connection

にしておくと新しい接続を作らない分、速くなるかも。
(私はADOXは使ったことはないのですが、多分同じかなぁ)

> 一応動作確認済です。

このパソコン、Access入っていないので未確認です。ごめんなさい。

ではではぁ

 ───────────────────────────────────────  ■題名 : Re:蛇足  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/11/22(金) 9:01  -------------------------------------------------------------------------
   JuJu さん、いつもお世話になってます

>> cat.ActiveConnection = CurrentProject.Connection
>
>すでに接続されたConnectionがある時は、
>
> Set cat.ActiveConnection = CurrentProject.Connection
>
>にしておくと新しい接続を作らない分、速くなるかも。
>(私はADOXは使ったことはないのですが、多分同じかなぁ)

はいはい、ありがとうございます。

Set *** = CurrentProject.Connection

は定型で、自動的に書いちゃいます。スピードは意識したことはなかったんですが・・(^^;)

>cat.ActiveConnection = CurrentProject.Connection

この書き方だと、新しい接続をつくるんですか?勉強になりました。
どのくらい速さに違いがあるか、時間のある時に検証してみますね。

ありがとうございました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 115