私のユーザーは、フロントエンド (DB.accdb) とバックエンド (DB_be.accdb) に分割された Access データベースを使用しています。ときどきファイルを移動する必要があるため、起動時にテーブルを再リンクする関数を作成しました。
さて、どういうわけか彼らはファイルを壊すことに成功しました。テーブルに対して RefreshLink 関数が呼び出されると、常に実行時エラーが発生します (実際には別のエラーです)。
たとえば、エラー 3022:
インデックス、主キー、またはリレーションシップに重複する値が作成されるため、テーブルに対して要求した変更は成功しませんでした。重複データを含むフィールドのデータを変更するか、インデックスを削除するか、インデックスを再定義して重複エントリを許可し、再試行してください。
フロントエンドを排他モードで開き、テーブルを削除して手動で再リンクしました。ただし、それらの名前には 1 が追加されます: someTable
--> someTable1
. テーブルが既に存在しているようですか?多分彼らはまだシステムテーブルにいますか?再リンクすると、リンクされたテーブルの名前がそこに挿入されるため、名前が重複するテーブルがいくつかあることは明らかです。
接続マネージャーを開くと、実際に、追加したばかりの新しいリンクの中に古い間違ったリンクがリストされていました。
- 古いリンクを更新できません - 「重複した値」など。
- 新しいリンクを更新することはできますが、もちろんテーブルの名前を変更する (1 を削除する) ことはできません。これらの名前のテーブルが既に存在するためです。
- 古いテーブルもサイドバーに表示されないので削除できません! 「システムオブジェクトの表示」などをオンにしても表示されません。
- 接続マネージャー ボタンがグレー表示されているため、新しいリンクを削除してから古いリンクを更新することはできません。おそらくAccessはテーブルがないと考えています。
そして、データベースを圧縮して修復しようとすると、古いリンクが再び使用されます...
以前のリンクの痕跡をすべて完全に削除するにはどうすればよいですか?