- 締切済み
リンクテーブルについて・・・
Access97で仕事関連のシステムを開発しています。 実データはテーブルだけのMDBファイルに格納して、 リンクテーブルとしています。 自宅ではアプリケーションMDBファイル、実データMDB ファイル共、ローカルディスクに入れていますが、 仕事場では実データMDBファイルはネットワーク上の サーバに有ります。 その為、アプリ変更の都度「リンクテーブルマネー ジャー」を行わないといけないのですが、これが結構 やっかいです。 自宅の環境では、数十テーブルのリンクに関して、 1回だけリンク先のMDBファイルを指定してやれば、 全てのテーブルリンクが完了しますが、仕事場では 各テーブル毎に1件づつリンク先を指定しないと いけません・・・なんで? あと、2つのリンク環境を一発で更新するとか、 出来ませんかネェ?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
会社のリンクテーブル先、全部同一のmdbにはいっていますか? 全部同一のmdbに入っているのなら、全部のテーブルを選択して、1回だけリンク先のMDBファイルを指定してやれば全てのテーブルリンクが完了しますが、 リンク先が複数のmdbに分かれている場合、全部のテーブルがひとつのmdbに入っているわけではないので、全部選択してしまうと、1回づつ聞いてきます。 同一のmdbに入っているテーブルだけ選択して(複数可能)リンクを張りなおして、また別のmdbに入っているテーブルだけ選択してリンクを張りなおす、という方法があります。 リンク先を指定して実行ボタンをクリックすると、リンク先を更新するVBAです。 (ACCESS97実際に使っています。) Private Sub 実行_Click() If IsNull(Me![リンク先]) Then Exit Sub End If RefreshLinks (Trim(Me![リンク先])) DoCmd.Close DoCmd.OpenForm "メインメニュー" End Sub '******************************************************************** '指定されたデータベースへのリンクを更新します。成功した場合は、True を返す。 '******************************************************************** ' Public Function RefreshLinks(strFileName As String) As Boolean Dim dbs As Database Dim intCount As Integer Dim tdf As TableDef DoCmd.Hourglass True Set dbs = CurrentDb For intCount = 0 To dbs.TableDefs.Count - 1 Set tdf = dbs.TableDefs(intCount) If Len(tdf.Connect) > 0 Then tdf.Connect = ";DATABASE=" & strFileName Err = 0 On Error Resume Next tdf.RefreshLink If Err <> 0 Then DoCmd.Hourglass False RefreshLinks = False Exit Function End If End If Next intCount DoCmd.Hourglass False RefreshLinks = True Set tdf = Nothing Set dbs = Nothing End Function
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 この辺かな。 http://hp.vector.co.jp/authors/VA002273/access/ http://www2.moug.net/cgi-bin/technic.cgi?acvba+TI07010027 両方ともVBAなので、VBAが分からないとちょっと厳しいかも知れません。