اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. Foksh

    Foksh

    الخبراء


    • نقاط

      53

    • Posts

      5132


  2. منتصر الانسي

    منتصر الانسي

    المشرفين السابقين


    • نقاط

      32

    • Posts

      1468


  3. عبدالله بشير عبدالله
  4. Moosak

    Moosak

    أوفيسنا


    • نقاط

      12

    • Posts

      2418


Popular Content

Showing content with the highest reputation since 09/18/26 in مشاركات

  1. اعرض الملف ⭐ هدية ~ أداة حماية الجداول وتحصينها في آكسيس 2026 ⭐ أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. في الموضوع الذي سبق وتم طرحه في هذا الموضوع ، كانت المشاركات بناءة لفتح باب الإبتكار والتطوير وخلق بيئة حماية وحصانة للجداول من خلال ضبط حماية السجلات وتحصينها داخل الجداول عن طريق ماكرو البيانات . والشكر موصول لأخي الأستاذ موسى @Moosak وأخي منتصر @منتصر الانسي ، لمشاركتهما الحديث والأفكار بخصوص هذا الموضوع . وبناءً على الفكرة العامة فقد توصلت وبحمد الله وفضله لفكرة تمكن المستخدم ( المطور عادةً أو صمم قاعدة البيانات ) من حماية الجداول والسجلات من الحذف أو التعديل المباشر على السجلات داخل الجداول . وبالتالي تطبيق حصانة كاملة على الجداول التي يحددها المستخدم . ميزات الأداة :- 1️⃣ تأتي الأداة بمديول واحد يمكن نسخه إلى أي قاعدة بيانات ، وإستدعاء دالة الحماية ، أو حذفها على أي جدول / جداول يختارها المستخدم . 2️⃣ واجهة تفاعلية تسمح لك كمستخدم بتطبيق واختيار نوع الوظيفة بسهولة تامة ، بدلاً من كتابة الإستدعاءات ، تسهيلاً لتطبيق الحماية أو حذفها . 3️⃣ تتعامل الأداة مع الجداول المحلية و الجداول المرتبطة بشكل منظم وديناميكي صامت جداً . 4️⃣ للأداة القدرة على التعامل مع استدعاءات الإستعلامات ( الإضافة ، التحديث والحذف ) بشكل صارم ومحكم التنفيذ . 5️⃣ أيضاً القدرة حتى مع التعامل مع استعلامات الـ SQL بذكاء خاص . 6️⃣ قدرة الأداة على تطبيق الحماية على جدول ( على سبيل المثال ) مع استثناء حقل أو حقول من الحماية . بحيث تستطيع من خلال أي نموذج التعديل على هذه الحقول داخل الجدول المحمي دون أي تعارض . 7️⃣ إمكانية تطبيق الحماية / حذفها لجداول محددة تختارها من خلال الإستدعاء مرة واحدة ، أو جميع الجداول في قاعدة بياناتك . 8️⃣ إتاحة الفرصة أيضاً لتطبيق الحماية أو حذفها على جداول قاعدة بيانات خارجية دون الحاجة إلى نقل المديول لقاعدة البيانات هذه ( التي اخترتها ) . 9️⃣ التعامل الذكي مع الجداول المرتبطة فقط بحمايتها أو إلغاء الحماية عنها ؛ وأن تستثني الجداول المحلية الغير مرتبطة . 🔟 التعامل مع مسار جداول قواعد البيانات المرتبطة دون الحاجة لإدخال المسار بشكل يدوي . 1️⃣1️⃣ التعامل بذكاء مع قواعد البيانات المرتبطة والمحمية بكلمة مرور . بحيث يتم التعرف واكتشاف كلمة المرور تلقائياً وتمريرها إلى الحماية أو الحذف دون الحاجة للتدخل اليدوي . 1️⃣2️⃣ قراءة جداول قاعدة البيانات الخارجية والتعامل معها مباشرة مع عرض جداولها داخل الأداة من داخل قاعدة بيانات مشروعك . وحتى حقول كل جدول في قاعدة البيانات تلك التي اخترتها . 1️⃣3️⃣ إمكانية تطبيق الحماية أو الحذف بشكل صامت أو إظهار رسالة تفاعلية بالنتيجة التوضيحية . 1️⃣4️⃣ رسائل أخطاء معربة بالكامل لجميع احتمالات رسائل الخطأ التي يمكن أن تظهر للمستخدم . 1️⃣5️⃣ تمكين المستخدم من نسخ سطر الإستدعاء ولصقه في أي وظيفة أو حدث يحتاجها لها . 1️⃣6️⃣ في المديول ، يوجد شرح مبسط لآلية الإستدعاءات التي يمكن للأداة تطبيقها وتقديمها لك من خلال واجهة النموذج المخصص للإستدعاءات . 1️⃣7️⃣ إتاحة الفرصة بتطبيق الحماية أو حذفها عن كافة الجداول ، مع استثناء جداول محددة . 1️⃣8️⃣ عرض حالة الجدول إن كان محمياً مسبقاً أو لا ، وحالة الحماية عند وجود حقول تم استثناؤها . 1️⃣9️⃣ تضمين التحقق من وجود الكائنات التي يتم استدعاء الحماية عليها من خلال كود VBA . كمثال :- ' التحقق من وجود الكائن قبل التنفيذ If DCount("*", "MSysObjects", "Name In ('Tbl_1', 'Tbl_2') And Type In (1, 4, 6)") = 2 Then Else MsgBox "أحد الكائنات المحددة [Tbl_1, Tbl_2] غير موجود في قاعدة البيانات!", vbExclamation End If صورة من واجهة الأداة :- ملف الأداة مفتوح المصدر صاحب الملف Foksh تمت الاضافه 10/07/26 الاقسام قسم الأكسيس
    4 points
  2. اعرض الملف ⭐ هدية ~ أداة الحازم في مثبت النواتين لآكسيس 32 و 64 - 2026 ⭐ أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. في هذا الموضوع ، وأعتقد أنه سيكون القبل الأخير لي في قسم الآكسيس . سنتحدث عن فكرة يحتاجها كل مطور يرغب بطوير مشاريعه وحفظها في ملف تنفيذي ولكن بطابع Accde . حيث أن الفكرة والتي قد سبق طرح موضوعها للنقاش في هذا الموضوع هنا ؛ لم تلق استجابةً كما كنت أتوقع ، إلا أنني سأشرح هنا وظيفة الأداة وفائدتها . شرح للفكرة وطريقة العمل قبل التجربة :- يأتي المطور على التعب في تصميم قاعدة بياناته لمشروع ما ، ويقوم بضبط جميع الخصائص والوظائف والأكواد والنماذج والتقارير .... إلخ بشكل جيد على أكمل وجه . فيتخبط بحائط اختلاف النواة والإصدار في بيئة عمل العميل . فهنا سيقوم بسلوك أحد المسلكين :- إجبار العميل على تثبيت نسخة أوفيس مطابقة للنسخة التي تم بناء المشروع عليها . إجبار نفسه على تثبيت نسخة أوفيس وفقاً لحكم العميل بأنه لا يرغب بتحديث نسخته التي نصبها وثبتها ويعمل بها في جهازه . هنا يأتي دوري بهذه الأداة . حيث كل ما عليك هو أن تقوم بضبط مشروعك كما تحب ( من إخفاء واجهة آكسيس ، إلغاء مفتاح الشيف .... إلخ ) وأن تتوقف عند النقطة التي ستقوم بها بحفظ مشروعك بصيغة ACCDE . يعني ادعس فرامل و وقف عزيزي المطور . فكل ما عليك هو أن :- تذهب إلى الأداة المرفقة . تختار منها قاعدة بياناتك الجاهزة . تحدد الأيقونة التي تريدها للإختصار الذي سيتم انشاؤه على سطح مكتب العميل . تحدد اسم الإختصار الذي سيتم انشاؤه على سطح المكتب . تحديد مسار إنشاء الملف الذي سترسله للعميل . ماذا يمكن للأداة أن تفعل ، وما الذي ستقدمه لك كمطور :- تتيح لك تثبيت قاعدة البيانات الخاصة بمشروعك في أي مجلد تحدده . تقوم تلقائياً بإنتاج ملف ACCDE متوافق مع نسخة إصدار أوفيس المثبت على جهاز العميل . تقوم بإنشاء اختصار وبالإسم الذي حددته ، على سطح المكتب . تمكنك الأداة من إدخال كلمة مرور خاصة بك ( وليس العميل ) من خلال النقر على زر المفتاح 🔑 الموجود بجانب زر الإغلاق ، لاستخراج قاعدة البيانات بصيغتها الأصلية ACCDB حتى لو بعد 20 عاماً . وهنا السر العجيب الذي ستستثمره بأنك لن تخسر نسخة العميل الخاصة به وبكامل إعداداته عند عودتك لإجراء تعديلات أو تحديثات أو تطويرات مستقبلاً على سطح مكتبك . مثال توضيحي مصور :- لأي ملاحظة أو استفسار .. باب النقاش مفتوح 🤗 الأداة مبنية بلغة C# فقط . صاحب الملف Foksh تمت الاضافه 10/08/26 الاقسام قسم الأكسيس  
    3 points
  3. وهذه وحدة نمطية يمكن إستخدامها بشكل مستقل كما في المثال أو إستيرادها إلى أي تطبيق وطريقة عملها بسيط للغاية نسخ الكود (إجراء - دالة - وحدة نمطية كاملة) ===> تشغيل الإجراء Indent ===> إعادة لصق الكود في مكانه للتجربة أفتح المثال المرفق ليظهر نموذج به زر أمر واحد إنسخ أي كود غير منسق من أي تطبيق لديك لايهم أنقر الزر أعد اللصق تحياتي Code Indenter.rar
    3 points
  4. وعليكم السلام ورحمة الله وبركاته .. أبدعت بهذه المشاركة أخي أحمد ، وجزاكم الله خيراً لمشاركتكم الأداة مع أنها وكما أوضحتم بأنها 30 يوماً , ولكني سأنصحك بتجربة الأداة الأكثر تطوراً والمفتوحة المصدر حتى ، وبما أنك من المهتمين بهذه الأدوات الجميلة ، وهي أداة Rubberduck في هذه التفاصيل :- 1. تنسيق ومحاذاة الكود :- تقوم بإعادة محاذاة وتنسيق الكود بالكامل بضغطة زر واحدة ( للإجراء الحالي المحدد ، الموديول ، أو كامل المشروع ) . تحتوي على إعدادات متقدمة لتخصيص المسافات البادئة ، طريقة ترتيب الجمل الشرطية ، وسلوك الأقواس والتعليقات . 2. فحص وتدقيق الكود الذكي :- تحتوي الأداة على محلل ذكي يكتشف أكثر من 100 نوع من الأخطاء ونقاط الضعف البرمجية تلقائياً أثناء كتابة الكود ، مثل :- المتغيرات غير المستخدمة ( Unused Variables ) أو الأكواد الميتة ( Dead Code ) . المتغيرات التي لم يُحدد نوع بياناتها صراحة وتُركت كنوع Variant افتراضياً . غياب عبارة Option Explicit في الموديولات . نسيان إغلاق أو تفريغ كائنات الذاكرة ( Set rs = Nothing ) . توفر ميزة الإصلاح السريع ( Quick Fix ) لتصحيح المشكلة بنقرة واحدة دون كتابة يدوية . والعديد من المميزات التي قد تكتشفها عند مراجعتك هذا الرابط للتحميل والتفاصيل .
    3 points
  5. وتكملة لمسيرة الأفكار .. ومشاركة مع مهندسنا العزيز @منتصر الانسي 🙂 .. تم تعديل الكود ليقوم بتعديل اسم البرنامج بنفسه ثم يعيد تشغيل البرنامج مرة أخرى 🙂 Private Sub Form_Load() Const strCorrectName As String = "gelani" ' اكتب هنا الاسم الصحيح بدون الامتداد Dim currentPath As String Dim targetFullName As String Dim batchFilePath As String Dim fso As Object Dim ts As Object ' التحقق من مطابقة اسم الملف الحالي للاسم المطلوب If CurrentProject.Name <> strCorrectName & ".accdb" Then Label0.Caption = "جاري تعديل اسم البرنامج..." currentPath = CurrentProject.Path targetFullName = currentPath & "\" & strCorrectName & ".accdb" batchFilePath = currentPath & "\rename_db.bat" ' إنشاء الملف الدفعي لتنفيذ إعادة التسمية بعد الإغلاق Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.CreateTextFile(batchFilePath, True) ' كتابة الأوامر داخل الملف الدفعي ts.WriteLine "@echo off" ts.WriteLine "chcp 65001 > nul" ts.WriteLine "timeout /t 2 /nobreak > nul" ' انتظار إغلاق ملف أكسس تماماً لفك القفل ts.WriteLine "cd /d """ & currentPath & """" ts.WriteLine "ren """ & CurrentProject.Name & """ """ & strCorrectName & ".accdb""" ts.WriteLine "start """" """ & targetFullName & """" ' إعادة تشغيل القاعدة بالاسم الجديد ts.WriteLine "del ""%~f0""" ' حذف الملف الدفعي بعد الانتهاء ts.Close ' تنبيه المستخدم قبل الإغلاق والتعديل MsgBox "تم اكتشاف أن اسم قاعدة البيانات غير صحيح!" & vbCrLf & _ "سيتم إغلاق البرنامج وتعديله تلقائياً إلى: " & strCorrectName & ".accdb", _ vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "تعديل اسم البرنامج" ' تشغيل الملف الدفعي في الخلفية Shell "cmd.exe /c """ & batchFilePath & """", vbHide ' إغلاق قاعدة البيانات الحالية DoCmd.Quit Else Label0.Caption = "الإسم صحيح" End If End Sub gelani.accdb
    3 points
  6. ملف أكسس مثله مثل أي ملف آخر داخل ويندوز يمكن لأي شخص تعديل إسمه لذا فلا يمكن منع أي مستخدم من تعديل إسمه ولكن يمكننا تقييد تشغيل البرنامج إلا إذا كان بالإسم الذي نريد في المرفق نفس الملف الذي أرسلته جرب فتحه بالإسم gelani وأغلقه وغير إسمه إلى أي بإسم آخر وشاهد النتيجة فهل يناسبك هذا الحل؟ gelani.rar
    3 points
  7. المعادلة لا تغمل على اصدار 2010 تعمل على اصدار 2013 وما فوق يمكن استخدام كود لتلوين الخلايا التي بها معادلات الخطوات حدد العمود او الاعمدة - ثم اصغط على الزر تلوين خلايا المعادلات.xlsb
    3 points
  8. وعليكم السلام ورحمة الله وبركاته تم تنسيق الارقام كوقت يمكنك تغيير تاريخ الجهاز كتجربة اذا كان الوقت الحالي ليس به حصص المواعيد.xlsb
    2 points
  9. دخل الذكاء الصناعي في معظم حياتنا و بات مهدد لوظائف كثيرة و لذلك يجب كمبرمجين ان نتعلمه و نستخدمة لخدمتنا و نطوعه في عملنا لذلك رغم عدم المامي بالموضوع و خبرتي المتواضعة . الا اننا يمكنني ان انير لغيري الطريق كي يتعلم و يعلمنا كيفية استخدامه . لذلك ما يلي بعض المحاضرات في كيفية استخدام AI مع الاكسس و هذه المشاركة ما هي الا بذرة تحتاج من حضراتكم المشاركة و المساهمة بكل جهد كي تكون مرجع لنا نحن المتخصصين - او المبتدئين - لكي نواكب العصر ان شاء الله . 1. تشغيل الذكاء الاصطناعي مجاناً وبشكل محلي على حاسوبك لقواعد بيانات مايكروسوفت أكسس English Title: Run FREE AI on Your PC for Microsoft Access (Complete Ollama Setup Guide) رابط الفيديو: (أو البحث في قناة AccessUserGroups.org) الملخص: دليل عملي متكامل لإعداد وتثبيت نماذج الذكاء الاصطناعي محلياً عبر أداة Ollama واستخدامها لخدمة وتطوير قواعد بيانات أكسس دون الحاجة للاتترنت. 2. البرمجة في أكسس باستخدام الذكاء الاصطناعي عبر باورشل English Title: Programming in Access with AI using PowerShell رابط الفيديو: (متاح على قناة اليوتيوب الرسمية للمنظمة) الملخص: يستعرض كيفية دمج لغة الأتمتة PowerShell مع تقنيات الذكاء الاصطناعي لتسريع عمليات الكتابة البرمجية وإدارة قواعد بيانات Access بكفاءة. 3. أكسس لم تموت.. لقد حصلت أخيراً على "مساعد ذكي" (لا، ليس هذا المقصود!) English Title: Access Isn't Dead. It Finally Got a "Co-Pilot". (No. Not that one.) رابط التفاصيل: الملخص: مناقشة عميقة حول كيفية توظيف وكلاء الذكاء الاصطناعي وخوادم (MCP Servers) المخصصة لأكسس لتحديث الأنظمة القديمة وقيادة عملية التطوير. 4. إدارة فريق من وكلاء الذكاء الاصطناعي في هندسة البرمجيات English Title: Managing a Team of AI Agents -- Creating an AI skill.md رابط التفاصيل والتسجيل: الملخص: استعراض عملي لاحتراف إدارة بيئات التطوير المعتمدة على عدة مساعدين ذكيين (مثل Claude Code و ChatGPT) لتصميم وهندسة الأنظمة البرمجية. 5. إعداد وتكوين بيئة العمل لاستخدام مايكروسوفت أكسس مع الذكاء الاصطناعي (الجزء الثاني) English Title: Using Microsoft Access with AI - Part 2 رابط الفيديو: https://www.youtube.com/watch?v=dZeeuha6my4 الملخص: جلسة تفاعلية متقدمة تعرض مستودعات القوالب الجاهزة وكيفية الإجابة على استفسارات المطورين البرمجية وتطويع الـ AI لخدمة قواعد البيانات.
    2 points
  10. جزاك الله خير اشتغلت بالمعادلة الثانية شكرا جزيلا
    2 points
  11. وعليكم السلام ورحمة الله وبركاته .. جرب المعادلة التالية في الخلية N6 :- =IF(G6<50, "ضعيف", IF(G6<60, "دون المتوسط", IF(G6<75, "متوسط", IF(G6<90, "فوق المتوسط", IF(G6<=100, "كفؤ", "درجة غير صحيحة"))))) إذا لم تعمل معك ، فالسبب عادةً الفاصلة المنقوطة ، لذا جرب التالية إحتياطاً :- =IF(G6<50; "ضعيف"; IF(G6<60; "دون المتوسط"; IF(G6<75; "متوسط"; IF(G6<90; "فوق المتوسط"; IF(G6<=100; "كفؤ"; "درجة غير صحيحة")))))
    2 points
  12. للاسف هذا ماتم استرجاعه فقط البرنامج الجديد (AccessFIX).rar
    2 points
  13. السلام عليكم ورحمة الله وبركاته Smart Indenter هى أداة قديمة لتنسيق المسافات فى كود أكسس لتجعله أسهل فى قراءته وأعتقد أنه فى الإصدار الأخير تم توافقها مع نواة 64 بت أجمل ما في هذه الأداة أنك من خلالها تستطيع تنسيق كود المشروع بأكمله فى ثوان معدودة الأداة تجريبية لمدة 30 يوماً ، ولا أظن أنك سوف تحتاج لهذه المدة .. الملف مرفق smartindentersetup.zip
    2 points
  14. شكرا لك أخي @أحمد العيسى على الطرح الجميل .. 🙂🌹 والشكر موصول لأستاذنا فادي @Foksh 🙂🌼 وهذي لها تحديث إن شاء الله .. 😉👌 لأن النسخة الحالية مربوطة ب API الجيمناي المجاني ولكنه يتعثر بعض الأحيان ..
    2 points
  15. أشكرك على هذا الإطراء الجميل ويبدو أنه ارتد إليك بعد مشاركتك هنا لأداة أفضل وأشمل تحياتي لشخصك الكريم يوجد أيضاً الكثير من المواقع المجانية ( OnLine) التى تقوم ببعض تلك الأعمال ولكن بنظام النسخ واللصق مثل: VBA Formatter VBA Code Formatter وتحفة المنتدى VBA Code Doctor
    2 points
  16. لك ذلك بالطبع .. تفضل يا عزيزي ، تابع الشرح في الفيديو التالي ..
    2 points
  17. السلام عليكم البرنامج مبتكر وجميل تصميماً وشرحاً ومبدئياً لماذا تختلف الشاشة التالية فى شرحك عن الموجودة عندي فى شرحك هناك بنود أكثر ( أربعة ) عندى ورغم إدخال الـ Password كما فى خطواتك (إثنان )
    2 points
  18. السلام عليكم ورحمة الله وبركاته اضافة الى مشاركة الزميلين أبومروان - Foksh محاولة اعادة تنظيم اكواد الملف ما تم عمله وتنظيمه - الغاء جميع الاكواد المتعلقة بتحديد النوع والمكررة في صفحات الانتظام والانتساب الثمانية وتم عمل كود واحد في WORKBOOK يقوم بتحديد نوع الشخص مع امكانية استتناء الصفحات التي ليس لها علاقة اظهار عناوين الجدول في شيت طباعة إضافة عمود سبب الاعفاء للجدول إضافة الاجمالي بعد اخر صف به بيانات اضافة دالة التفقيط تعديل اعدادات الورقة لتتناسب مع الطباعة إضافة زر طباعة تحياتي للجميع Copy of تجميع.xlsm
    2 points
  19. مشاركة بسيطة .. أخي الفاضل @egymina2012 ، تعدد الطلبات وكثرة التعديلات تربك وتشوش من يتقدم بتقديم حلول . لذا أرجو منك التوضيح بشكل أكثر وضوحاً للمطلوب ، ويا حبذا لو كان على شكل نقاط . بخصوص طلب تصحيح اسم الفرقة وإضافة ( انتساب و انتظام ) . في الجزء التالي في الكود داخل ملفك الأخير ، وتحديداً في السطر ' تحديث عنوان الفرقة في شيت الطباعة wsPrint.Range("C2").Value = "اسماء الطلاب - " & gradeTitle لاحظ هنا أنه يقوم بإضافة رقم الفرقة نصاً في الخلية C2 .. فإذا كنت تريدها في C3 أيضاً ، فقط أضف السطر التالي مباشرة أسفل الجزء الذي أشرت لك إليه :- wsPrint.Range("C3").Value = "اسماء الطلاب - " & gradeTitle & " ( انتظام - وانتساب )" اما باقي طلباتك فأرجو منك إيضاحها لو تكرمت ..
    2 points
  20. اتفضل اليك الحل السريع تم ادارك الاخطاء المشار اليها وتم عمل كود للنوع جرب وابلاغنا بالامر واي تعديل Copy of تجميع .xlsm
    2 points
  21. بفضل الله سبحانه وتعالى ، ثم لك على هذه السهرة الجميلة والغنية وسماع صوتك .. قد أكملت سهرتي التي تكللت بالنجاح .. وقد كانت الثمرة في نهاية موسم الحصاد تتلخص بـ :- 1) ميزة الإستكشاف التلقائي لقواعد البيانات الخلفية ( Auto-Detect Back-End ) :- يكتشف مسار الـ Back-End واسم الجدول الأصلي آلياً من خاصية tdf.Connect 2) ميزة التعامل مع القواعد المحمية بكلمة مرور ( Password-Protected Back-Ends ) :- يستخرج كلمة المرور تلقائياً إن كانت محفوظة في نص الاتصال ( PWD=... ) أو يدعم تمرير كلمة المرور يدوياً عبر المعامل: DbPassword:="MyPass" 3) دعم العلاقات والتتالي ( Cascade Aware ) :- دالة بسيطة تكتشف الجداول التابعة المربوطة بتتالي الحذف ، بحيث تفك / تعيد حمايتها مع الجدول الرئيسي بلحظة واحدة . 4) عدم الحاجة لاستدعاء أيقاف الحماية ومن ثم تنفيذ أمر يستدعي استعلامات التحديث أو الحذف ، ومن ثم إعادة تفعيل الحماية . 5) دعم مرن لإضافة السجلات في الجداول من النماذج دون الحاجة الى الإستدعاءات السابقة في النقطة السابقة ( إيقاف / تشغيل الحماية ) . 6) ما زال قيد التطوير والتجارب ، هو إمكانية استثناء حقل أو حقول في جدول واحد من التحديث وأبقاء الحماية على بقية الحقول . 7) أيضاً ما زال قيد التطوير فكرة لتتعامل مع القواعد الخارجية ، بحيث يقوم المستخدم بتنفيذ الحماية أو حذفها لجدول محدد في قاعدة بيانات خارجية .
    2 points
  22. تقصدني أنا صح ؟ 😅 سواء كانت هذه نيتك أم لا فأنا أشكرك لطرح هذا السؤال حتى يخرج لنا الأستاذ @Moosak بهذه التحفة فقد قدم لنا قطعة من الصلصال وما علينا إلا تشكيلها كما نشاء وهذه كانت تجربتي ولكن هذا تطلب مني تعديل دالة CheckProtection لتصبح على النحو التالي Public Function CheckProtection(ByVal tblName As String) As Boolean On Error GoTo ErrHandler Dim tmpPath As String tmpPath = Environ("TEMP") & "\DataMacro_Check_" & tblName & ".xml" ' Export the data macro (acTableDataMacro = 12, hidden member) Application.SaveAsText AC_TABLE_DATA_MACRO, tblName, tmpPath ' Read contents using FSO (Unicode) Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(tmpPath) Then Dim ts As Object Set ts = fso.OpenTextFile(tmpPath, 1, False, -1) ' -1 = Unicode Dim result As String result = ts.ReadAll ts.Close On Error Resume Next Kill tmpPath On Error GoTo 0 CheckProtection = True Else Debug.Print "No file was created." CheckProtection = False End If Set fso = Nothing Exit Function ErrHandler: blnIsBlocked = False Debug.Print "No data macro found on '" & tblName & "': " & Err.Description Debug.Print "ERROR: " & Err.Description CheckProtection = False End Function أصبحت نتيجة هذه الدالة من النوع Boolean بدل String لترجع True إذا كان الجدول محمي أو False إذا كان غير محمي وسؤالي للأخ موسى هل سيسبب هذا التغيير أي مشكلة وأنه من الضروري أن يكون ناتج هذه الدالة ذلك النص الطويل؟ الآن عند النقر على الزر الأول سيتم التحقق من وجود الماكرو فإذا لم يجده سينشئه ثم يفتح النموذج If CheckProtection("Tbl_Cust") = False Then ApplyTableProtection "Tbl_Cust" End If DoCmd.OpenForm "frmCust" يمكن أن يكون هذا الكود خلف حدث الإغلاق للنموذج أو أي مكان آخر والعكس في الزر الثاني إذا كان موجود سيزيله ثم يفتح النموذج If CheckProtection("Tbl_Cust") = True Then RemoveTableProtection "Tbl_Cust" End If DoCmd.OpenForm "frmCust" صراحة تعجبني الحلول المبتكرة القابلة للتشكيل وفقاً لطريقة عمل كل شخص برافو أستاذ موسى
    2 points
  23. تتبع الخطوات التالية وهذا هو محتوى المرفق سنغلق النموذج الشاشة الرئيسية ونفتح نموذج إنشاء الإختصار المسمى frmShortcut يفترض أن تكون النتيجة عندك مطابقة لما جاء في الصور
    2 points
  24. السلام عليكم ورحمه الله وبركاته ممكن من التنسيق الشرطي لو الخليه مثلا فيها معادله اضف لون والتنسق اللي =ISFORMULA(A1) وكذلك لامر لو مفيش معادله والخليه فيها قيمه عدديه برده اضف لون وتنسيق =AND(NOT(ISFORMULA(A1)), A1<>"")
    2 points
  25. مع إحترامي لصاحب الفيديو ولكني أجد أن تخصيص أيقونة أكسس بأيقونة أخرى فهذا لن يحل المشكلة لو أردنا تخصيص الأيقونة لكل تطبيق جرب المرفق ولاحظ النتيجة (بعد إنشاء الإختصار يجب فتح التطبيق بإستخدام الإختصار) كل المطلوب هو إستيراد النموذج frmShortcut إلى اي تطبيق والنقر على الزر (إنشاء الإختصار) ويمكن حذف هذا النموذج بعد ذلك ملاحظة هذا الحل مخصص للعمل في ويندوز 10 فقط تحياتي تجربة.rar
    2 points
  26. التحديث الجديد من أداة صانع القوائم المختصرة ، الإصدار الثالث ، ويشمل :- تمكين المستخدم من تعيين أيقونات الـ FaceID بطريقة عصرية وديناميكية . التمكين من استعادة أيقونة أمر الإفتراضية . التعامل الكامل مع جميع الإصدارات من 2003 - 365 طريقة الإستخدام :- أنشئ قائمتك المختصرة الجديدة . حدد اي خيار من القائمة ، وانقر زر الفيس 🙂 . تنقل بين التبويبات والتصنيفات ، واختر ايقونتك التي تريدها .. احفظ القائمة ، وجربها . الزر الذي يمثل أيقونة آكسيس هو زر استعادة الأيقونة الإفتراضية للزر المحدد من القائمة التي انشأتها . ملف التحديث مفتوح المصدر ، للإصدارات أحدث من 2003 :- Menu Builder V.3.zip الإصدار 2003 قريباً ، حال ضبطه 100%
    2 points
  27. اعرض الملف أداة إنشاء الخيارات المخصصة بإستخدام القوائم المختصرة {سلسلة الأدوات المساعدة المخصصة} اليوم أقدم لكم طريقة أخرى من طرق إنشاء قوائم الخيارات المخصصة ولكن هذه المرة بإستخدام القوائم المختصرة السياقية كل ما يتطلب معرفته للعمل بهذه الأداة ستجدونه موضحا ضمن المرفقات وكما تعودنا فمرفق لكم ملف أكسس بإسم النسخة التوضيحية تحتوي على أمثلة عملية توضح طريقة عمل الأداة وطرق الإستفادة منها بالإضافة إلى نسخة بإسم القالب يحتوي الكائنات المطلوب إستيرادها تم في هذه الأداة الأخذ بالإقتراحات التي قدمها الأخ @Foksh والأخ @Moosak في موضوع الأداة السابقة هنا فأصبح نموذج ببناء صيغة أمر الإستدعاء يقوم بإضافة عبارة Select Case ضمن الصيغة وتم إستخدام دالة بدل الإجراء ليتم إرجاع قيمة الخيار مباشرة لأني رأيت بصراحة أن هذين الإقتراحين هما الأنسب لهذه الأداة أرجو أن تجدوا في هذه الأداة الفائدة العلمية والعملية وفي إنتظار أي ملاحظات تقدمونها تحياتي صاحب الملف منتصر الانسي تمت الاضافه 09/19/26 الاقسام قسم الأكسيس  
    2 points
  28. رغم أني أرى أن طريقة عمل الأداة أبسط من تحتاج إلى فيديو لشرحها ولكن إذا كان ولابد فلايوجد أفضل من الأستاذ @Moosak للقيام بالمهمة فهو الوحيد المتمرس في مثل هذا النوع من الفيديوهات
    2 points
  29. من جمال الفكرة قمت بتنفيذها مباشرة الآن أصبح بالإمكان تصدير الكائنات المطلوبة فقط لعمل الأداة مع التحقق لعدم تصديرها أكثر من مرة
    2 points
  30. كلامك صحيح وفي محله ولكني أريد توضيح نقطة هنا من باب العلم بالشئ لا أكثر هذا ليس شرط في كل الحالات ولكنه سيكون كإجراء وقائي حتى نتأكد من أن لا يتم تنفيذ إجراء بغير قصد فمثلاً في المثال الأول في النسخة التوضيحية نلاحظ عدم حصول أي شيئ عند عدم تحديد أي عنصر في القائمة ولو عدنا للكود خلف زر الأمر سنجد عدم وجود عبارة Case Else Dim intResult As Integer intResult = GetOptions("نموذج إدخال البيانات" & _ ";نموذج تعديل البيانات" & _ ";نموذج إستعراض البيانات" & _ ";نموذج تحديد معايير تصفية التقارير") Select Case intResult Case Is = 1 DoCmd.OpenForm "frm01" Case Is = 2 DoCmd.OpenForm "frm02" Case Is = 3 DoCmd.OpenForm "frm03" Case Is = 4 DoCmd.OpenForm "frm04" End Select ولكن في المثال الثاني سنجد أنه سيتم تنفيذ إجراء لم يكن في الحسبان في هذه الحالة سيتطلب منا إضافة عبارة Case Else وعلى رأي المثل الوقاية خير من العلاج إن شاء الله سأقوم يإضافة هذا الأمر ضمن بناء صيغة الأمر بالإضافة إلى معالجة الملاحظة المقدمة من الأخ @Moosak وذلك في النسخة الجديدة التي أقوم فيها بإضافة الهدية القيمة المقدمة منك
    2 points
  31. كتبت لك الحل في المشاركة السابقة واكرر لم توضح الرقم الاصل او الاساسي هل هو في الخلية O10 او K9 لان الحل يختلف والنتيجة تختلف بفرضية ان الرقم الاصل الاولي هو في K9 اليك الملف AS.xlsx
    2 points
  32. وعليكم السلام ورحمة الله وبركاته اولا لم توضح الرقم الاساسي هل هو في الخلية O10 او K9 اذا كان القيمة في الخلية O10 هي الاساس غيّر معادلة الخلية H10 لتكون: =K10 اما إذا كان الأساس هو نسبة الـ 9% من المجموع الكلي (95975.95) غيّر قيمة الخلية O10 لتكون معادلة بدلاً من رقم ثابت =O9*9% والسبب ان نسبة 9% للرقم 95975.95 ليست 8637.8400 وانما 8637.8355 والفرق بينهما 0.0045 ضرب 12=0.05 (5 سنتيم)
    2 points
  33. معادلة جلب العنوان: =IFERROR(INDEX($K$4:$K$1000,MATCH($B4&$C4&$D4,$H$4:$H$1000&$I$4:$I$1000&$J$4:$J$1000,0)),"") معادلة جلب المهنة: =IFERROR(INDEX($L$4:$L$1000,MATCH($B4&$C4&$D4,$H$4:$H$1000&$I$4:$I$1000&$J$4:$J$1000,0)),"") في إصدارات Excel القديمة يجب إدخال المعادلة كمصفوفة بالضغط على: Ctrl + Shift + Enter أما في Excel 365 وExcel 2021 فيكفي الضغط على Enter فقط، ولا حاجة لاستخدام Ctrl + Shift + Enter.
    2 points
  34. جما لله علي سلامتك أخي وحبيبي الفاضل خليفة
    1 point
  35. الحل الثاني أفضل ولكن بتعديل بسيط فأنت لا تريد إبقاء النموذج مفتوح لعدم وجود أي عمل فيه لذا فالأفضل أن يكون الأمر بهذا الشكل Private Sub cmdIndex_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single) On Error GoTo ErrorHandler Dim strChr As String strChr = ProcessArabicLetters(CInt(y / Me.cmdIndex.Height * (UBound(GetLettersArray) + 1))) If Me.cmdIndex.Caption <> strChr Then Me.cmdIndex.Caption = strChr End If ErrorHandler: MsgBox (" !!!!! عفواً ،،،، لا توجد بيانات"), vbOKOnly + vbMsgBoxRight, "ملاحظـة" DoCmd.Close acForm, Me.Name End Sub وهناك طرق أخرى لتفادي هذه المشكلة منها التحقق من وجود بيانات في الجدول المطلوب قبل فتح النموذج وذلك من حدث إستدعاء النموذج (زر الأمر أو النقر على أحد المفاتيح) أو في حدث الفتح أو التحميل لنموذج البحث الطرق كثيرة وعلى كل شخص إعتماد مايراه مناسباً له تحياتي
    1 point
  36. كيف يعمل الذكاء الصناعي محاضرة جميلة جدا و بسيطة من خلالها هنفهم كيف يعمل الذكاء الصناعي
    1 point
  37. كنت اتمني من أساتذتنا الاعضاء المشاركة و تبادل المعرفة حول هذا الموضوع المهم و لكن سأفعل ما بوسعي مع المحاضرة المهمة جدا هي (الذكاء الإصطناعي فرصة ام تهديد)
    1 point
  38. شكراً لك أخي أحمد على مرورك هذا لأن لديك نسخة أوفيس واحدة فقط ، بينما في جهازي فأنا لدي نسختين مثبتتين في الويندوز ، الأولى 2024 - 64 بت ، والثانية 2010 - 32 بت . فلو كان لدي نسخة واحدة ما كانت ستظهر لدي وكان الأمر في جهازي سيكون مطابقاً لما في جهازك . هذا كل ما في الأمر 😇 .
    1 point
  39. على رأي المعلق الرياضي رؤوف خليف شنو هاااااذااااا منتهى الروعة والجمال الأداة بوضعها الحالي لاتشوبها شائبة ولكن لدي ملاحظة وإقتراح الملاحظة هي إختلاف شكل رسالة التنبيه بإختلاف طريقة حفظ التعديل كما في الصورة المتحركة التالية أدري أن الماكرو يقوم برفع خطأ برقم ونص مخصصين ولكن لاحظ رقم الخطأ في أول رسالة (عند النقر على زر الحفظ) سنجد أن رقمه 3939 رغم أن الماكرو يرفع خطأ بالرقم 9991 والرقم 9992 فهل بالإمكان أن يتم رفع رقم الخطأ من الماكرو وإعتراضه عن طريق الكود ليتم معالجته بإستخدام VBA ؟ أما المقترح أن يتم إستخدام مربعات قائمة (قابلة للتحديد المتعدد) بدلاً عن مربعات التحرير والسرد وهذه الصورة ستوضح الفكرة في الأخير وكما أسلفت فإن الملاحظة والمقترح هما من باب مشاركة الأفكار ولا ينقصا من روعة الأداة بوضعها الحالي بشيئ تحياتي
    1 point
  40. تم تعديل الملف بإضافتين بسيطتين ، وتصحيح وظيفة موجودة مسبقاً :- إضافة ميزة الكشف عن حالة الجدول عن اختياره من قائمة الجداول . إضافة ميزة تطبيق الحماية أو حذفها عن جميع الجداول مع استثناء جداول محددة في سطر الإستدعاء . تصحيح وظيفة "تضمين التحقق من وجود الكائن" ، والتي تم تعديلها لتعمل فقط عند اختيار جداول محددة من القائمة المنسدلة .
    1 point
  41. وأنا قمت بحذفه احترازاً ، لا عليك 🤗 وهنا الموضوع توسع بشكل يفوق عقلي الصغير , ليتعامل مع القواعد المقسمة مثلاً .. أو التعامل مع الاستعلامات ( تحديث أو حذف ) .... إلخ
    1 point
  42. وحتى لا يتبادر إلى ذهن أي شخص فكرة أنني أملك الحل .. فقد يظن البعض أني أُمهد لموضوع جديد أو فكرة جديدة .😣. فوالله أني لم أتعثر حتى بطرف الخيط ، ولم أستدل إلى فكرة حتى لو لم تكن ناجحة 😇
    1 point
  43. لو عندي شيت به عمود به بعد الخلايا بمعادلات واخري قيم محتاج اميز الخلايا الي فيها المعادلات واميز الخلايا التي تحتوي على قيم
    1 point
  44. شكرا .. شكرا .. شكرا .. يوافي حق هذا الإبداع .. ما شاء الله زدت الحلاوة حلا ما شاء الله عليك 🌼 رزقك الله خير ما في الدنيا وأفضل ما في الآخرة .. وأحسن الله إليك ولكل من تحب .. 💖 يظهر من مشاركة الأستاذ @أحمد العيسى أن هناك العشرات من الأيقونات التي لم يتم إضافتها بعد 😅🖐️ وأيضا هناك ملاحظة بسيطة جدا .. وهي أنه بعد تعيين الأيقونات والضغط على زر المعاينة فإن التغيير لا يظهر مباشرة إلا بعد أن يتم حفظ القائمة .. حفظك الله 🙂
    1 point
  45. استبدل الدالة الكاملة السابقة ، بهذا التعديل :- Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim lastRow As Long Dim cell As Range Dim pctCol As Range Dim pct As Double Dim grade As String Dim i As Long Set ws = Me lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row If lastRow < 2 Then Exit Sub Set pctCol = Intersect(Target, ws.Range("F2:F" & lastRow)) If Not pctCol Is Nothing Then On Error GoTo CleanUp Application.ScreenUpdating = False Application.EnableEvents = False For Each cell In pctCol If IsNumeric(cell.Value) And cell.Value <> "" Then pct = CDbl(cell.Value) Select Case pct Case Is >= 92.1: grade = "ممتاز مع المرتبة" Case Is >= 90.1: grade = "ممتاز" Case Is >= 85.1: grade = "جيد مع مرتبة الشرف" Case Is >= 75.1: grade = "جيد جدا" Case Is >= 65: grade = "جيد" Case Is >= 50: grade = "مقبول" Case Else: grade = "راسب" End Select ws.Cells(cell.Row, "E").Value = grade End If Next cell With ws.Sort .SortFields.Clear .SortFields.Add Key:=ws.Range("F2:F" & lastRow), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal .SortFields.Add Key:=ws.Range("B2:B" & lastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange ws.Range("A1:M" & lastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With For i = 2 To lastRow If ws.Cells(i, "B").Value <> "" Then ws.Cells(i, "A").Value = i - 1 End If Next i CleanUp: Application.EnableEvents = True Application.ScreenUpdating = True End If End Sub الملف بعد التعديل :- لابلبلبلبلبلب.xlsm
    1 point
  46. ملاحظتك صحيحة أخي وأستاذنا عبدالله ، جزاك الله خيراً على ذكرها . ولكني حين قمت بالتطبيق ارتأيت وبما أنه العمود M هو معادلة مقرونة برقم الصف فلم ألتفت لها ، ولم ألق لها بالاً -رغم تجربتي لها- ولكن لا يضر أن نقوم بالتصويب ..
    1 point
  47. أخي منتصر ، فعلاً قد يؤدي إلى تعطيل قاعدة البيانات وتلفها ، إن كان التعديل غير مدروس بعناية وتركيز .. فعلى سبيل المثال لو تم تغيير قيمة داخل جداول النظام فقد يحدث خلل في القاعدة وعدم عملها ، فما بالك بقلب آكسيس نفسه 😇 . وهذا ما سأعتمده بنشره قريباً إن شاء الله ، ولكن كما ترى فردود التفاعل بالتجارب والإفادة غير مشجعة على الإطلاق 😅 . آكسيس قوي بما يكفي فعلاً قولاً واحداً في تأمين نفسه - تجاهل عبثي به - فتجاربي كانت من باب الفضول وليس له أي هدف شخصي ، إلا من باب التعلم . ولهذا لم ولن أطلق أي أداة تساعد على كسر هذه الثقة التي لدى 95% من مصممي قواعد البيانات ومطوري البرامج . عن نفسي وأنا ما زلت أتعلم كانت محاولاتي هي نقل آكسيس إلى بُعد أبعد بكثير من كونه حاوية بيانات رهيبة . أحترم جميع الآراء ، وأعتذر من الجميع عن أسلوبي وطريقتي في العمل سابقاً 🥰 .
    1 point
  48. هل يمكن إضافة خيار : (ربط تلقائي للقاعدة الأمامية بالقاعدة الخلفية) ؟ أرسلته لك على الخاص .. وشكلك حليتها بكل سهولة ..
    1 point
  49. السلام عليكم اخوانى و اخواتى اليكم نتيجة لعام 2007 و لمدة 178 عام قادمين بعد 2007 باليوم و الشهر و السنة اليكم هذا الملف صغير الحجم و ارجو ان يفيدكم Calendar_for178_years__version_1_.zip
    1 point
×
×
  • اضف...

Important Information