Microsoft Access 掲示板

バックエンドとのリンク2

8 コメント
views
4 フォロー

お世話になります。

基礎的なところに絞って質問しなおします。

データベースを分割した後、リンクステーションなどの共有フォルダに分割したバックエンドを移動させておき、
そのフルパスをもとに、フロントエンドに組み込まれたプログラムからリンクするもっとも一般的な方法を教えてください。

nokonoko
作成: 2021/05/17 (月) 16:15:30
通報 ...
1
りんご 2021/05/17 (月) 16:48:14 48103@0e907

下記サイトの回答コメントにあるのが、一般的な方法ではないでしょうか。

Access2013 リンクテーブルのパスワード設定について
リンク先のaccdbファイルにパスワードを新規設定又は変更を行った場合、リンク元のaccdbでパスワードを再設定する事は可能でしょうか? 例) データーベース2.accdbに データーベース1.accdb のTBL1をリンクテーブルとして作成(データベース1.accdbにはパスワード未設定) その後にリンク先であるデータベース1.accdbにパスワードを設定した場合、
microsoft

さらに、もっとも一般的な方法があれば、誰か補足をお願いします。

2
nokonoko 2021/05/17 (月) 17:30:00 653a6@54883

ご回答ありがとうございます。基本的なやり方は間違えていないようです。
差し支えなければ、Hatena様の最後のコードについて説明いただけないでしょうか。
複数のテーブルをこのif~nextでリンクできるのでしょうか

Private Sub Form_Open(Cancel As Integer)
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef

    Set dbs = CurrentDb
    For Each tdf In dbs.TableDefs

        If tdf.Connect Like "*データーベース1.accdb*" Then
            If tdf.Connect Like "*PWD=1234*" Then 
                Exit For
            Else
                tdf.Connect = _
                "MS Access;PWD=1234;DATABASE=C:\test\データベース1.accdb"
                tdf.RefreshLink
            End If
        End If
    Next tdf

    dbs.Close: Set dbs = Nothing

End Sub
3
りんご 2021/05/18 (火) 00:30:57 48103@0e907

Microsoft Access で Access データベースを手動で分割する方法
 上記記事を参考に、適当なAccessファイルを用意して、バックエンドデータベース「データベース1」、フロントエンドデータベース「データベース2」に分割しました。続けて、もう1つ余分にバックエンドデータベース「データベース3」を用意し、切り替える事ができるか試してみました。(場所は、デスクトップ。パスワードは、設定なし。)

Private Sub コマンド0_Click()
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    
    Set dbs = CurrentDb
    
    For Each tdf In dbs.TableDefs
      If tdf.Connect <> “” Then
         tdf.Connect = “MS Access; PWD=; DATABASE=C:¥Users¥…¥Desktop¥データベース3.accdb”
         tdf.RefreshLink
      End if
    Next tdf

    dbs.Close
    Set dbs = Nothing

 このFor〜Nextでデータベース1とデータベース3の切り替えはできました。

最後のコードは、データベースを閉じてメモリを解放すると、なっているようです。

4
りんご 2021/05/18 (火) 01:22:55 48103@0e907

 確認ですが、バックエンドにAccessファイルが3つ置いてあって、あるテーブルはデータベース1から、あるテーブルはデータベース2から、という状況では無いですよね?
 上記コードを試して、再リンクで解決できるのかなぁと思いました。
 時々、バックエンドが迷子になるという事でしたが、伝言ゲームの罠に嵌まっていませんか?みんなで使っているうちに、あるテーブルのデータがおかしくなって、別のエラーが発生している話だったりしませんか?

5
nokonoko 2021/05/18 (火) 10:44:21 653a6@54883

ご回答、およびご検証いただきありがとうございました。コードの内容はおいおい勉強します。

確認ですが、バックエンドにAccessファイルが3つ置いてあって、あるテーブルはデータベース1から、あるテーブルはデータベース2から、という状況では無いですよね?

はい。データの分割で、一つのファイルからバックエンドを分割をしたもので、データ(複数テーブル)が一つのバックエンドファイルにすべて入っています。

> 伝言ゲームの罠に嵌まっていませんか?みんなで使っているうちに、あるテーブルのデータがおかしくなって、別のエラーが発生している話だったりしませんか?

現地情報は詳細にはわかりません。(外国です)
ただし、"(フルパス)is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides."というエラーなので、本当に迷子なんだと思います。

6
りんご 2021/05/18 (火) 11:57:13 48103@0e907

Oh…, 本格的に迷子なんですね。
Aceessの問題なのか、リンクステーションの問題なのか、私には力及ばずでした。

7

エラー情報を翻訳すると

(フルパス)は有効なパスではありません。パス名のスペルが正しいこと、およびファイルが存在するサーバーに接続していることを確認してください。

ということなので、パスが間違っているか、共有フォルダーの権限の問題で接続できてないか、、、が原因なんでしょう。
Accessの問題ではなさそうです。

8
nokonoko 2021/05/18 (火) 14:44:28 653a6@54883

ご回答ありがとうございました。
アクセス以上にネットワーク関連の知識が足りず、事業所に迷惑をかけている状態なのですが、アクセス側はどうしようもないようですね。
ありがとうございました。