مشاكل نقل ملفات قواعد البيانات من جهاز الي اخر و طرق حلها

شريط الاخبار

مشاكل نقل ملفات قواعد البيانات من جهاز الي اخر و طرق حلها

مشاكل نقل ملفات قواعد البيانات من جهاز الي اخر و طرق حلها ,ايقاف الحفظ التلقائي في الاكسيس,اكسيس,دروس اكسيس,برنامج مفتوح المصدر,

مشاكل نقل ملفات قواعد البيانات من جهاز الي اخر و طرق حلها


نستعرض في هذا المقال مشاكل نقل ملفات قواعد البيانات من جهاز الي اخر و كيفيه التغلب علي هذه المشاكل بابسط الخطوات البرمجيه و تظهر هذه المشاكل ليس فقط في ملفات قواعد البيانات المصممه بالاكسيس فقط لكن تظهر في بعض انواع قواعد البياتات الاخري مثل قواعد البيانات المصممه بالاوركل و غيرها فهذه المشاكل ليست بالامر المعقد اذا فهمنا سبب هذه المشكله و طريقه الحل مستخدمين ابسط الطرق التي يمكن ان يقوم بها المستخدم النهائي مهما كانت خبره المستخدم النهائي بسيطه
في كثير من الاحوال و عند نقل ملفات الاكسيس من جهاز الي جهاز تتوقف هذه الملفات عن العمل و يظهر للمستخدم رسائل تحذريه من ان هناك مشكله برمجيه في الكود و مع ان الكود البرمجي سليم و تتوقف عن العمل و يمكن ان يرجع ذلك الي العديد من الاسباب من اهمها
اختلاف اعدادات اللغه و التاريخ
اختلاف في نواه الويندز بين النواه 32 و النواه 64
اختلاف اصدارات الاوفيس
عدم وجود بعض المكتبات البرمجيه

اختلاف اعدادات اللغه و التاريخ في جهاز مصمم قاعده البيانات عن اعدادات اللغه و التاريخ في جهاز الجديد و يمكن معالجتها بتعديل اعدادات اللغه و الوقت و المكان بحيث تطابق مع جهاز المبرمج و تثبيت حزمه دعم اللغه من اعدادات اللغه اذا لزم الامر
اختلاف في نواه الويندز بين النواه 32 و النواه 64 و يمكن معالجه هذه المشكله من قبل المبرمج باضفه سطر برمجي لمخاطه النواتين بدلا من مخاطه النواه واحده فقط

#If VBA7 Then

    ' ففي هذا الكود نقوم بفحص اذا كان محرر الاكود من النوع vba7   و في هذه الحاله تكون نسخه 64 و نقوم باستدعاء الداله Declare PtrSafe Function و المستخدمه للعمل مع هذه النواه

    Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" _

        Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Boolean

#Else

#If VBA6 Then

    ' اذا كان محرر الاكواد من النوع vba6  ففي هذه الحاله يقوم الكود باستدعاء الداله Declare Function 

    Private Declare Function GetOpenFileName Lib "comdlg32.dll" _

        Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long

#End If

#End If

ففي هذا الكود نقوم بفحص اذا كان محرر الاكود من النوع vba7   و في هذه الحاله تكون نسخه 64 و نقوم باستدعاء الداله Declare PtrSafe Function و المستخدمه للعمل مع هذه النواه اما اذا كان محرر الاكواد من النوع vba6  ففي هذه الحاله يقوم الكود باستدعاء الداله Declare Function  و بهذه الفكره البسيطه تجاونا مشكله اختلاف نواه الويندز

اختلاف اصدارات الاوفيس و يمكن معالجتها من خلال تثبيت برنامج access runtime لنفس لاصدار الاوفيس الموجود عند مصمم قاعده البيانات
عدم وجود بعض المكتبات البرمجيه نتيجه اختلاف نسخه الاوفيس او اي سبب اخر فبعض المكتبات يجب اضافتها بشكل يدوي الي قاعده البيانات و يمكن التغلب علي هذه المشكله من خلال ارفاق كل المكتبات البرمجيه المستخدمه مع ملف قاعده البيانات و تثبيتها برمجيا
و يمكن تنفيذ ذلك بالعديد منها استخدام ملفات سجل النظام او ارفاق ملفات المكتبات البرمجيه الا ان افضلها من وجهه نظري ارفاق ملفات المكتبات البرمجيه  و ما يميز هذه الطريقه انها في حاله عدم وجود الملف في الجهاز فسيوم الكود البرمجي باضافته من الملفات المرفقه  ويمكن اضافتها اما بشكل يدوي او بالكود مع بدايه عمل البرنامج
نستعرض مثال لاضافه المكتبه البرمجيه microsoft Office 14 Object Library
نحتاج الي ملف MSO.DLL الموجود ضمن ملفات system 32
مشكله هذه الطريقه ضروره تحديد ملفات المكتبات البرمجيه
نقوم بادرج modules  مديول جديد  

Option Compare Database

Sub addListReferences()

‘ قمنا بافتراض متغر لتخزين مسار قاعده البييانات و الذي سنقوم بتخزين المكتبات البرمجيه في نفس المسار

Dim SourceFile

‘هنا وضعنا مسار افتراضي لملفات المكتبات البرمجيه بجوار ملف قاعده البيانات

SourceFile = Application.CurrentProject.Path & "\MSO.DLL"


'في حاله وجود مشكله في الكود انتقل الي نقطه التصحيح

On Error GoTo CanNotAddWord

'لتنشيط المكتبات برمجيا

Application.VBE.ActiveVBProject.References.AddFromFile SourceFile

Exit Sub

'نقطه التحصيح البرمجي

CanNotAddWord:


‘للتاكد من وجود الملف المراد تنشيطه برمجيا داخل مسار قاعده البانات

‘ فاذا لم ياكد من ان هذا الملف هو الملف المطلوب  سيقوم الكود بارسال رساله تنبيهيه للمستخدم

If Right(SourceFile, 7) <> "MSO.DLL" Then

'رساله تنبيه في حاله عدم وجود الملف
MsgBox "MSO.DLL" & " " & "لا يمكن العثور علي الملف", vbCritical, "انتبه"

End If

End Sub

و نستطيع استدعاء هذا المديول مع نموذج بدا التشغيل فيقوم بتنشيط المكتبه البرمجيه مع بدايه التشغيل في حدث عند تحميل النموذج  و تفادي اي مشاكل

ليست هناك تعليقات