كيفية إعادة ربط الجداول ذات النهاية الخلفية مع عنصر تحكم الحوار الشائعة في Access 2000

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية209862
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
للحصول على إصدار Microsoft Access 97 من هذه المقالة، راجع 181076.
متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل و مهارات متعددة المستخدمين.

يتم تطبيق هذا المقال فقط على قاعدة بيانات Microsoft Access (.mdb).

الموجز
يوضح هذا المقال كيفية استخدام عنصر التحكم الحوار العامة تحديث الجداول المرتبطة في قاعدة البيانات. يتوفر عنصر تحكم الحوار العامة باستخدام Microsoft Office 2000 المطور Edition الأدوات. قد تكون موجودة الجداول المرتبطة الآن في واحد أو العديد من قواعد البيانات ذات النهاية الخلفية.

للحصول على مثال أسلوب آخر لإعادة ربط الجداول التي تستخدم دالات (API) واجهة برمجة التطبيق Microsoft Windows, تشير إلى "حلول المطور" نموذج البرنامج (Solutions9.mdb.) للحصول على Solutions9.mdb ، انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
248674ACC2000: حلول المطور نماذج قواعد البيانات المتوفرة على الشبكة المطور Microsoft (MSDN) و Orders
فتح قاعدة بيانات Solutions9.mdb ، حدد استخدام قواعد بيانات متعددة في المربع تحديد "فئة أمثلة" ثم انقر فوق ارتباط الجداول عند بدء التشغيل في المربع تحديد مثال.
معلومات أخرى
تقدم Microsoft الأمثلة البرمجية فقط دون أي ضمان التعبير عن أو ضمنية. هذا يتضمن ولكن لم يقتصر على الضمانات الضمنية الخاصة بالتجارة أو الملاءمة لغرض معين. تفترض هذه المقالة تكون مألوفة مع لغة البرمجة التي يتم شرحها مع الأدوات التي يتم استخدامها لإنشاء لتصحيح الإجراءات. يمكن لمهندسي الدعم لدى Microsoft شرح وظيفة إجراء محدد ولكن لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة. يحتوي برنامج يستخدم تقسيم تصميم قاعدة البيانات الخاصة به الجداول في قاعدة بيانات واحدة في موقع شبكة مشترك (قاعدة بيانات النهاية الخلفية) وكافة به استعلامات النماذج ، تقارير, وحدات الماكرو و الوحدات النمطية في قاعدة بيانات أخرى على كل كمبيوتر عميل (قاعدة بيانات النهاية الأمامية). تربط كافة الجداول الخاصة به قاعدة بيانات النهاية الأمامية إلى قاعدة البيانات ذات النهاية الخلفية. إذا تم نقل قاعدة البيانات ذات النهاية الخلفية حدوث أخطاء في البرنامج. يمكنك تمكين برنامج الكشف عن أن ملف قاعدة البيانات ذات النهاية الخلفية مفقود من موقعه المتوقعة ومن ثم مطالبة المستخدم الموقع الجديد.

يظهر المثال التالي كيفية إعادة ربط بيانات الجدول في البرنامج. يستخدم هذا الأسلوب نموذج يتمكن مستخدم من فتح لإعادة ربط الجداول ذات النهاية الخلفية و نموذج اختياري آخر يمكن التحقق تلقائياً من الارتباط الخلفية عند فتح قاعدة البيانات.

تفترض هذه المقالة وجود عنصر التحكم Microsoft الحوار العامة التي تتوفر باستخدام Microsoft Office 2000 المطور Edition الأدوات. إذا لم يكن لديك عنصر التحكم هذا تجاوز دالة Browse() في المثال.

ملاحظة: إذا استخدم عنصر التحكم الحوار العامة كنت تخطط لتوزيع برنامج قاعدة البيانات يجب عليك استخدام "حزمة" و "معالج النشر لتضمين" التحكم الحوار العامة "DLL الدعم مع ملفات الإعداد Comdlg32.ocx والملفات. لمزيد من المعلومات حول استخدام "حزمة" و "معالج النشر راجع المقالات الواردة في قسم"المراجع "من هذه المقالة.

أسلوب إعادة ربط جداول قاعدة بيانات النهاية الخلفية

تحذير: إذا اتبع الخطوات الموجودة في هذا المثال, يمكنك تعديل نموذج قاعدة البيانات Northwind.mdb. قد ترغب في نسخة احتياطية من ملف Northwind.mdb ثم اتبع الخطوات التالية على نسخة من قاعدة البيانات.

  1. إنشاء ملف قاعدة بيانات Access فارغ جديد ثم اسم FrontEnd.mdb.
  2. من القائمة ملف، أشر إلى إحضار بيانات خارجية ، ثم انقر فوق ربط جداول.
  3. استعرض لتحديد نموذج قاعدة البيانات Northwind.mdb ثم انقر فوق ارتباط. في مربع الحوار ربط جداول انقر فوق تحديد الكل ثم انقر فوق موافق.
  4. إنشاء نموذج جديد التالية لا تعتمد على أي جدول أو استعلام في طريقة العرض "تصميم":
    النموذج: frmNewDataFile

    مربع النص:
    الاسم: txtFileName
    عرض: 3 "
    عنصر التحكم الحوار الشائعة:
    الاسم: xDialog
    زر الأمر:
    الاسم: cmdBrowse
    التسمية التوضيحية: استعراض...
    عند النقر: =Browse()
    زر الأمر:
    الاسم: cmdLinkNew
    التسمية التوضيحية: تحديث الارتباطات
    عند النقر: =Processtables()
    زر الأمر:
    الاسم: cmdCancel
    التسمية التوضيحية: إلغاء
    عند_النقر: [إجراء حدث]
    إلغاء: نعم
  5. في القائمة عرض، انقر فوق الرمز.
  6. اكتب أو الصق الإجراء التالي:
    Private Sub cmdCancel_Click()   On Error GoTo Err_cmdCancel_Click    MsgBox "Link to new back-end cancelled", vbExclamation, "Cancel Refresh Link"   DoCmd.Close acForm, Me.NameExit_cmdCancel_Click:   Exit SubErr_cmdCancel_Click:   MsgBox Err.Description   Resume Exit_cmdCancel_ClickEnd Sub					
  7. في القائمة "تصحيح" ، انقر فوق ترجمة FrontEnd.
  8. حفظ النموذج frmNewDataFile وإغلاقه.
  9. في الإطار "قاعدة بيانات" ، انقر فوق وحدات نمطية ثم انقر فوق جديد.
  10. من القائمة أدوات ، انقر "مراجع" ، حدد مكتبة كائنات Microsoft DAO 3.6 إذا لم تكن محددة بالفعل ثم ثم انقر فوق موافق.
  11. اكتب أو الصق التعليمة البرمجية التالية:
    Dim UnProcessed As New Collection       Public Function Browse()    ' Prompts user for back-end database file name.    On Error GoTo Err_Browse        Dim strFilename As String    Dim oDialog As Object    Set oDialog = [Forms]![frmNewDatafile]!xDialog.Object        With oDialog                    ' Ask for new file location.        .DialogTitle = "Please Select New Data File"        .Filter = "Access Database(*.mdb;*.mda;*.mde;*.mdw)|" & _        "*.mdb; *.mda; *.mde; *.mdw|All(*.*)|*.*"        .FilterIndex = 1        .ShowOpen        If Len(.FileName) > 0 Then  ' user responded, put selection into text box on form.           [Forms]![frmNewDatafile]![txtFileName] = .FileName        End If    End WithExit_Browse:    Exit FunctionErr_Browse:    MsgBox Err.Description    Resume Exit_BrowseEnd FunctionPublic Sub AppendTables()    Dim db As DAO.Database, x As Variant    Dim strTest As String    ' Add names of all table with invalid links to the Unprocessed Collection.    Set db = CurrentDb    ClearAll    For Each x In db.TableDefs        If Len(x.Connect) > 1 And Len(Dir(Mid(x.Connect, 11))) = 0 Then        ' connect string exists, but file does not             UnProcessed.Add Item:=x.Name, Key:=x.Name        End If    NextEnd SubPublic Function ProcessTables()    Dim strTest As String    On Error GoTo Err_BeginLink        ' Call procedure to add all tables with broken links into a collection.    AppendTables        ' Test for existence of file name\directory selected in Common Dialog Control.    strTest = Dir([Forms]![frmNewDatafile]![txtFileName])        On Error GoTo Err_BeginLink    If Len(strTest) = 0 Then   ' File not found.        MsgBox "File not found. Please try again.", vbExclamation, "Link to new data file"        Exit Function    End If        ' Begin relinking tables.    Relinktables (strTest)    ' Check to see if all tables have been relinked.    CheckifComplete        DoCmd.Echo True, "Done"    If UnProcessed.Count < 1 Then         MsgBox "Linking to new back-end data file was successful."    Else         MsgBox "Not All back-end tables were successfully relinked."    End If    DoCmd.Close acForm, [Forms]![frmNewDatafile].Name    Exit_BeginLink:    DoCmd.Echo True    Exit Function    Err_BeginLink:    Debug.Print Err.Number    If Err.Number = 457 Then        ClearAll        Resume Next    End If    MsgBox Err.Number & ": " & Err.Description    Resume Exit_BeginLinkEnd FunctionPublic Sub ClearAll()    Dim x    ' Clear any and all names from the Unprocessed Collection.    For Each x In UnProcessed       UnProcessed.Remove (x)    NextEnd SubPublic Function Relinktables(strFilename As String)    Dim dbbackend As DAO.Database, dblocal As DAO.Database, ws As Workspace, x, y    Dim tdlocal As DAO.TableDef        On Error GoTo Err_Relink        Set dbbackend = DBEngine(0).OpenDatabase(strFilename)    Set dblocal = CurrentDb        ' If the local linked table name is found in the back-end database    ' we're looking at, Recreate & Refresh its connect string, and then    ' remove its name from the Unprocessed collection.     For Each x In UnProcessed        If Len(dblocal.TableDefs(x).Connect) > 0 Then            For Each y In dbbackend.TableDefs                If y.Name = x Then                    Set tdlocal = dblocal.TableDefs(x)                    tdlocal.Connect = ";DATABASE=" & _                    Trim([Forms]![frmNewDatafile]![txtFileName])                    tdlocal.RefreshLink                    UnProcessed.Remove (x)                End If            Next        End If    NextExit_Relink:    Exit FunctionErr_Relink:    MsgBox Err.Number & ": " & Err.Description    Resume Exit_RelinkEnd FunctionPublic Sub CheckifComplete()    Dim strTest As String, y As String, notfound As String, x    On Error GoTo Err_BeginLink        ' If there are any names left in the unprocessed collection,    ' then continue.    If UnProcessed.Count > 0 Then        For Each x In UnProcessed            notfound = notfound & x & Chr(13)        Next        ' List the tables that have not yet been relinked.        y = MsgBox("The following tables were not found in " & _        Chr(13) & Chr(13) & [Forms]![frmNewDatafile]!txtFileName _        & ":" & Chr(13) & Chr(13) & notfound & Chr(13) & _        "Select another database that contains the additional tables?", _        vbQuestion + vbYesNo, "Tables not found")                If y = vbNo Then            Exit Sub        End If                ' Bring the Common Dialog Control back up.        Browse        strTest = Dir([Forms]![frmNewDatafile]![txtFileName])        If Len(strTest) = 0 Then   ' File not found.            MsgBox "File not found. Please try again.", vbExclamation, _            "Link to new data file"            Exit Sub       End If       Debug.Print "Break"       Relinktables (strTest)    Else       Exit Sub    End If        CheckifComplete    Exit_BeginLink:    DoCmd.Echo True   ' Just in case of error jump.    DoCmd.Hourglass False    Exit SubErr_BeginLink:    Debug.Print Err.Number    If Err.Number = 457 Then        ClearAll        Resume Next    End If    MsgBox Err.Number & ": " & Err.Description    Resume Exit_BeginLinkEnd Sub					
  12. في القائمة "تصحيح" ، انقر فوق ترجمة FrontEnd.
  13. حفظ الوحدة النمطية كـ RelinkCode ثم قم بإغلاق عليه.
  14. تسمية نموذج قاعدة البيانات Northwind.mdb أو نقله إلى مجلد آخر على القرص الثابت الخاص بك بحيث الجداول المرتبطة في FrontEnd.mdb ستحتاج إلى تحديث.
  15. افتح نموذج frmNewDataFile ثم انقر فوق الزر استعراض.
  16. في مربع الحوار الرجاء تحديد ملف بيانات جديد ، حدد موقع Northwind.mdb في مجلده جديد فيه ثم انقر فوق فتح.

    لاحظ أن المسار واسم الملف لقاعدة بيانات يظهر في مربع النص على النموذج الخاص بك.
  17. انقر فوق الزر تحديث الارتباطات في النموذج.

    لاحظ ظهور الرسالة التالية عند الانتهاء من الإجراء:
    لربط ملف البيانات ذات النهاية الخلفية الجديدة بنجاح.

إنشاء نموذج بدء تشغيل فحص جداول مرتبطة

التحقق من الارتباطات إلى الجداول تلقائياً كل مرة تقوم فيها بفتح قاعدة البيانات FrontEnd.mdb ، يمكنك إنشاء نموذج مخفي لهذا الغرض باتباع الخطوات التالية:
  1. إنشاء نموذج جديد لا يعتمد على أي جدول أو استعلام في تصميم طريقة العرض.
  2. في القائمة عرض، انقر فوق الرمز.
  3. اكتب الإجراء التالي على التشغيل عند فتح النموذج:
    Private Sub Form_Open(Cancel As Integer)      ' Tests a linked table for valid back-end.      On Error GoTo Err_Form_Open      Dim strTest As String, db As DAO.Database      Dim td As DAO.TableDef      Set db = CurrentDb      For Each td In db.TableDefs         If Len(td.Connect) > 0 Then   ' Is a linked table.            On Error Resume Next   ' Turn off error trap.            strTest = Dir(Mid(td.Connect, 11))   ' Check file name.            On Error GoTo Err_Form_Open   ' Turn on error trap.            If Len(strTest) = 0 Then   ' No matching file.               If MsgBox("Couldn't find the back-end file " & _                  Mid(td.Connect, 11) & ". Please choose new data file.", _                  vbExclamation + vbOKCancel + vbDefaultButton1, _                  "Can't find backend data file.") = vbOK Then                     DoCmd.OpenForm "frmNewDataFile"   ' Open prompt form.                     DoCmd.Close acForm, Me.Name                     Exit Sub                          ' to refresh links               Else                  MsgBox "The linked tables can't find their source. " & _                  "Please log onto network and restart the application."               End If            End If         End If      Next   ' Loop to next tabledef.      DoCmd.Close acForm, Me.NameExit_Form_Open:      Exit SubErr_Form_Open:      MsgBox Err.Number & ": " & Error.Description      Resume Exit_Form_Open      End Sub					
  4. في القائمة "تصحيح" ، انقر فوق ترجمة FrontEnd.
  5. احفظ النموذج frmCheckLink ثم قم بإغلاق عليه.
  6. لتعيين frmCheckLink كنموذج بدء التشغيل على أدوات القائمة انقر فوق بدء التشغيل ، حدد frmCheckLink في القائمة عرض نموذج/صفحة ثم انقر فوق موافق.
  7. لجعل frmCheckLink نموذج مخفي انقر بزر الماوس الأيمن فوق frmCheckLink في الإطار "قاعدة بيانات" ، انقر فوق خصائص على القائمة المختصرة, انقر لتحديد خانة الاختيار مخفية في مربع الحوار خصائص frmCheckLink ثم ثم انقر فوق موافق.
  8. نقل نموذج قاعدة البيانات Northwind.mdb إلى مجلد آخر على القرص الثابت الخاص بك بحيث الجداول المرتبطة في FrontEnd.mdb ستحتاج إلى تحديث.
  9. أغلق الأخرى ثم أعد فتح FrontEnd.mdb.

    لاحظ ظهور رسالة الخطأ التالية
    لا يمكن العثور على ملف الخلفية database file. الرجاء اختيار ملف بيانات جديد.
    حيث database file هو اسم ومسار ملف قاعدة بيانات النهاية الخلفية.

    إذا قمت بالنقر فوق "موافق" ، يفتح لك حدد قاعدة بيانات ذات النهاية الخلفية جديدة النموذج frmNewDataFile ثم يقوم بتحديث الارتباطات الجدول. إذا نقرت فوق "إلغاء الأمر" ، تظهر رسالة الخطأ التالية:
    لا يمكن العثور على الجداول المرتبطة مصدرها. الرجاء تسجيل الدخول إلى شبكة الاتصال ثم إعادة تشغيل البرنامج.
مراجع
للحصول على معلومات إضافية حول تخصيص المثال للحصول على تحديث الجداول المرتبطة في النموذج "حلول المطور" البرنامج (Solutions9.mdb) ، انقر فوق رقم المقالة أدناه لعرضها في "قاعدة المعارف لـ Microsoft:
154397ADT/ODE كيفية تعديل وحدة نمطية RefreshTableLinks في Solutions.mdb
للحصول على معلومات إضافية حول "حزمة" و "معالج النشر" ، انقر فوق رقمي المقالتين التاليتين لعرضهما في "قاعدة المعارف لـ Microsoft:
240956MOD2000: حزمة ومعالج النشر الآن يستخدم في إنشاء تطبيق للتوزيع
236143MOD2000: كيفية بدء "معالج النشر" و "حزمة
تحديث ارتباط إعادة الاتصال reattach ربطها inf إرفاق الاتصال ODE ADT

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 209862 - آخر مراجعة: 12/05/2015 11:13:29 - المراجعة: 3.0

Microsoft Access 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbprogramming kberrmsg kbhowto kbinfo KB209862 KbMtar
تعليقات