عندما تكون ملفات اكسس بالإمتداد mde أو accde فهذا يعني أنه قد تم تشفيرها وفقاً للبيئة التي تم تشفيرها فيها بالتالي إذا تم تشفيرها في بيئة 32 بت فلن تعمل إلا في بيئة 32 بت ونفس الشيئ لـ 64 بت .
هذا يعتمد على نقطة مهمة هل التطبيق وهو بالإمتداد mdb أو accdb يعمل بدون مشاكل في كلا النواتين أم لا؟
فإذا كان يعمل بدون مشاكل فلن يكون هناك أي اكواد بحاجة للتعديل
أما إذا كان يعمل في 32 بت ولم يعمل في 64 بت فغالباً ستكون المشكلة في دوال API وحل هذه المشكلة بسيط جدا
إفتح محرر الأكواد ومن قائمة Debug --> Compile YourDatabaseName (طبعا سيظهر إسم التطبيق مكان الكلمة YourDatabaseName) وسيتوقف المؤشر عند أول دالة أو إجراء (وغالباً ستبدأ بالكلمة المفتاحية Declare وأحيانا قد تكون هذه الكلمة مسبوقة بكلمة Private أو Public) وسأوضح لك بمثال واقعي
هذا المثال يحتوي على دالتين وإجراء API ستعمل في 32 بت فقط ولن تعمل في 64 بت
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long
Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
قمت بنسخها وذهبت لأداة الأخ موسى وقمت بالخطوات الموضحة بالأصفر
تم تحديد خيار (توافق 32/64) ولصقت الكود الأصلي في الجزء الأيمن ثم النقر على زر (تشغيل المعالج) لتم تحويل الكود إلى هذا الشكل
#If VBA7 Then
Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Declare PtrSafe Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As LongPtr, ByVal lpsz As String, ByVal lpFontEnumProc As LongPtr, ByVal lParam As LongPtr) As Long
Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As LongPtr) As LongPtr
#Else
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long
Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
#End If
نقوم بإستبدال الثلاثة أسطر الأصلية بهذه النتيجة وبهذا نكون قد حصلنا على كود متوافق مع النواتين
قم بتكرار العملية إلى أن يصبح خيار Compile YourDatabaseName غير مفعل كما بالصورة
وعندما تجد أن كلمة Compile مع إسم التطبيق أصبح كما بالصورة يكون تطبيقك أصبح جاهز للعمل على النواتين بدون أي مشاكل
عندما أقول يعمل على النواتين أقصد وهو بالإمتداد mdb أو accdb أما إذا كان بالإمتداد mde أو accde فإن البيئة التي سيعمل فيها هي نفس البيئة التي تم تشفيره فيها
أرجو أن يكون الشرح واضح وإذا كان هناك أي إستفسار آو توضيح فتفضل وأسأل
تحياتي