
インサイトブレイン業務ソフトシリーズの販売管理ソフトのデータって、起動したAccessファイルの中には存在しないよね?

そのとおりだよ。あえてプログラム部分のAccessファイルとデータ部分のAccessファイルを分割してあるんだ。そして、プログラム部分のAccessファイルからデータ部分のAccessファイルのテーブルをリンクしているんだ。


どうして、分割しているの?

プログラムファイルとデータファイルが同じだと、プログラム部分の変更(バージョンアップや不具合修正)があった場合に、ファイルを差し替えるのが大変になる。でも、プログラム部分とデータ部分が別ファイルになっていれば、プログラム部分だけを差し替えればいいので、処理が簡単になるんだよ。つまり、ユーザにアプリケーションを配布するのに便利なんだ。

なるほど。でも、どうやってプログラムファイルからデータファイルのテーブルを参照するの?

テーブルのリンク機能(リンクテーブル)を使うんだ。
プログラムファイルから、リンクしたいテーブルを選択するんだよ。
手動でのリンクテーブルの作成と更新と削除
リンクテーブルの作成

【手順①】[外部データ]-[新しいデータ ソース]-[データベースから]-[Access]をクリックします。


【手順②】「データのインポート元とインポート先、または、リンク元とリンク先の選択」画面の[参照]ボタンをクリックして、リンクしたいテーブルが存在しているAccessファイルを選択します。
【手順③】「リンクテーブルを作成してソースデータにリンクする」を選択して、[OK]ボタンをクリックします。


【手順④】「テーブルのリンク」画面に、テーブルのリストが表示されるので、リンクしたいテーブルを選択(複数選択も可能です)してから[OK]をクリックします。


【手順⑤】「ナビゲーションウィンドウ」にリンクしたテーブルのアイコンが表示されます。(アイコンの左側に→が付いているのがリンクテーブルです。)テーブルを開くと、リンク先のテーブルのデータを参照/編集できます。


本当だ。他のファイルのデータが参照できている。

リンクテーブルは、リンク先のデータソース(ファイル)情報とテーブル名を持っていて、その情報を利用してテーブルをリンクしているんだよ。
リンクテーブルの更新

リンクテーブルのリンク先のファイルが移動したり、ファイル名が変更されたりしたらどうなるの?

リンクテーブルを開こうとすると、データソース(ファイル)が見つからないって表示されるんだ。もちろんテーブルは開けないよ。


大変だ。こういう場合はどうしたらいいの?

リンク先を更新してあげればいいんだ。
【手順①】リンク先を更新したいテーブルを右クリックして、「リンク テーブル マネージャー」を選択します。


【手順②】「リンク テーブル マネージャー」画面の「データソース名」のチェック欄をクリックしてから、[再リンク]ボタンをクリックします。


【手順③】「新しい場所を選択Access」画面で、移動先のファイル(もしくは変更した元ファイル名)を選択します。


【手順④】テーブル名を聞いてくるので、そのまま[OK]をクリックします。


【手順⑤】「リンクテーブルマネージャー」画面で「データソース情報」が更新されたのを確認してから、[閉じる]をクリックします。


【手順⑥】再度、「T_顧客マスタ」テーブルを開くと、データを見れるようになります。


本当だ。また、データを参照できるようになった!!
リンクテーブルの削除(解除)

リンクテーブルが不要になったらどうしたらいいの?

リンクテーブルを削除してあげれば、リンクが解除されるよ。

テーブルを削除した場合、通常のテーブルの場合は、テーブルとともにデータそのものが削除されますが、リンクテーブルの場合は、リンクだけが解除されますので、元ファイルのデータはそのままです。
VBAを利用したリンクテーブルの作成と更新と削除

さて、話を元に戻すと、ユーザにアプリケーションを配布するのに便利なので、プログラムファイルとデータファイルを分割しているわけだけど、プログラム部分が変更される度に、ユーザが手動でリンクテーブルのリンク先を変更するのは、面倒だよね。

確かに、皆が皆リンクテーブルの更新の仕方を知っているわけではないし、面倒なことはしたくないっていうのが本音だと思うよ。

そうだね。だから、リンクテーブルの更新などは、VBAで自動化すると便利なんだ。具体的には、TableDefオブジェクトを利用するんだ。
Dim T As TableDef
Dim LinFileName As String
Dim TableName As String
On Error Resume Next
LinFileName = "C:\temp\NewData.mdb" 'リンク先のファイル名
TableName = "T_顧客マスタ" 'テーブル名
CurrentDb.TableDefs.Delete TableName 'リンクを一旦削除
Set T = CurrentDb.CreateTableDef(TableName) '新たなテーブルを作成するための変数を作成
T.Connect = ";DATABASE=" & LinFileName 'リンク先を指定
T.SourceTableName = TableName 'ソースとなるテーブルを代入
CurrentDb.TableDefs.Append T 'リンクテーブルを作成
Set T = Nothing '変数のクリア
Accessで作成された無料でも利用できる便利な売上仕入在庫管理ソフトは下記から取得できます。
コメント