استخراج تعريف الاستعلام من قاعدة بيانات Jet عبر ADO

StackOverflow https://stackoverflow.com/questions/3929483

سؤال

لدي برنامج في Delphi 2010 يستخدم قاعدة بيانات JET (MDB) عبر ADO. أود أن أكون قادرًا على استخراج تعريفات بعض الاستعلامات في قاعدة البيانات وعرضها على المستخدم. هل هذا ممكن إما عبر SQL ، أو بعض واجهة ADO ، أو عن طريق استجواب قاعدة البيانات نفسها (لا يبدو أن لدي حقوق في MsysObjects).

هل كانت مفيدة؟

المحلول

تتوفر بعض هذه المعلومات عبر مكالمات Adox. هناك نظرة عامة على واجهة برمجة التطبيقات مع بعض الأمثلة (للأسف ليس في دلفي) على موقع MSDN.

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

ستحتاج إلى الوصول إلى المحدد عرض الكائن, ، ومن هناك احصل على خاصية القيادة.

نصائح أخرى

عبر داو ، إنه أمر سهل للغاية. يمكنك فقط استخراج خاصية SQL لكل QueryDef. في داو من داخل الوصول ، سيكون ذلك:

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

  Set db = DBEngine.OpenDatabase("[path/name of database]")
  For Each qdf In db
    Debug.Print qdf.SQL
  Next qdf
  Set qdf = Nothing
  db.Close
  Set db = Nothing

لا أعرف كيفية ترجمة ذلك ، لكنني أعتقد أنها أبسط طريقة بمجرد أن تشعر بالراحة باستخدام DAO بدلاً من Adox.

لا أستخدم ADO على الإطلاق ، لكنني أعتقد أنه يحتوي على مجموعة من المشاهدات وأن خاصية SQL ستعمل على استفسارات محددة. ومع ذلك ، إذا كنت مهتمًا بالحصول على SQL لجميع querydefs المحفوظة ، ستحتاج أيضًا إلى إلقاء نظرة على استعلامات DML ، لذلك يجب عليك إلقاء نظرة على الإجراءات المخزنة. سأضطر إلى البحث عن بناء الجملة لذلك ، لكنني متأكد تمامًا من هذه الطريقة التي ستصل بها إلى المعلومات عبر ADO.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top