تنبيه ADO و ADO MD قد لم يتم اختبارها في بيئة Microsoft.NET Framework. يمكن أن يسبب المشاكل المتقطعة، خاصة في التطبيقات المستندة إلى خدمة أو في تطبيقات ذات مؤشرات الترابط المتعددة. يمكن استخدام الأساليب الموضحة في هذه المقالة فقط كإجراء مؤقت أثناء الترحيل إلى ADO.NET. يجب استخدام هذه التقنيات فقط بعد أدرتم اختبار كامل للتأكد من عدم وجود أية مشاكل التوافق. أية مشكلات ناتجة عن استخدام ADO أو ADO MD بهذه الطريقة غير معتمد. لمزيد من المعلومات، راجع المقالة التالية في "قاعدة المعارف ل Microsoft":
840667 تتلقى أخطاء غير متوقعة عند استخدام ADO و ADO MD في تطبيق.NET Framework
الأعراض
اطلع على السيناريو التالي. على جهاز كمبيوتر يقوم بتشغيل Windows 7 Service Pack 1 (SP1) أو Windows Server 2008 R2 SP 1 أو أنه قد KB9823246 تثبيت إعادة ترجمة تطبيق كائنات بيانات Microsoft ActiveX (ADO) باستخدام أحد التطبيقات التالية:
-
Microsoft Visual c + +
-
Microsoft Visual Basic for Applications (VBA)
-
Microsoft Visual Basic 6
-
تطبيقات Microsoft.NET
في هذا السيناريو، تجد أن يتم تشغيل التطبيق على أنظمة التشغيل ذات المستوى الأدنى. على سبيل المثال، فإنه لا يعمل على إصدار Windows 7 على نظام التشغيل Windows Vista وعلى آخر إصدارات سابقة من Windows. اعتماداً على التطبيق الخاص بك، تتلقى أيضا رسالة خطأ مشابهة لإحدى الرسائل التالية. (قد تظهر رسائل خطأ أخرى.)
رسالة الخطأ 1REGDB_E_CLASSNOTREG (0x80040154)
رسالة الخطأ 2
E_POINTER (0x80004003)
رسالة الخطأ الثالثة
E_NOINTERFACE (0x80004002)
رسالة الخطأ 4
غير قادر على تحويل COM كائن من النوع 'System.__ComObject' إلى نوع واجهة ' ADODB. اتصال '. فشلت هذه العملية لأن فشل استدعاء QueryInterface على مكون COM للواجهة ذات IID '{00001550-0000-0010-8000-00AA006D2EA4}' بسبب الخطأ التالي: بلا واجهة مثل اعتماد (استثناء من HRESULT: 0x80004002 (E_NOINTERFACE)). "
يتطابق مقطع التعليمات البرمجية Visual c + + التالية هذه المشكلة.
#import " msado15.dll" no_namespace rename("EOF","EndOfFile")
int main() { CoInitialize(NULL); _ConnectionPtr pConnection = NULL; HRESULT hr = pConnection.CreateInstance(__uuidof(Connection)); //hr gets E_NOINTERFACE here }
يتطابق التالي Visual Basic للتطبيقات مقطع التعليمات البرمجية هذه المشكلة.
Private Sub Form_Load() Dim Conn As New ADODB.Connection ‘Runtime error here: Class does not support Automation or does not support expected interface
End Sub
خطأ VBA: خطأ وقت التشغيل '430': فئة لا تعتمد الأتمتة أو لا تعتمد الواجهة المتوقعة
ملاحظة: لم يعد يعتمد تجميع التوافق الأساسي ل ADO Microsoft ولم يعد يدعم Visual Basic 6. لمزيد من المعلومات حول Visual Basic 6 المحسنة، قم بزيارة صفحة ويب MSDN التالي:تدعم الجملة ل Visual Basic 6.0 في نظام التشغيل Windows Vista، Windows Server 2008 و Windows 7لمزيد من المعلومات حول تجميع التوافق الأساسي ل ADO المحسنة، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
318559 استخدام تجميع التوافق الأساسي ل ADO (ADODB) في Visual Studio.NET
السبب
تحدث هذه المشكلة لأنه تم تغيير بعض الواجهات ADO في ويندوز 7 SP1 المراد إقرانها مع معرفات مثيل جديد (IIDs). تم تعيين واجهات IID أقدم اللاحقة ما يلي:
_Deprecatedعلى سبيل المثال، تم تحديث _Connection واجهة كما يلي:
-
في Windows 7 والإصدارات السابقة من Windows، يتم _Connection IID 00000550-0000-0010-8000-00AA006D2EA4.
-
في Windows 7 SP1، _Connection IID 00001550-0000-0010-8000-00AA006D2EA4، و (iid) ل _Connection_Deprecated 00000550-0000-0010-8000-00AA006D2EA4.
إذا كان التطبيق يستخدم الربط المبكر إلى _Connection، يتم تخزين IID جديد في التطبيق الثنائية أثناء التحويل البرمجي. تسبب خطأ عند تشغيل التطبيق على نظام التشغيل ذات المستوى الأدنى للديوان غير موجود.
بعض واجهات برمجة التطبيقات ADO تعتمد على النظام الأساسي في ADO 2.7 والإصدارات الأحدث. في إصدارات 64 بت من Windows، معالجة واجهات برمجة التطبيقات ADO هذه الوسائط باستخدام نوع بيانات 64 بت (مثل نوع بيانات LONGLONG ). ومع ذلك، لا يزال استخدام التطبيقات التي تستخدم واجهات برمجة التطبيقات هذه نوع بيانات طويل . لذلك، تتلقى رسالة خطأ "لا يتطابق نوع" عند محاولة تشغيل الماكرو.الحل
لحل هذه المشكلة، تثبيت أحد التحديثات الموضحة في المقالة التالية في "قاعدة المعارف ل Microsoft":
2640696 لا يعمل التطبيق المستندة إلى ADO الذي يتم تحويله برمجياً في ويندوز 7 حزمة الخدمة SP1 أو Windows Server 2008 R2 SP1 في الإصدارات السابقة من Windows
مزيد من المعلومات
حل أفضل للتغييرات Windows 7 SP1 ADO GUID