أبو آدم قام بنشر مارس 24, 2014 الكاتب قام بنشر مارس 24, 2014 شكرا لإطلالتك الطيبة أخي العزيز ، الامر على الجدول وقريبا ما جعلني اتمهل بالاستمرار كثرة الحالات ومحاولة لوضع الامور بقوالب عامة حتى لا ندخل في متاهات والله من وراء القصد وهو حسبي 1
أبو آدم قام بنشر مارس 24, 2014 الكاتب قام بنشر مارس 24, 2014 إخوتي الأعزاء حين تتشعب الامور تزداد الحاجات و تتراكم ، ولا بد من التعامل بهدوء وروية مع ما يلزم بتصميم وتصور لسدّ الثغرات حتى نصل لنتائج طيبة كنت فيما سبق أشرت الى كودات لربط كافة الجداول في BE ، حيث تم تضمين المسار ضمن الكود ، وبالتجربة والتطبيق وجدت أنه من الأصح و الاكثر منطقية و احترافاً ، ولكي يكون الامر أكثر مرونة عند التطبيق ، مع أهمية عدم العودة للكود عند الحاجة للربط لمسار جديد ، أن يتم الاستعانة بمربع حوار اختيار الملف ، وكان الامر بحاجة لبعض البحث و التروي ، حيث وجدتني اتعامل مع إصدارين من الأكسيس 2003 و 2007 ، و أضع هنا ما يلزم ويعمل مع الاصدارين ، حيث نقوم بإنشاء وحدة نمطية جديدة نسميها ModOpenfilename ونكتب خلفها : Option Compare Database Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Function LaunchCD(strform As Form) As String Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String OpenFile.lStructSize = Len(OpenFile) OpenFile.hwndOwner = strform.Hwnd sFilter = "Access Databases (*.mdb;*.accdb)" & Chr(0) & "*.mdb;*.accdb" & Chr(0) & _ "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) OpenFile.lpstrFilter = sFilter OpenFile.nFilterIndex = 1 OpenFile.lpstrFile = String(257, 0) OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1 OpenFile.lpstrFileTitle = OpenFile.lpstrFile OpenFile.nMaxFileTitle = OpenFile.nMaxFile OpenFile.lpstrInitialDir = "C:\" OpenFile.lpstrTitle = "Officena.net ... Find The location of Back End File" OpenFile.flags = 0 lReturn = GetOpenFileName(OpenFile) If lReturn = 0 Then MsgBox "A file was not selected!", vbInformation, _ "Select a file using the Common Dialog " Else LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1)) End If End Function ونستحدث في النموذج مربع نص لتلقي الملف الذي سيتم إختياره كمصدر BE للربط ونسميه Text1 أو أي اسم مناسب لنموذجنا ، ثم ننشيئ زر أمر لتشغيل مربع الحوار / فتح ملف ، ونضع خلفه الكود التالي : Me!Text1 = LaunchCD(Me) وبعد ظهور مربع الحوار / اختيار ملف ، وقيامنا باختيار الملف الهدف ، يحمل مربع النص مسار الملف .
أبو آدم قام بنشر مارس 24, 2014 الكاتب قام بنشر مارس 24, 2014 بالنتيجة ، وبتوفيق من الله ، فقد توصلت لحل مسائل الاخوة المطروحة جميعها ربط جميع الجدول مع BE واحد ربط جميع الجدول مع أكثر من BE ربط جداول مختارة من BE ربط جداول مختارة من أكثر من BE إلغاء الربط نهائياً وهناك نتجاوز مسألة الربط بين جزئي القاعدة أو أجزائها إلى تعقيدات إختلال الارتباط ومسألة Broken Back End ، حيث تختل أجزاء القاعدة وتتوقف عن العمل ويبدأ المستخدم بالتخبط نتيجة توقف قاعدة البيانات . جربت خلال اليومين المنصرمين مجموعة من السيناريوهات على موضفي الشركة لدي ، وكسرت الربط عن قاعدة البيانات ، سواء بتغيير إسم ملف أو مجلد ضمن المسار على الخادم / السيرفر ، واستجبت لنداءات الموظفين وحاولت ( كمسخدم ) إعادة ربط الجداول ، فكانت مهمة شاقة لأي مستخدم - مالم يكن جيد الإلمام بالبرمجة. ثم أعدت الأمور لنصابها ، وبدأت بمحاولة لحصر التصورات و الافكار و الاحتمالات ، فوجدتها كثيرة جداً ، وتحتاج لتركيز وبعض الحصر بأطرعامة ، لا بد أن يأخذها المبرمج بعين الإعتبار. ربما أكثرت من التنظير ، ولكن ما سردت واقع وليس محض تنظير .... وللحديث بقية ..... .............
أبو آدم قام بنشر مارس 24, 2014 الكاتب قام بنشر مارس 24, 2014 الأخ محمد ايمن أثار مسألة الجداول المرتبطة والتنبيه بان الجداول مرتبطة عند تنفيذ الربط بنفس القاعدة مرة أخرى ، وهذا يستلزم التأكد من الربط لكل ملف قبل تنفيذ أمر الربط مرة أخرى ، و أمور أخرى تكاثرت عند التطبيق ... الأخ الفاضل SSM أثار مسألة اختيار نسخة احتياطية معينة باعتبارها BE ، وهذا استلزم معي عمليات الغاء الربط والبدء بإرتباط جديد ، و أمور أخرى تكاثر عند التطبيق ... والأخ راعي الغنم أثار مسألة إعادة الربط بين FE و أكثر من BE ، وهذه فيها الكثير الكثير فحدث ولا حرج ... ولكن كما هو الأمر دوماً وبفضل من الله ، فكل شيئ متاح ، ما دمت خلفه ساعياً وله طالباً ، ولله الأمر من قبل ومن بعد ، فتحاً و تيسيراً و تفهيماً. توقفت عن الشرح و الإسهاب به بعد هذه المسائل الثلاثة ، فكل منها في مسار فوددت أن أجمعها في جهد واحد ( حسب تصوري ، وقدرتي ، وفهمي ) و الأفهام كثيرة لا يضير بعضها إختلافها عن البعض الآخر ، والتصورات لا تنتهي فعددها بعد الخلق و البشر ، ولا يعيب أحدها إختلافه عن الآخر ، فهذا علم لا مطلق فيه ولا حدود إلا بأمر الله. أعمل حالياً ، وأظنني انتهيت ، و أحتاج بعض التطبيق و التجربة حتى لا تكثر الثغرات من أخطائي ويصعب عليكم التعديل ، فإصبروا معي جزاكم الله خيراً ، فالمسعى مستمر إن قدر الله لنا وكان في العمر بقية . و للحديث بقية .... ........
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 إخوتي الفضلاء أرفق لكم طياً نسخة عن الأداة ( لإدارة الجداول المرتبطة ) ولنعتبرها الإصدار الأول وسادرج تباعاً مشاركات وملاحظات وصور لتوضيح تصوراتي للاستخدام ... بعد تجربة أربعة أيام ورحم الله من أهدى إلي عيوبي والله من وراء القصد وهو حسبي NA_AccessRelink.rar 2
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 في بداية التطبيق ، يتم تشغيل ماكرو AutoExec لتدرج إجراءات الفحص للجداول المرتبطة في أوله نموذج ترحيب وعرض لعدد السجلات المرتبطة التي تم العثور عليها ضمن قاعدة البيانات وذلك باستدعاء الوحدة النمطية ModCountLinks
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 حال إستكمال الفحص وعدم وجود جداول مكسور إرتباطها Brocken Back End تظهر لك الصفحة الرئيسية للأداة ( نموذج ) ، وأفضل عند التطبيق أن يتم إستبدالها بالصفحة الرئيسية للتطبيق ( من خلال الماكرو ). النموذج الحالي ، تتم فيه عمليات الربط و إلغاء الربط وإختيار ربط BE جديد للربط : يتم إستدعاء مربع الحوار / إختيار ملف من خلال الضغط على زر أمر Browser - استعراض ، حين يتم إختيار الملف الهدف BE ، يتم لصق المسار في مربع النص ، ثم يتم الضغط على زر أمر Link لتتم عملية الربط . ولغايات الربط مع BE أخرى يتم تكرار الخطوات السابقة.
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 لغايات حذف الارتباطات كاملة يتم الضغط على زر الامر Delet Link في كل خطوة يتم فيها إضافة أو حذف ارتباطات يتم إظهار عدد الجداول المرتبطة في عداد أسفل النموذج
أبا عمر قام بنشر مارس 25, 2014 قام بنشر مارس 25, 2014 ما شاء الله لا قوة إلا بالله جزاك الله خيرا وأحسن الله إليك ومن تحب ومن تخصهم بالدعاء
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 حياك الله ابا عمر على مرورك الطيب ودعائك بالخير
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 في حال عدم وجود مسار ملف لإجراء الربط معه تكون النتيجة هادئة غير مزعجة جرب إعادة إختيار مسار نفس الملف BE وإجراء الربط مرة أخرى ، هنا يتم رفض ربط الجداول واحداً تلو الآخر ، وهذا اجراء إحترازي منعاً لتكرار الربط بنفس BE . وهذه لك أخي محمد أيمن ( حسب ما فهمت منكم ). أما أخي SSM فيمكنك إجراء الربط من خلال هذا الروتين مع أي مسار لملف النسخ الاحتياطي و العمل عليه ضمن قاعدتك ، ثم إلغاء الربط و من ثم الربط مع نسخة إحتياطية أخرى ... وهكذا و الله أعلم
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 أما أخي راعي الغنم بعد الربط مع أي عدد تشاء من BE بشرط عدم وجود جداول متشابهة ، قم بإغلاق التطبيق ، وقبل إعادة تشغيله ، قم بتغيير مسار BE المتعددة جميعها . ملاحظة : تم إغلاق التطبيق حتى يسمح لك الجهاز بتغغير الاسم لأي مجلد أو ملف مرتبط . أعد تشغيل التطبيق ولاحظ النتيجة !!! ........
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 من خلال ماكرو بدء التشغيل ، يتم تفعيل الوحدة النمطية ModNatAccessRelinker واستدعاء محاور العمل بها ، حيث يتبين فقدان الربط مع الجداول ، و بالتالي يتم تحديد كل جزء BE على حدى ويطلب إعادة تحديد المسار له من خلال مربع حوار / إختيار ملف ، وبعد تحديد المسار الجديد يتم تلقائياً إعادة الربط لكل جدول بعد فحصه ، وتثبيت المسار الجديد. وهكذا حتى تنتهي جميع أجزاء BE المرتبطة بالقاعدة ، ومن المهم ملاحظة إسم الملف المستهدف بالبحث كل مرة منعا للخطأ و الخلط ، ويظهر الاسم في شريط أعلى مربع الحوار ، كما في الصور ........ ..................... وللحديث و التصورات و الملاحظات بقية ....
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 حين يكون الربط سليماً ولا خلل به و أردت تغيير المسار أو إختيار ملفات جديدة BE ، يمكننا إستخدام الزر New BE لإضافة إرتباطات جديدة ( التنقل بين النسخ الاحتياطية ) .... وللحديث بقية ...... ........
أبو آدم قام بنشر مارس 25, 2014 الكاتب قام بنشر مارس 25, 2014 ملاحظات هامة : هذه الأداة تدعم الارتباط مع ملفات الأكسيس فقط ويجب أن تكون هذه الوحدات النمطية و الماكرو و الكودات في ملف FE
ابو محمد2 قام بنشر مارس 25, 2014 قام بنشر مارس 25, 2014 السلام عليكم تبارك الرحمن زادكم الله علما اخونا العزيز ابو ادم المحترم ورحمكم ووالديكم وجعل الله علمكم صدقتا جاريه نعم المولى ونعم الموجيب ونشكرك على المجهود الرائع تقبل فائق الاحترام والتقدير
أبو آدم قام بنشر مارس 26, 2014 الكاتب قام بنشر مارس 26, 2014 شكرا لمرورك الطيب ودعائك وثنائك ، آملاً باستمرار التواصل
محمد ايمن قام بنشر أبريل 5, 2014 قام بنشر أبريل 5, 2014 اخي أبو آدم تحية طيبة بداية جزاك الله كل خير ووفقك و زادك علما و عملا جربت التطبيق على اوفيس 2007 و لكن لم يحدث اي شيئ لم يتم ارتباط اي جدول ابدا فما السبب ؟؟ فضلا و ليس امرا احببت ان نذكر بموضوع النسخ الاحتياطي و استعاد النسخة في حالة الجداول المرتبطة
أبو آدم قام بنشر أبريل 6, 2014 الكاتب قام بنشر أبريل 6, 2014 أخي محمد ايمن لم افهم الملاحظة ، بانك جربت ولم يتم الارتباط للجداول ، ماذا جربت ؟؟
محمد ايمن قام بنشر أبريل 6, 2014 قام بنشر أبريل 6, 2014 اخي ابو آدم تحية طيبة جربت المرفق الذي وضعته انت في المشاركة 30 ولم يتم اي ارتباط
أبو آدم قام بنشر أبريل 6, 2014 الكاتب قام بنشر أبريل 6, 2014 جربت التطبيق على اوفيس 2007 و لكن لم يحدث اي شيئ لم يتم ارتباط اي جدول ابدا فما السبب ؟؟ أخي الحبيب و أنا أسأل معك أيضاً فمنذ قرأت مشاركتك ، للآن قمت بتجربة التطبيق مرات عديدة ، وقمت بأخذ نسخة وأجريت عليها بعض التطبيقات الإضافية ، وجربت وجربت وكانت كل مرة تعمل كما أريد لها ، ولم يحصل معي أي خطأ أو إعتراض أو رفض إجراء ارتباط أو رفض إلغاء إرتباط . فأمسيت أسأل معك فما السبب ؟؟ أرجو أن تعيد المحالة وأشعرني ... سأحاول تصوير أداء التطبيق على 2003 و 2007 و تحميله شكرا
أبا عمر قام بنشر أبريل 6, 2014 قام بنشر أبريل 6, 2014 أستاذي الحبيب أبو آدم لي مداخلة بعد مشاركة الأخ الكريم محمد أيمن الأخيره قمت بتجربة القاعدة الآن على 2007 ولم أجد بها أي مشاكل وتعمل بصورة جيدة لكن لوحظ فقط عدم ارتباطها مع ملفات MDE لكن جاري التأكد منها .
محمد ايمن قام بنشر أبريل 6, 2014 قام بنشر أبريل 6, 2014 اخي ابو آدم تحية طيبة جربت الارتباط مع قاعدة بيانات 2003 و عملت الوحدة النمطية بشكل ممتاز جربت الارتباط مع قاعدة بيانات 2007 لم تعطي الوحدة النمطية اي خطأ ولكن في المقابل لم ترتبط باي جدول قمت بترقية كلا من قاعدة بيانات الجداول و الواجهة ووضعت نقطة ايقاف عند الوحدة النمطية ModLinkAll وبدأت التتبع لاحظت ان الكود يتوقف لان الوحدة النمطية تعيد الخطأ 0 الخطأ يمكن في السطر التالي الموجود في الوحدة النمطية ModLinkAll : Dim rs As Recordset قمت بتعديله الى Dim rs As DAO.Recordset والنتيجة تم الارتباط بنجاح و بدون اي مشاكل جزيل الشكر لكم جميعا
محمد ايمن قام بنشر أبريل 9, 2014 قام بنشر أبريل 9, 2014 اخي ابو آدم تحية طيبة واجهتني مشكلة وهي عند انشاء جدول جديد في قاعد بيانات الجداول و تشغيل قاعدة بيانات الواجهة تظهر رسالة خطأ بان اسم الجدول غير موجود كيف نستطيع تفادي هذه المشكلة ؟؟
أبو آدم قام بنشر أبريل 10, 2014 الكاتب قام بنشر أبريل 10, 2014 اخي ابو آدم تحية طيبة جربت الارتباط مع قاعدة بيانات 2003 و عملت الوحدة النمطية بشكل ممتاز جربت الارتباط مع قاعدة بيانات 2007 لم تعطي الوحدة النمطية اي خطأ ولكن في المقابل لم ترتبط باي جدول قمت بترقية كلا من قاعدة بيانات الجداول و الواجهة ووضعت نقطة ايقاف عند الوحدة النمطية ModLinkAll وبدأت التتبع لاحظت ان الكود يتوقف لان الوحدة النمطية تعيد الخطأ 0 الخطأ يمكن في السطر التالي الموجود في الوحدة النمطية ModLinkAll : Dim rs As Recordset قمت بتعديله الى Dim rs As DAO.Recordset والنتيجة تم الارتباط بنجاح و بدون اي مشاكل جزيل الشكر لكم جميعا المسألة ليست مسألة خطأ في التطبيق ، ولكنها متعلقة بالمراجع و المكتبات المسجلة لديك شكرا
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.