نصائح أخرى

وأنا لا أفهم ما نحاول القيام به. لماذا أنت باستخدام أحد السجلات DAO وADO واحد؟ هذا لا معنى له على الإطلاق. إذا قمت بحفظ الاستعلامات في الواجهة الأمامية الوصول، ثم حتى لو النهاية الخلفية الخاصة بك، مثلا، SQL Server مع الروابط الجدول ODBC، هو في الحقيقة ليس هناك فائدة على الإطلاق في استخدام ADO.

وليس هناك دليل على وجود حلقة في التعليمات البرمجية، لذلك ما لم يتم استدعاء التعليمات البرمجية الخاصة بك عن طريق حلقة، فإنه لا يبدو لي أن التفسير KB المادة سوف تطبق.

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

وهذا من شأنه أن يكون شيئا من هذا القبيل:

  Dim db As DAO.Database
  Dim qdf As DAO.QueryDef

  Set db = CurrentDB()

  For Each qdf in db.QueryDef
    [do whatever here]
  Next qdf

  Set qdf = Nothing
  Set db = Nothing

في هذا الرمز، كنت تستخدم MDB المفتوحة حاليا في واجهة المستخدم، ولكن لا يهم - أيهما قاعدة بيانات كنت فتح وحلقات من خلال أهدافه يجب ان يفتح مرة واحدة فقط، خارج الحلقة

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

  Public Sub ProcessQueries(db As DAO.Database)
    Dim qdf As DAO.QueryDef

    For Each qdf in db.QueryDef
      [do whatever here]
    Next qdf

    Set qdf = Nothing
  End Sub

وكنت أدعو أن هكذا:

  Dim db As DAO.Database

  Set db = CurrentDB()    
  Call ProcessQueries(db)    
  Set db = Nothing

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

scroll top