انشئ موديول (ModRelinkTables) . وضع به الكود التالي :-
Option Compare Database
Option Explicit
Public Function RelinkTables()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strOldPath As String
Dim strNewPath As String
Dim fDialog As Office.FileDialog
Set db = CurrentDb
' افحص أول جدول مرتبط لمعرفة المسار القديم
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 Then
strOldPath = Mid(tdf.Connect, InStr(tdf.Connect, "DATABASE=") + 9)
Exit For
End If
Next
' لو الملف مش موجود
If Dir(strOldPath) = "" Then
MsgBox "الملف غير موجود، اختر مكانه الجديد."
' افتح مربع اختيار ملف
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.Title = "اختر ملف قاعدة البيانات الجديدة"
.AllowMultiSelect = False
If .Show = -1 Then
strNewPath = .SelectedItems(1)
Else
MsgBox "لم يتم اختيار ملف."
Exit Function
End If
End With
' حدث روابط الجداول
For Each tdf In db.TableDefs
If Len(tdf.Connect) > 0 Then
tdf.Connect = ";DATABASE=" & strNewPath
tdf.RefreshLink
End If
Next
MsgBox "تم تحديث الروابط بنجاح."
End If
End Function
المكتبات المطلوبة:
Microsoft DAO 3.6 Object Library أو Microsoft Office xx.0 Access Database Engine Object Library (لتعريف DAO.Database و DAO.TableDef)
Microsoft Office xx.0 Object Library (لتعريف Office.FileDialog)
Microsoft Access xx.0 Object Library (مفعّل تلقائياً)
ملاحظات:
استخدم Option Explicit عشان يجبرك على تعريف كل المتغيرات، وده بيمنع أخطاء وقت التشغيل.
الكود بيستخدم DAO و Office بشكل صريح، فلو المكتبات مش مفعّلة هتظهر لك رسالة خطأ واضحة بدل ما يشتغل بشكل غير متوقع.
تقدر تستدعي الدالة RelinkTables في حدث On Load للنموذج الرئيسي أو في ماكرو AutoExec.