استخراج تعريف الاستعلام من قاعدة بيانات Jet عبر ADO
-
30-09-2019 - |
سؤال
لدي برنامج في 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.