أحمد العيسى قام بنشر الأربعاء at 18:41 قام بنشر الأربعاء at 18:41 السلام عليكم بالمرفقات ثلاث تطبيقات بسيطة ورائعة من عمل أبو جودي والأخت زهرة منهم من يقتصر فلتره على إظهار mdb والآخر على accdb المفترض أن البرنامج الناتج يتوافق مع أوفيس 2003 بالإضافة للإصدارات التالية بالطبع سوف نري مع الشمول البرمجي الناحية الجمالية بأفضل صورة وأنا واثق من هذا شكراً لجميع الزملاء مقدماً وتهنئة لنا بعودة أبو جودي للمنتدى من جديد تفعيل وإلغاء الشفت1.mdb تفعيل وإلغاء الشفت2.mdb تفعيل وإلغاء الشفت3.mdb
ابو جودي قام بنشر الأربعاء at 21:04 قام بنشر الأربعاء at 21:04 هو المفروض ان المرفق الثانى بيدعم كل الامتدادت من المرفقات اللى حضرتك شاركتها لكن على كل حال اليك المرفق بعد عمل اعادة هيكلة شاملة للكود كاملا تفعيل وإلغاء الشفت.mdb
أحمد العيسى قام بنشر الخميس at 04:56 الكاتب قام بنشر الخميس at 04:56 معذرة يبدو أن الهيكلة تحتاج مراجعة لتحقيق الهدف النهائي فى الفلترة : يكفى السطر الثالث ( كل الملفات ) أيضاً هل من الممكن بعد اختيار ملف أكسس :اكتشاف الفاعلية تلقائياً (تمكين ، نعطيل ) وبذلك يكون زر واحد فقط هو من يتم اختياره بالنسبة لملف *.accdb لم ينجح التطبيق فى تغيير الخاصية
Foksh قام بنشر بالامس في 13:27 قام بنشر بالامس في 13:27 (معدل) بناءً على طلبك أخي @أحمد العيسى ، هذه مشاركة بسيطة ، جربها رجاءً على أوفيس 2003 وأخبرني بالنتيجة .. حيث الأكواد في مديول واحد :- Option Compare Database Option Explicit Private mDbPass As String Public Sub SelectExternalDB(frm As Object) Dim fd As Object Set fd = Application.FileDialog(3) fd.Title = "Select Database" fd.Filters.Clear fd.Filters.Add "Access Files", "*.accdb;*.mdb" If fd.Show = -1 Then frm.Controls("Txt_PathDB").Value = fd.SelectedItems(1) mDbPass = "" CheckShift frm, fd.SelectedItems(1) End If End Sub Public Sub CheckShift(frm As Object, dbPath As String) Dim db As Object, wrk As Object, prp As Object Dim isEnabled As Boolean Set wrk = DBEngine.Workspaces(0) On Error Resume Next Set db = wrk.OpenDatabase(dbPath, False, False, "") If Err.Number = 3031 Then Err.Clear mDbPass = InputBox("قاعدة البيانات محمية، يرجى إدخال كلمة المرور:", "كلمة المرور") If mDbPass = "" Then Exit Sub Set db = wrk.OpenDatabase(dbPath, False, False, ";PWD=" & mDbPass) End If If db Is Nothing Then Exit Sub isEnabled = True For Each prp In db.Properties If prp.Name = "AllowBypassKey" Then isEnabled = prp.Value Exit For End If Next prp If isEnabled Then frm.Controls("OptMain").Value = 2 frm.Controls("Btn_Doit").Caption = "إلغاء تفعيل مفتاح الشيفت" frm.Controls("Lbl_Info").Caption = "الحالة: مفتاح الشيفت مفعل" & vbCrLf & dbPath Else frm.Controls("OptMain").Value = 1 frm.Controls("Btn_Doit").Caption = "تفعيل مفتاح الشيفت" frm.Controls("Lbl_Info").Caption = "الحالة: مفتاح الشيفت غير مفعل" & vbCrLf & dbPath End If db.Close Set db = Nothing End Sub Public Sub ExecuteToggle(frm As Object) Dim dbPath As String dbPath = frm.Controls("Txt_PathDB").Value If Len(dbPath) = 0 Then Exit Sub Dim db As Object, wrk As Object, prp As Object Set wrk = DBEngine.Workspaces(0) On Error Resume Next If Len(mDbPass) > 0 Then Set db = wrk.OpenDatabase(dbPath, False, False, ";PWD=" & mDbPass) Else Set db = wrk.OpenDatabase(dbPath, False, False, "") End If If db Is Nothing Then Exit Sub Dim newState As Boolean If frm.Controls("OptMain").Value = 1 Then newState = True Else newState = False End If db.Properties("AllowBypassKey") = newState If Err.Number = 3270 Then Err.Clear Set prp = db.CreateProperty("AllowBypassKey", 1, newState) db.Properties.Append prp End If db.Close Set db = Nothing CheckShift frm, dbPath End Sub والإستدعاء في زر اختيار الملف :- Private Sub Btn_Select_Click() SelectExternalDB Me End Sub وزر التنفيذ :- Private Sub Btn_Doit_Click() ExecuteToggle Me End Sub وصورة من الأداة :- حيث عند اختيارك لأي قاعدة بيانات ، سيتم الكشف عن حالتها ، إن كان مفتاح الشيفت مفعلاً مسبقاً فسيتم تطبيق الإختيار تلقائياً على Disabled - غير مفعلة . وإذا كان مفتاح الشيفت غير مفعل مسبقاً ، فسيتم تطبيق الإختيار على Enabled - مفعلة . وسيكون التفعيل من خلال زر واحد فقط تتغير تسميته حسب الحالة .. وإذا كانت قاعدة البيانات محمية بكلمة مرور فسيظهر لك رسالة لإدخال كلمة مرور قاعدة البيانات فور اختيارها ، وعند تنفيذ الإجراء الذي تريده للتأكيد .. ShiftEnabled.mdb تم تعديل بالامس في 13:28 بواسطه Foksh إضافة آخر سطر 1
ابو جودي قام بنشر بالامس في 13:32 قام بنشر بالامس في 13:32 في 16/4/2026 at 06:56, أحمد العيسى said: فى الفلترة : يكفى السطر الثالث ( كل الملفات ) ما هو فى المرفق القديم بتاعى كنت عامل كده بس يبدو لان حضرتك مأخدتش بالك انا عملتها كده فى المرفق الجديد بس علشان اوضح لحضرتك واثبت لك انها تعمل مع كل الاصدارات فياريت تتأكد من المرفق باسم : تفعيل وإلغاء الشفت2.mdb اللى حضرتك ارفقته وحتجد اساسا انه مافيهوش اى مشاكل في 16/4/2026 at 06:56, أحمد العيسى said: بالنسبة لملف *.accdb لم ينجح التطبيق فى تغيير الخاصية اسف انا كتبت الكود وجربته وكان شغال على كل الامتدادت لكل الاصدارات ولكن عند المراجعة استوقفنى استخدام : Workspaces واعتقد ان استخدام :DBEngine.Workspaces(0) يرث إعدادات محرك المشغل الحالي لذلك يبدو ان حضرتك تستخدم اصدار اقل من 2007 لذلك حدثت هذه المشكلة على ما يبدو ودى المرفق الجديد تفعيل وإلغاء الشفت-V2.mdb 1
أحمد العيسى قام بنشر منذ 22 ساعات الكاتب قام بنشر منذ 22 ساعات (معدل) شكراً للسادة الأعزاء Foksh ، ابو جودي مبدئياً .. التطبيقان كل منهما يلبى المطلوب فى بيئة تشغيله عند التشغيل على أكسس 2003 يقوم باللازم نحو اللاحقة mdb وعند التشغيل على أكسس 2007 يتعامل مع الملفات دات اللاحقة accdb أحتاج لمزيد من التجارب لاحقاً !! تم تعديل منذ 21 ساعات بواسطه أحمد العيسى
Foksh قام بنشر منذ 21 ساعات قام بنشر منذ 21 ساعات 37 دقائق مضت, أحمد العيسى said: عند التشغيل على أكسس 2003 يقوم باللازم نحو اللاحقة mdb ليس لدي نسخة 2003 حتى أقوم بالتجربة ، ولكن الأمر مرهون بتجربتك على أكثر من إصدار أخي الكريم .. جرب كلا الحلين وأعتقد أنك سترسو على بر الإجابة بأمان . 1
أحمد العيسى قام بنشر منذ 2 ساعات الكاتب قام بنشر منذ 2 ساعات 18 ساعات مضت, Foksh said: ليس لدي نسخة 2003 حتى أقوم بالتجربة بسيطة .. إذا أردت : فيما يلى رابط لتحميل Portable_Office 2003 من صنعي ، جربه مطلوب تعديل بسيط على تطبيقك: عند الضغط على زر تفعيل مفتاح الشيفت / إلغاء مفتاح الشيفت ، يتم التنقل بين عناصر الاختيار Disable و Enaable والعكس لا يتم إذا تم التأشير واختيار عناصر الاختيار لا يتم تغير المسمى على زر تفعيل مفتاح الشيفت طبقاً للإختيار والمطلوب التعديل هنا
Foksh قام بنشر منذ 2 ساعات قام بنشر منذ 2 ساعات 11 دقائق مضت, أحمد العيسى said: إذا تم التأشير واختيار عناصر الاختيار لا يتم تغير المسمى على زر تفعيل مفتاح الشيفت طبقاً للإختيار والمطلوب التعديل هنا أصغر همومك أخي أحمد .. كمثال ؛ في حدث بعد التحديث للعنصر OptMain ، جرب الفكرة التالية أو كما تريد لحاجتك :- Private Sub OptMain_AfterUpdate() If Me.OptMain.Value = 1 Then Me.Btn_Doit.Caption = "إلغاء تفعيل مفتاح الشيفت" Else Me.Btn_Doit.Caption = "تفعيل مفتاح الشيفت" End If End Sub
ابو جودي قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه استاذ @أحمد العيسى خلينى اوضح شئ مهم جدا جدا وانا عدلت الاكواد بسببها يستحيل ان اكسس اقل فى اصدار 2007 يقوم بعمل تفعيل او الغاء تفعيل بالشفت لقواعد بيانات تمت على اصدارات اعلى من او يساوى 2007 السبب: السبب ان الاصدارات الاقل تعتمد على محرك اساسا لا يستطيع التعامل مع قواعد بيانات تمت على اصدارات احدث واللى نتيجتها الرسالة اللى انت شاركتها ولكن العكش ممكن فمحرك قواعد البيانات الحديثة يمكنه التعامل مع قواعد البيانات الاقل من 2007 جملة الاتصال لتمرير كلمة المرور تختلف بين الاصدارات اقل من 2007 واعلى من او يساوى الاصدار 2007 واتفضل المرفق 1
أحمد العيسى قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه (معدل) منذ ساعه, Foksh said: أصغر همومك أخي أحمد .. كمثال ؛ في حدث بعد التحديث للعنصر OptMain ، جرب الفكرة التالية أو كما تريد لحاجتك :- Private Sub OptMain_AfterUpdate() If Me.OptMain.Value = 1 Then Me.Btn_Doit.Caption = "إلغاء تفعيل مفتاح الشيفت" Else Me.Btn_Doit.Caption = "تفعيل مفتاح الشيفت" End If End Sub لا أعرف وجهة نظرك فى أن التطبيق يتعامل مع موديول ، ولكنى أحترمها طبعاً فى حين أنه يحتوى على نموذج واحد يتيم يمكن وضع كل أوامر الموديول به ملاحظتك حدث بعد التحديث للعنصر OptMain لم يكن غائباً عنى ولكن كنت أفكر فى وظيفة التطبيق المتشابكة وأن الحدث هل سوف يؤثر فيها ؟ إقتراحى إذا أعجبك: وضع زري أمر "إلغاء تفعيل" ، "تمكين تفعيل" وليس زر واحد مع خفوت أحدهما وقت الحاجة لأحدهما التعديل فى بيان "Lbl_Info" بالنموذج أو الاستغناء عنها خد راحتك .. أعلم أن دماغك متكلفة ويمكنك أن تضيف من إبداعاتك الكثير ، فى انتظار مرفقك المعدل تم تعديل منذ 1 ساعه بواسطه أحمد العيسى
أحمد العيسى قام بنشر منذ 1 ساعه الكاتب قام بنشر منذ 1 ساعه (معدل) 18 دقائق مضت, ابو جودي said: استاذ @أحمد العيسى خلينى اوضح شئ مهم جدا جدا وانا عدلت الاكواد بسببها يستحيل ان اكسس اقل فى اصدار 2007 يقوم بعمل تفعيل او الغاء تفعيل بالشفت لقواعد بيانات تمت على اصدارات اعلى من او يساوى 2007 تمام 100 % لماذا أصمم على أن أن يكون التطبيق بأكسس 2003 لأن جميع إصدارات الأكسس التالية تقوم بتشغيل هذا التطبيق ما لم نضيف خصائص عالية من الإصدارات الحديثة لذلك ذكرت أن تطبيق حضرتك قد نجح فى التأثير على التطبيقات ذات اللاحقة accdb بشرط تشغيله من داخل 2007 فما فوق لكن فى أكسس 2003 لن يؤثر إلا فى التطبيقات mdb تم تعديل منذ 1 ساعه بواسطه أحمد العيسى
ابو جودي قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه 8 دقائق مضت, أحمد العيسى said: تمام 100 % لماذا أصمم على أن أن يكون التطبيق بأكسس 2003 لأن جميع إصدارات الأكسس التالية تقوم بتشغيل هذا التطبيق ما لم نضيف خصائص عالية من الإصدارات الحديثة لذلك ذكرت أن تطبيق حضرتك قد نجح فى التأثير على التطبيقات ذات اللاحقة accdb بشرط تشغيله من داخل 2007 فما فوق لكن فى أكسس 2003 لن يؤثر إلا التطبيقات mdb طيب انا سوف أراجع الكود واتيك بنسخة احترافية من الكود فى نموذج واحد كامل بمرفق بعد عمل بعض التحسينات والاول جرب كل شئ ولو تمام انت اعمله بالاصدار 2003
ابو جودي قام بنشر منذ 45 دقائق قام بنشر منذ 45 دقائق المرفق بعد التجربة على 2003 لو تمام يبقى ماشئ الحل لو فى مشكلة ظهرت قم بانشاء قاعدة بيانات جديدة من الاصدار 2003 وبعد ذلك قم بتصميم النموذج والاكواد من هذه النسخة واخرنا النتيجة من فضلك تفعيل وإلغاء الشفت-V2.accdb
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان