Accessのリンクテーブルの自動更新・一括更新の方法について

このQ&Aのポイント
  • バックエンドとフロントエンドでのデータベースを作成中の際に、リンクテーブルのパスの変更に困っています。自宅と会社のPCで作成しているため、リンクテーブルの自動更新方法や一括更新方法を教えていただきたいです。
  • 他のサイトで一つのテーブルをボタンで更新する方法を見つけましたが、複数テーブルを一挙に更新させる方法は分かりません。テーブル数が現在決まっておらず、今後増える予定です。
  • 参考サイトやソースコードを教えていただけると助かります。どうぞよろしくお願いいたします。m(_ _)m
回答を見る
  • ベストアンサー

Accessのリンクテーブルについて質問です。

Accessのリンクテーブルについて質問です。 この度、バックエンドとフロントエンドでのデータベースを作っています。 フロントエンドを会社のPC10台程度で利用しようと考えています。 ただ、作成するのが、自宅のPCと会社のPCで作っているのですが、 リンクテーブルのパスが変わってしまい、非常に困っています。 現在は自宅でデータ系を作成し、会社でフォーム等見た目に関するものを作っている次第です。 リンクテーブルを自動更新させる方法、または、ボタンで全てのリンクテーブルを更新させる方法はないでしょうか? 一つのテーブルをボタンで更新させる方法は、他サイトで見つけたのですが、複数テーブルを一挙に更新させる方法が見当たりません。 また、面倒な話なのですが、テーブル数は現在決まっておらず、今後増える予定です。(現在は7つ。) 出来れば参考サイトやソースコードを教えていただけると、非常に助かります。 何卒よろしくお願いいたします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • wildcard
  • ベストアンサー率54% (54/100)
回答No.2

Access2003であれば、下記コードで すべてのリンクテーブルのパスを変更 できるハズです。 Sub test()   On Error GoTo Err_test   Dim strFile As String   Dim intResult As Integer   Dim tb As DAO.TableDef   Const ENABLE_WIZHOOK = 51488399   Const DISABLE_WIZHOOK = 0      WizHook.Key = ENABLE_WIZHOOK   intResult = WizHook.GetFileName(0, "", "データベースを指定して下さい", "" _     , strFile, "", "mdbファイル (*.mdb)|*.mdb", 0, 0, 0, True)   WizHook.Key = DISABLE_WIZHOOK   If strFile = "" Then Exit Sub      For Each tb In CurrentDb.TableDefs     If tb.Connect <> "" And tb.Connect <> ";DATABASE=" & strFile Then       tb.Connect = ";DATABASE=" & strFile       tb.RefreshLink     End If   Next tb   MsgBox "リンク更新が正常に終了しました", vbInformation   Exit Sub    Err_test:   MsgBox Err.Description, 16 End Sub

abuhiro
質問者

お礼

非常にわかりやすいソースありがとうございます。 読解できました。 いじる所も全くないのでこのまま利用させていただきます。 本当にありがとうございました。m(_ _)m

その他の回答 (1)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

こちらが最適かと。 http://www.nurs.or.jp/~ppoy/access/access/acM020.html マイクロソフトにもありますが。 http://support.microsoft.com/kb/291264/ja では。

abuhiro
質問者

お礼

非常に参考になりました。 今後の参考にさせていただきます。m(_ _)m

関連するQ&A

  • Accessのテーブルのリンクについて

    Access2002で、異なるファイル間でテーブルをリンクして使用しています。 「A」データベースと「B」データベースがあり、 「A」データベースのテーブルを「B」データベースへリンクさせています。 「B」には「A」からリンクさせているテーブルと同一の形式のテーブルがあり、 普段は「B」所有のテーブルを使用しているのですが、「保存」ボタンクリック時に 「A」からリンクさせているテーブルに「B」の内容をコピーするマクロを作成したいのですが、 値の代入がうまく行きません。 どうすればデータをコピーできるでしょうか。

  • リンクテーブルについて

    ACCESS2003を使用しています。 test.mdbに保存されていたテーブル1、テーブル2を データーベース分割ツールでtest_be.ldbにリンクテーブルしました。 その後にテーブル3を作成したのですがこれもtest_be.ldbに追加で移動しリンクテーブルにしたいのですがどうすればいいのかわかりません。 「データーベース分割ツール」→「バックエンドデータベースの作成」となるのですがこれに上書きしてもいいのでしょうか? またリンクテーブルマネージャーを見ても新しいテーブル3は表示されません。 よろしくお願いします。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • Access97のリンクテーブルについて

    Access97で作成したデータベースを元のPCから別のPCへ移動させようと思っています。 ところが、そのデータベースのテーブルの多くがリンクテーブルとなっており リンク先がフロッピィディスク(データ移動用)になっています。 ちなみにこのFDにはSEQファイルというのが保存されているのですが、 どのように関連付ければデータベースごと移動できるのでしょうか? 担当者が辞めてしまって二進も三進もいかず困っています・・・ あとデータベースの内容等の参照・変更をするためにユーザーアカウントがありますがどこからそのアカウントを入力してやればいいのでしょうか? 普段はAccessを起動させると勝手に入力画面にジャンプするので・・・

  • MS-Accessのリンクテーブルで更新

    MS-Accessのリンクテーブルで更新 MS-Accessのリンクテーブルを使用して、 Oracleデータベースの表に対して 値の更新をしようとしていますが、 更新が競合しているというメッセージが出て、 更新できません。 また、値の更新をしようとしているタイミングで、 Oracleデータベース側のリンクテーブル対象表に アクセスしている処理はなく、 更新が競合していることありません。 ODBCドライバの設定では、読み取り専用設定は 実施してない点は確認しています。 使用しているソフトウェアの各バージョンは以下になります。 Access 2007 Oracle 10.2.0.4.0 WindowsXP SP3 ODBCドライバ 10.02.00.01 リンクテーブルからの更新自体がそもそも出来ないのでしょうか? MS-Accessを使用してOracleデータベースの表の値を更新したいと思っているのですが、 解決方法をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?

  • Accessのリンクテーブルについて

    Access2000を使用しているのですが、SQLServerのDBをリンクしなければいけないのですが、ODBCを使用せずにリンクさせる方法はあるのでしょうか? またはモジュールでコードを記述してリンクテーブルを作成する方法でもかまわないのですが・・・。 作成したAccessを配布したPCにODBCを設定するのが面倒なのですが・・・。 なにかいい方法があるのか教えていただきたいです。

  • Access2010のリンクテーブルについて

    Access2010のリンクテーブルについて質問をさせてください。 現在、社内ではExcelシートで対応ログを残しています。 ログ入力や検索のことを考えれば、Accessへ移行するべきだと思うのですが、現在その予定はありません。また、ここで対応内容に応じて「区分」を付加していきたいと考え、以下のことを行いました。 1.ExcelシートをリンクテーブルとしてAccessに取り込み。  [対応テーブル]   ・対応NO   ・対応内容 2.今後加えていきたい区分のテーブルを作成  [区分マスタ]   ・区分NO   ・区分名 3.AccessでExcelシートは更新できないので、1と2をもとにしたテーブルを作成  [対応明細]   ・対応明細NO   ・対応NO(1と結合)   ・区分NO(2と結合)    3.のテーブルに対し、「対応NO」と「区分NO」を入力していければ、もともとのExcelファイルをいじることなく、区分を追加していけるものと考えたのですが、「このレコードセットは更新できません。」とのエラーとなってしまいます。 以前のAccessではExcelのリンクテーブルも更新できたと思うのですが、大人の事情でそれができなくなったことは認識しています。その回避策として、リンクテーブルに編集を加えるのではなく、更新用のテーブルを用意して入力していこうと思ったのですが、それもできません。 回避策がありましたらご教示いただけますでしょうか。 宜しくお願いいたします。

  • リンクテーブルのようなものは?

    ACCESSのリンクテーブルのような機能は、SQL Server 2000にあるのでしょうか? SQL Serverに作成したデータベースAとBがあり、AにあるテーブルをBから参照更新したりすることはできるのでしょうか? 具体的にはどのようなものになるのでしょうか? 初歩的な質問で申し訳ありませんが、何卒、よろしくお願いします。

  • アクセスのテーブルにリンクできなくしたい

    アクセス97です。 DBのテーブルを見れないようにはできたのですが、 他に別のDBを作成し、元のDBのテーブルにリンクしてしまうと いともたやすくテーブルを見ることができてしまいます。 元のDBには、パスワードやグループファイルで権限を付けたくないです。 テーブルのリンクを許さない方法が何か無いでしょうか? また、テーブルが誰かによってリンクされているかどうかが 分かる方法ってあるでしょうか? よろしくお願い致します。

  • テーブル作成クエリとデータベースの分割

    当方、Accessは全くの素人ですが、急遽Accessにて連絡先台帳を 作ることとなりました。 参考書を片手に、なんとかそれ相応のものになってきましたが、 表題部分にて四苦八苦しております。 どうぞ、ご教授のほどよろしくお願いします。 まず、連絡先テーブルを作成しました。 この中には個人名、会社名、住所などを入力するようにしました。 会社名の中には複数のレコードがあるため、個人向けではなく、会社向けの 送付用のラベルを作成したいと思い、テーブル作成クエリを用いて 会社テーブルを作成しました。 上記テーブルから、ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 また、この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、新たな連絡先が 追加されたときなど、再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。 できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか? 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、できればコード等を記載して いただけると助かります。 Access2007を用いております。 どうぞよろしくお願いします。