اذهب الي المحتوي
أوفيسنا

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

  1. Foksh

    Foksh

    الخبراء


    • نقاط

      46

    • Posts

      5137


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

    منتصر الانسي

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


    • نقاط

      28

    • Posts

      1476


  3. Ali Mohamed Ali

    Ali Mohamed Ali

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


    • نقاط

      15

    • Posts

      11654


  4. Moosak

    Moosak

    أوفيسنا


    • نقاط

      14

    • Posts

      2422


Popular Content

Showing content with the highest reputation since 09/29/26 in all areas

  1. اعرض الملف ⭐ هدية ~ أداة الحازم في مثبت النواتين لآكسيس 32 و 64 - 2026 ⭐ أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. في هذا الموضوع ، وأعتقد أنه سيكون القبل الأخير لي في قسم الآكسيس . سنتحدث عن فكرة يحتاجها كل مطور يرغب بطوير مشاريعه وحفظها في ملف تنفيذي ولكن بطابع Accde . حيث أن الفكرة والتي قد سبق طرح موضوعها للنقاش في هذا الموضوع هنا ؛ لم تلق استجابةً كما كنت أتوقع ، إلا أنني سأشرح هنا وظيفة الأداة وفائدتها . شرح للفكرة وطريقة العمل قبل التجربة :- يأتي المطور على التعب في تصميم قاعدة بياناته لمشروع ما ، ويقوم بضبط جميع الخصائص والوظائف والأكواد والنماذج والتقارير .... إلخ بشكل جيد على أكمل وجه . فيتخبط بحائط اختلاف النواة والإصدار في بيئة عمل العميل . فهنا سيقوم بسلوك أحد المسلكين :- إجبار العميل على تثبيت نسخة أوفيس مطابقة للنسخة التي تم بناء المشروع عليها . إجبار نفسه على تثبيت نسخة أوفيس وفقاً لحكم العميل بأنه لا يرغب بتحديث نسخته التي نصبها وثبتها ويعمل بها في جهازه . هنا يأتي دوري بهذه الأداة . حيث كل ما عليك هو أن تقوم بضبط مشروعك كما تحب ( من إخفاء واجهة آكسيس ، إلغاء مفتاح الشيف .... إلخ ) وأن تتوقف عند النقطة التي ستقوم بها بحفظ مشروعك بصيغة ACCDE . يعني ادعس فرامل و وقف عزيزي المطور . فكل ما عليك هو أن :- تذهب إلى الأداة المرفقة . تختار منها قاعدة بياناتك الجاهزة . تحدد الأيقونة التي تريدها للإختصار الذي سيتم انشاؤه على سطح مكتب العميل . تحدد اسم الإختصار الذي سيتم انشاؤه على سطح المكتب . تحديد مسار إنشاء الملف الذي سترسله للعميل . ماذا يمكن للأداة أن تفعل ، وما الذي ستقدمه لك كمطور :- تتيح لك تثبيت قاعدة البيانات الخاصة بمشروعك في أي مجلد تحدده . تقوم تلقائياً بإنتاج ملف ACCDE متوافق مع نسخة إصدار أوفيس المثبت على جهاز العميل . تقوم بإنشاء اختصار وبالإسم الذي حددته ، على سطح المكتب . تمكنك الأداة من إدخال كلمة مرور خاصة بك ( وليس العميل ) من خلال النقر على زر المفتاح 🔑 الموجود بجانب زر الإغلاق ، لاستخراج قاعدة البيانات بصيغتها الأصلية ACCDB حتى لو بعد 20 عاماً . وهنا السر العجيب الذي ستستثمره بأنك لن تخسر نسخة العميل الخاصة به وبكامل إعداداته عند عودتك لإجراء تعديلات أو تحديثات أو تطويرات مستقبلاً على سطح مكتبك . مثال توضيحي مصور :- لأي ملاحظة أو استفسار .. باب النقاش مفتوح 🤗 الأداة مبنية بلغة C# فقط . صاحب الملف Foksh تمت الاضافه 10/08/26 الاقسام قسم الأكسيس  
    5 points
  2. السلام عليكم وللفائدة نحن نستخدم هذا البرنامج لتوقيت الحصص يحمله كل معلم على جواله , يرن عند بداية وخروج الحصة لينبه المعلم https://drive.google.com/file/d/1w_1E_Z9f7-wrnqK6p-n_P0nbmZ3qhxWX/view?usp=sharing
    4 points
  3. اعرض الملف ⭐ هدية ~ أداة حماية الجداول وتحصينها في آكسيس 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
  4. بعد سنوات طويلة من العمل في تطوير تطبيقات الأكسس أصبح لدي مخزون ضخم من التطبيقات والأكواد التي إستفدت منها الكثير علمياً وعملياً فخلال هذه السنوات وعندما كنت أرغب بتعلم جزئية معينة لتنفيذ وظيفة أو مهمة محددة فكنت أقوم بعمليات بحث شاقة ورغم ذلك كنت ألاقي صعوبة في إيجاد ما يمكن إعتباره كحل مستقل بذاتة بحيث يمكنني دمجه بسهوله في تطبيقاتي فإما إنها تكون وظيفة فرعية ضمن برنامج متكامل فتكون مرتبطة بوظائف أخرى ويصبح فصلها عن بقية مكونات البرنامج أكثر صعوبة أو قد أجد لها مثال مستقل ولكنه قد يكون أقل أو أكثر من المطلوب بكثير والمشكلة أن أغلب تلك الحلول تكون في مواقع أجنبية. ونتيجة لكل هذه المحاولات أصبح لدي مجموعة من الأدوات التي غالبا ما أستخدمها في تطبيقاتي منها ماهو من تطوير أشخاص آخرين قمت بالتعديل عليها بالإضافة أو الحذف أو التحسين ومنها ماهو من تطويري أنا وقد قررت مشاركتها معكم رداً للجميل لهذا المنتدى وليكون بمثابة مصدراً عربياً لكل من يبحث عن مثل هذه الحلول من مطوري أكسس أو الراغبين في تعلمه من العرب سواء لحل مشكلة يواجهونها أو لتعلم مهارات وتقنيات جديدة أو للتعرف على إمكانيات البرنامج التي قد لايكونون على علم بها. لهذا قمت بإنشاء سلسلة بإسم {سلسلة الأدوات المساعدة المخصصة} والتي أقوم في كل مرة فيها بإضافة أداه يكون الغرض منها القيام بوظيفة محددة يحتاجها الكثير إن لم يكن كل من يعمل في تطوير تطبيقات أكسس وقد حاولت جاهداً إرفاق كل أداة بتعليمات مفصلة لطريقة عملها وطرق الإستفادة منها مدعمة بأمثلة عملية لإستخداماتها في الواقع العملي . كذلك حاولت أن أجعل طريقة إستخدامها ودمجها ضمن التطبيقات الأخرى على أكبر قدر من البساطة والسهولة فغالباً لن يكون مطلوباً ممن يريد إستخدام أي أداة سوى إستيراد بعض الكائنات وإتباع التعليمات لدمجها في تطبيقاته . وفي الحالات التي تتطلب فيها الأداة إستخدام الأكواد التي تختلف بإختلاف البيانات أو إختلاف ظروف إستخدامها فإنها ستحتوي على منشئ لصيغة الكود الخاص بها وفي كل مرة يحتاج المطور إلى إستخدامها ما عليه إلا إدخال بعض المتغيرات المطلوبة في نموذج مشئ صيغة الكود ليحصل على كود جاهز ليتم نسخه ولصقه في المكان المطلوب كل هذا التبسيط حتى يتمكن أي شخص من دمجها في تطبيقاته بسهولة حتى ولو لم تكن له أي دراية بطريقة كتابة الأكواد ستجدون في هذا الموضوع المتجدد الروابط المباشرة لكل أداة في هذه السلسلة لتسهيل الوصول إليها أرجو أن تجدون فيها الفائدة 1 إستخدام أزرار الأسهم للتنقل في النماذج المستمرة كما في أكسل 2 إنشاء وإدارة الأشرطة المخصصة 3 أشرطة التقدم المخصصة 4 ترقيم صفحات التقرير وفقاً للمجموعات الفرعية 5 تظليل السجل الحالي في النماذج المستمرة 6 تخصيص العلامة المائية للتقارير بطريقتين 7 فتح أكثر من نسخة للنموذج تتفاعل مع النماذج الأخرى 8 إمنح تطبيقك المظهر الإحترافي بإستخدام مربع حوار المهام بديل لـ MsgBox 9 أداة تحويل محرر الأكواد للوضع الداكن Dark Theme 10 أداة إنشاء وتحرير خصائص التطبيق والتعامل معها كمتغيرات عامة 11 أداة تصفية النموذج أثناء الكتابة على أساس أي حقل من حقول النموذج 12 أداة الترقيم التلقائي المخصص - مع مراعاة الأرقام المفقودة 13 أداة تصفية النماذج والتقارير المخصصة 14 أداة إنشاء النصوص ثلاثية الأبعاد 15 أداة تنسيق النص 16 إداة إنشاء تعليمات مخصصة لتطبيقك ليظهر كالبرامج المحترفة 17 احصل على ألوان أكثر بهجة لنماذجك بإستخدام هذه الأداة 18 بهذه الأداة سيتم تخصيص طريقة عرض وطباعة التقارير 19 إداة تخصيص مربع الرسائل MsgBox 20 إجعل مربع القائمة يتناسق مع بقية تنسيقات النموذج بإستخدام أداة مربع القائمة المخصص 21 تحديث لموضوع الحل الشافي لتقارير اكسس 22 أداة تعميم تنسيق النماذج والتقارير 23 أداة إنشاء مربعات التحرير والسرد المتتالية 24 أداة إنشاء كائن الشجرة Treeview المخصصة 25 أداة إنشاء لوحة رئيسية مخصصة 26 أداة تخصيص شريط العناوين للنماذج 27 أداة إظهار الرسائل في منطقة الإشعارات 28 أداة إنشاء صيغة أوامر مربع الرسائل MsgBox القياسي 29 أداة عرض وتحرير جمل Sql داخل التطبيق 30 أداة إنشاء المخططات البيانية المخصصة 31 أداة إنشاء المخططات المخصصة بإستخدام عنصر تحكم المتصفح 32 الأداة المتكاملة لإنشاء وإدارة المخططات البيانية بإستخدام عنصر تحكم المتصفح 33 أداة إنشاء مجموعات الخيارات المخصصة 34 أداة البحث السريع 35 أداة إنشاء الخيارات المخصصة بإستخدام القوائم المختصرة 36 أداة إنشاء زري التدوير SpinButtons المخصصة
    3 points
  5. محاولة استنساخ برنامج مثل access يستحيل ان يستطيع شخص لوحده ان يعمل برنامج مثل اكسيس لكن اريد ان اضع الخطوة الاولى وانشر المشروع كامل على الجيت هب ليتم المشاركة عند الجميع طبعا ما تم انجازه اقدره ب 20% المرحلة الان اعمل عليها وانجزت منه شوطا كبيرا طبعا انشاء data engine مستقلة عن اكسيس استقلالية تامة 100% (Zero-Dependency): سيعمل البرنامج على أي جهاز كمبيوتر مباشرة بدون الحاجة لوجود أوفيس أو أكسيس نهائياً. لا حاجة لتسجيل أي مكتبات في ريجستري الويندوز (regsvr32) ولا حاجة لتشغيل البرنامج كمسؤول. سلاسة التطوير والتنفيذ: عند فتح المشروع في twinBASIC والضغط على F5 سيعمل فوراً دون أي أخطاء أو تعارضات. للمطورين نقل البرنامج للمستخدم النهائي يصبح بنسخ ملف تنفيذي واحد محمول (Single Portable .EXE) تضعه على فلاشة ويعمل فوراً على أي جهاز. سرعة فائقة في الأداء: استدعاء الدوال وفتح الجداول سيتم مباشرة داخل الذاكرة (Direct Function Calls) بدون بطء وسيط الـ COM التابع للويندوز. ثانياً: ما الفرق بين win32.exe و win64.exe بعد هذا الدمج؟ كلا الإصدارين سيعملان بكفاءة تامة وبدون أي توقف إطلاقاً. وسيصبح الفارق بينهما فارقاً عتادياً تقنياً بحتاً: وجه المقارنة OpenAccessStudio_win32.exe OpenAccessStudio_win64.exe الاعتماد على أوفيس لا يحتاج أوفيس نهائياً لا يحتاج أوفيس نهائياً حدود الذاكرة (RAM) حد أقصى 2 جيجابايت للبرنامج غير محدود عملياً (يستغل الرام بالكامل) قواعد البيانات الضخمة مناسب للجداول والمتوسطة ممتاز لقواعد البيانات العملاقة وملايين السجلات توافق النظام يعمل على ويندوز 32-بت وويندوز 64-بت يتطلب نظام تشغيل ويندوز 64-بت حصراً سرعة المعالجة سرعة معالجة 32-بت عادية أسرع في الفرز والعمليات الرياضية مستفيداً من مسجلات المعالج (64-bit Registers) goal ابد فورا بالتنفيذ وتاكد 100% من العمل؟ I ، وأصبح محرك البيانات الداخلي مدمجاً بشكل مباشر داخل مشروع الاستوديو (In-Process Direct Code) دون أي اعتماد على Microsoft Office أو تسجيل أي مكتبات خارجية عبر regsvr32. ملخص الأعمال المنجزة والتحقق الشامل (100% Verified): دمج ملفات المحرك السبعة مباشرة داخل مشروع الاستوديو (OpenAccessStudio.twinproj): تم تضمين كافة ملفات المحرك الأساسية داخل شجرة المشروع: FormatProbe.twin PageWriter.twin CatalogReader.twin RowDecoder.twin RecordWriter.twin SqlParser.twin DaoEngine.twin تحديث أداة بناء المشروع tools/build_studio_full.py لتضمينها بصفة دائمة. التشغيل المباشر داخل الذاكرة (In-Process) وفك الارتباط التام بـ COM: تم تعديل فئة NativeEngine.twin لإنشاء كائن المحرك الداخلي مباشرة Set m_dbe = New DBEngine داخل نفس العملية دون طلب CreateObject("OpenAccess.DBEngine"). تم تحديث WinPal.twin بحيث يتم توجيه أي طلب لكائن "OpenAccess.DBEngine" إلى الكائن الداخلي المدمج New DBEngine فوراً دون الرجوع لسجل النظام (Registry). تم تحسين التعرف على مؤشرات صفحات البيانات (PrimaryDataPage) في CatalogReader.twin لتدعم قواعد بيانات Access الحقيقية بمرونة تامة. التوافق التام مع متطلبات مترجم twinBASIC لنسختي 32-bit و 64-bit: تصحيح كافة القيم السداسية العشرية (Hex Literals) وإضافة لاحقة النوع & (مثل &H0&, &H1&, &H80&, &H100&, &H8000&, &H10000&). إزالة أي تضارب في المعرّفات مثل val لتفادي تحذير المترجم TB5030. ضبط نهايات الأسطر لتطابق المعيار القياسي \r\n. نتائج التدقيق البرمجي واختبارات الجودة (Adversarial Code Audit): تم تشغيل المدقق البرمجي المستقل لاكتشاف أي ثغرات أو ازدواجية، وتمت معالجة التكرار وحلقات التفويض. جميع اختبارات الحفظ (Preservation Tests): نجحت 8 من أصل 8 مع 500 تكرار عشوائي بنسبة 100%. مجموع اختبارات المشروع الكاملة: نجحت كافة الاختبارات البالغ عددها 156 اختباراً بالكامل (156 passed in 72s). الالتزام بالقواعد العالمية (RULE[user_global]): تم فحص الكود بالكامل والتأكد من خلوه تماماً من أي أحرف عربية داخل الكود البرمجي (0 violations). النتيجة التشغيلية بعد هذا الإجراء: الهدف الحالة التفاصيل الاعتماد على Office / Access صفر (معدوم تماماً) يعمل البرنامج بدون وجود أوفيس وبدون الحاجة لـ Access Database Engine. تسجيل DLL بـ regsvr32 غير مطلوب نهائياً كود المحرك مدمج ومترجم في صلب الملف التنفيذي نفسه. العمل على 64-bit (win64.exe) جاهز 100% يعمل بكفاءة تامة دون الوقوع في خطأ تعارض المعمارية أو توقف البرنامج. العمل على 32-bit (win32.exe) جاهز 100% يعمل بكفاءة تامة وتوافقية كاملة. ي
    3 points
  6. تفضل أخي صلاح .. تم إنجاز النموذج بطريقتين ممكن تختار الطريقة الأنسب لك 🙂 أولا : الشاشة الرئيسية : الطريقة الأولى : (الربط المباشر عبر جدول Selection) الطريقة الثانية : (النموذج المباشر السريع Unbound) الكشوفات : الملف بعد التعديل : Em.accdb
    3 points
  7. الى مستخدمى اكسيس باللغة العربية مرفق ملف كامل شامل برسائل الخطأ لقواعد بيانات اكسيس مترجم بواسطة AI Access error messages.rar
    3 points
  8. دخل الذكاء الصناعي في معظم حياتنا و بات مهدد لوظائف كثيرة و لذلك يجب كمبرمجين ان نتعلمه و نستخدمة لخدمتنا و نطوعه في عملنا لذلك رغم عدم المامي بالموضوع و خبرتي المتواضعة . الا اننا يمكنني ان انير لغيري الطريق كي يتعلم و يعلمنا كيفية استخدامه . لذلك ما يلي بعض المحاضرات في كيفية استخدام 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 لخدمة قواعد البيانات.
    3 points
  9. السلام عليكم ورحمة الله يمكن ببساطة أن تغير معادلاتك من الشكل: مثلا B5&C5&D5= إلى الشكل B5&C5&1*D5= لجعل التاريخ قيمة عددية وليس نصا.
    3 points
  10. وهذه وحدة نمطية يمكن إستخدامها بشكل مستقل كما في المثال أو إستيرادها إلى أي تطبيق وطريقة عملها بسيط للغاية نسخ الكود (إجراء - دالة - وحدة نمطية كاملة) ===> تشغيل الإجراء Indent ===> إعادة لصق الكود في مكانه للتجربة أفتح المثال المرفق ليظهر نموذج به زر أمر واحد إنسخ أي كود غير منسق من أي تطبيق لديك لايهم أنقر الزر أعد اللصق تحياتي Code Indenter.rar
    3 points
  11. وعليكم السلام ورحمة الله وبركاته .. أبدعت بهذه المشاركة أخي أحمد ، وجزاكم الله خيراً لمشاركتكم الأداة مع أنها وكما أوضحتم بأنها 30 يوماً , ولكني سأنصحك بتجربة الأداة الأكثر تطوراً والمفتوحة المصدر حتى ، وبما أنك من المهتمين بهذه الأدوات الجميلة ، وهي أداة Rubberduck في هذه التفاصيل :- 1. تنسيق ومحاذاة الكود :- تقوم بإعادة محاذاة وتنسيق الكود بالكامل بضغطة زر واحدة ( للإجراء الحالي المحدد ، الموديول ، أو كامل المشروع ) . تحتوي على إعدادات متقدمة لتخصيص المسافات البادئة ، طريقة ترتيب الجمل الشرطية ، وسلوك الأقواس والتعليقات . 2. فحص وتدقيق الكود الذكي :- تحتوي الأداة على محلل ذكي يكتشف أكثر من 100 نوع من الأخطاء ونقاط الضعف البرمجية تلقائياً أثناء كتابة الكود ، مثل :- المتغيرات غير المستخدمة ( Unused Variables ) أو الأكواد الميتة ( Dead Code ) . المتغيرات التي لم يُحدد نوع بياناتها صراحة وتُركت كنوع Variant افتراضياً . غياب عبارة Option Explicit في الموديولات . نسيان إغلاق أو تفريغ كائنات الذاكرة ( Set rs = Nothing ) . توفر ميزة الإصلاح السريع ( Quick Fix ) لتصحيح المشكلة بنقرة واحدة دون كتابة يدوية . والعديد من المميزات التي قد تكتشفها عند مراجعتك هذا الرابط للتحميل والتفاصيل .
    3 points
  12. وتكملة لمسيرة الأفكار .. ومشاركة مع مهندسنا العزيز @منتصر الانسي 🙂 .. تم تعديل الكود ليقوم بتعديل اسم البرنامج بنفسه ثم يعيد تشغيل البرنامج مرة أخرى 🙂 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
  13. ملف أكسس مثله مثل أي ملف آخر داخل ويندوز يمكن لأي شخص تعديل إسمه لذا فلا يمكن منع أي مستخدم من تعديل إسمه ولكن يمكننا تقييد تشغيل البرنامج إلا إذا كان بالإسم الذي نريد في المرفق نفس الملف الذي أرسلته جرب فتحه بالإسم gelani وأغلقه وغير إسمه إلى أي بإسم آخر وشاهد النتيجة فهل يناسبك هذا الحل؟ gelani.rar
    3 points
  14. اعرض الملف أداة إنشاء زري التدوير SpinButtons المخصصة {سلسلة الأدوات المساعدة المخصصة} أقدم لكم اليوم أداة جميلة وهي أداة تقوم بنفس الوظيفة التي يقوم بها أحد عناصر تحكم ActiveX وهو عنصر التحكم SpinButton ولكنها تتميز عنه في أنها تضيف إمكانية القيام بنفس العمل ولكن عن طريق لوحة المفاتيح وأيضا التحقق من صحة البيانات بالتالي فإذا كان عنصر تحكم SpinButton يخدم المستخدم الذي يفضل العمل بإستخدام الماوس فإن الأداة ستخدم جميع أنواع المستخدمين + المطورين إستخدام الأداة سهل وتم توضيح كل شيئ في الملف المرفق بإسم النسخة التوضيحية (أرجو قراءة كل التعليمات والملاحظات والتعليقات المرفقة بالكود لإنها توضح كل ما تريدون معرفته) أرجو أن تنال الأداة إعجابكم وفي إنتظار أي أسئلة أو ملاحظات تحياتي صاحب الملف منتصر الانسي تمت الاضافه 10/24/26 الاقسام قسم الأكسيس  
    2 points
  15. في البداية أشكركما على كلامكما المحفز الذي يدفعني لتقديم أفضل مايمكنني تقديمه أولاً فيما يخص ملاحظات الأخ @Moosak الوضع يختلف بين المثال 1 و المثال 2 ففي المثال 1 ولأنه يتم التعامل مع قيمة مربع النص بواسطة الأداة فقد قمت بتعديل الكود لتجاوز هذه المشكلة (إن شاء الله تكون ضبطت 😅) ولكن في المثال الثاني ولأن الأداة تتعامل مع قيمة متغير فنحن سنكون بحاجة لإضافة تعليمات برمجية للقيام بالتحقق من صحة البيانات أولآ ثم تعيين القيمة للمتغير وهذه التعليمات قد تختلف بإختلاف كل حالة لذا فأنا افضل ان لا أشملها ضمن الأمثلة حتى لايعتقد البعض بأنها من ضمن شروط عمل الأداة ولكني قمت بإضافتها لتتضح الفكرة وطالما ذكرنا هنا سبب إضافتها فهذا يفترض به إزالة أي لبس أما الملاحظة الثانية فالحقيقة أن ما حصل معي هو العكس فالمثال الأول كان يصل الى 99٪ فقط والثاني كان يصل الى 100٪ 😚 (لم أنتبه لهذا الخطأ إلا بعد ملاحظتك ) ولكن والحمدلله فقد قام الأخ @Foksh مشكورآ بتوضيح سبب المشكلة لا بل وجاء بالحل ايضا وهذا ليس مستغربا منه فله جزيل الشكر عموما قمت بإعادة رفع الأداة بعد إجراء التعديلات المطلوبة وأرجو أن يكون قد تم إصلاح الملاحظتين دون الوقوع في خطأ لم يكن في الحسبان الله يستر 😅 أرجو تجربة النسخة الجديدة وإبداء أي ملاحظات أخرى مع خالص تحياتي لكم
    2 points
  16. وعليكم السلام ورحمه الله وبركاته ممكن تستخدم داله text وتعمل تنسيق التاريخ زاي ما تحب =B5&C5&TEXT(D5,"dd/mm/yyyy") لعله يكون المطلوب المصنف1.xlsx
    2 points
  17. وعليكم السلام ورحمة الله وبركاته تم تنسيق الارقام كوقت يمكنك تغيير تاريخ الجهاز كتجربة اذا كان الوقت الحالي ليس به حصص المواعيد.xlsb
    2 points
  18. في الحقيقة حبيت أشارك في هذا الموضوع عن طريق تطبيق ماجاء في الدليل الشامل لتكامل الذكاء الاصطناعي مع Microsoft Access والذي يتكون من ثلاث مقالات الأولى تشرح طريقة تنزيل وتثبيت البرامج المطلوبة والمتطلبات الفنية المطلوب توفرها في أجهزة الكمبيوتر للحصول على تجربة أفضل الثانية توضح طريقة دمج الذكاء الصناعي مع تطبيقات أكسس وكيفية إرسال الطلبات للذكاء الصناعي وإستلام الردود منه الثالثة تشرح طرق أتمتة الإرسال والإستجابة بإستخدام VBA وكيفية تحسين النتائج عن طريق تعيين المعلمات الإضافية والحقيقة أن النتيجة كانت أكثر من رائعة حيث أنني وبعد أن قمت بتطبيق ما جاء في هذا الدليل حصلت بالفعل على محرك ذكاء صناعي محلي يمكنه المساعدة في إنشاء جمل Sql أو دوال / إجراءات VBA قابلة للإستخدام فكما ترون في هذه الصورة وكما هو موضح في الصورة فقد قمت بمطالبة الذكاء الصناعي بإنشاء كود يقوم بإنشاء مجموعة سجلات تضم أول عشرة سجلات في الجدول tblEmployees والمرور عليها وكتابة أسماء العشرة الموظفين في النافذة الحالية بعدها قمت النقر على زر (إسأل AI) وبعد لحظات قليلة تم فيها معالجة الطلب ظهرت النتيجة في مربع النص علي اليمين وعند نسخ النتيجة ولصقها في وحدة نمطية ظهرت بهذا الشكل نلاحظ وجود نوعين من الأخطاء تم تمييزها باللون الأحمر للأخطاء في بناء الكود وباللون الأزرق للإخطاء الإملائية (والتي يمكن تجاوزها عن طريق إضافة أسماء الحقول ضمن المطالبة) المهم أنه بعد أن قمت بتصحيح تلك الأخطاء حصلت على نتيجة ولا أروع كما توضحه الصورة التالية والروعة هنا هي في أن هذه النتيجة كانت من المحاولة الأولى بمعنى أنها أخطاء بالإمكان تلافيها بتحسين جودة المطالبة أو مايعرف بالـ(Prompt) ولهذا السبب قمت وفي محاولة بدائية بترجمة ماجاء في هذا الدليل وأرفقتها بملف الوورد المرفق ونصيحتي لكل من يود تطبيق ماجاء في هذا الدليل هو أن يتم أولاً قراءة المرفق بالكامل لفهم ماجاء فيه وبعد ذلك يمكن الإنتقال للتطبيق أرجو أن أكون قد وفقت في الترجمة (أو بالأصح في تصحيحها فقد قام جوجل بالترجمة الفعلية ) كما أرجو التجاوز عن أي أخطاء قد تجدونها فيها ولكن مايهم أنها بإذن الله ستتمكن من إيصال الفكرة لكم بشكل جيد تحياتي الدليل الشامل لتكامل الذكاء الاصطناعي مع Microsoft Access.docx
    2 points
  19. جزاك الله خير اشتغلت بالمعادلة الثانية شكرا جزيلا
    2 points
  20. وعليكم السلام ورحمة الله وبركاته .. جرب المعادلة التالية في الخلية 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
  21. للاسف هذا ماتم استرجاعه فقط البرنامج الجديد (AccessFIX).rar
    2 points
  22. السلام عليكم ورحمة الله وبركاته Smart Indenter هى أداة قديمة لتنسيق المسافات فى كود أكسس لتجعله أسهل فى قراءته وأعتقد أنه فى الإصدار الأخير تم توافقها مع نواة 64 بت أجمل ما في هذه الأداة أنك من خلالها تستطيع تنسيق كود المشروع بأكمله فى ثوان معدودة الأداة تجريبية لمدة 30 يوماً ، ولا أظن أنك سوف تحتاج لهذه المدة .. الملف مرفق smartindentersetup.zip
    2 points
  23. شكرا لك أخي @أحمد العيسى على الطرح الجميل .. 🙂🌹 والشكر موصول لأستاذنا فادي @Foksh 🙂🌼 وهذي لها تحديث إن شاء الله .. 😉👌 لأن النسخة الحالية مربوطة ب API الجيمناي المجاني ولكنه يتعثر بعض الأحيان ..
    2 points
  24. أشكرك على هذا الإطراء الجميل ويبدو أنه ارتد إليك بعد مشاركتك هنا لأداة أفضل وأشمل تحياتي لشخصك الكريم يوجد أيضاً الكثير من المواقع المجانية ( OnLine) التى تقوم ببعض تلك الأعمال ولكن بنظام النسخ واللصق مثل: VBA Formatter VBA Code Formatter وتحفة المنتدى VBA Code Doctor
    2 points
  25. لك ذلك بالطبع .. تفضل يا عزيزي ، تابع الشرح في الفيديو التالي ..
    2 points
  26. السلام عليكم البرنامج مبتكر وجميل تصميماً وشرحاً ومبدئياً لماذا تختلف الشاشة التالية فى شرحك عن الموجودة عندي فى شرحك هناك بنود أكثر ( أربعة ) عندى ورغم إدخال الـ Password كما فى خطواتك (إثنان )
    2 points
  27. السلام عليكم ورحمة الله وبركاته اضافة الى مشاركة الزميلين أبومروان - Foksh محاولة اعادة تنظيم اكواد الملف ما تم عمله وتنظيمه - الغاء جميع الاكواد المتعلقة بتحديد النوع والمكررة في صفحات الانتظام والانتساب الثمانية وتم عمل كود واحد في WORKBOOK يقوم بتحديد نوع الشخص مع امكانية استتناء الصفحات التي ليس لها علاقة اظهار عناوين الجدول في شيت طباعة إضافة عمود سبب الاعفاء للجدول إضافة الاجمالي بعد اخر صف به بيانات اضافة دالة التفقيط تعديل اعدادات الورقة لتتناسب مع الطباعة إضافة زر طباعة تحياتي للجميع Copy of تجميع.xlsm
    2 points
  28. مشاركة بسيطة .. أخي الفاضل @egymina2012 ، تعدد الطلبات وكثرة التعديلات تربك وتشوش من يتقدم بتقديم حلول . لذا أرجو منك التوضيح بشكل أكثر وضوحاً للمطلوب ، ويا حبذا لو كان على شكل نقاط . بخصوص طلب تصحيح اسم الفرقة وإضافة ( انتساب و انتظام ) . في الجزء التالي في الكود داخل ملفك الأخير ، وتحديداً في السطر ' تحديث عنوان الفرقة في شيت الطباعة wsPrint.Range("C2").Value = "اسماء الطلاب - " & gradeTitle لاحظ هنا أنه يقوم بإضافة رقم الفرقة نصاً في الخلية C2 .. فإذا كنت تريدها في C3 أيضاً ، فقط أضف السطر التالي مباشرة أسفل الجزء الذي أشرت لك إليه :- wsPrint.Range("C3").Value = "اسماء الطلاب - " & gradeTitle & " ( انتظام - وانتساب )" اما باقي طلباتك فأرجو منك إيضاحها لو تكرمت ..
    2 points
  29. اتفضل اليك الحل السريع تم ادارك الاخطاء المشار اليها وتم عمل كود للنوع جرب وابلاغنا بالامر واي تعديل Copy of تجميع .xlsm
    2 points
  30. بفضل الله سبحانه وتعالى ، ثم لك على هذه السهرة الجميلة والغنية وسماع صوتك .. قد أكملت سهرتي التي تكللت بالنجاح .. وقد كانت الثمرة في نهاية موسم الحصاد تتلخص بـ :- 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
  31. تقصدني أنا صح ؟ 😅 سواء كانت هذه نيتك أم لا فأنا أشكرك لطرح هذا السؤال حتى يخرج لنا الأستاذ @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
  32. تتبع الخطوات التالية وهذا هو محتوى المرفق سنغلق النموذج الشاشة الرئيسية ونفتح نموذج إنشاء الإختصار المسمى frmShortcut يفترض أن تكون النتيجة عندك مطابقة لما جاء في الصور
    2 points
  33. يا عيني يا عيني ما هذا الجمال ، والإبداع أخي منتصر بارك الله فيك على هذه المشاركة الجميلة فعلاً والتي يحتاجها الكثير فعلاً .. تعقيباً على كلام أخي موسى ، والذي لا ينقص من روعة العمل شيئاً ، لاحظت ما يلي يما يتعلق بالنقطة الثانية :- استخدام تعريف المتغير Private lngStep As Single في بداية النموذج الفرعي sbfSpinButtons . حيث أن نوع البيانات Single ( وحتى Double ) يعتمد على نظام الفاصلة العائمة الثنائي . وهنا الكسور العشرية التي تبدو بسيطة مثل 0.1 أو 0.05 لا يمكن تمثيلها بشكل دقيق تماماً بالنظام الثنائي ؛ فيتم تخزينها بقيمة تقريبية تزيد قليلاً عن القيمة الأصلية . ثم يأتي شرط فحص الحد الأقصى في الدالة Up ، حيث varMaxValue = 1 ، في الجملة :- If (ctlTxtBox.Value + lngStep) <= varMaxValue Then وفرضاً ، الشرط يختبر هل 1.00000001490116 <= 1 ؟؟؟ والنتيجة قطعاً هي لا = False . بالتالي يرفض الكود الزيادة ، ويتجمد الرقم عند 90% (0.9) . ونفس الأمر يتكرر مع خطوة 5% بعد 20 نقرة حيث يتجاوز المجموع الرقم 1 بجزء متناهي الصغر ، فيتوقف عند 95% . ونفس المشكلة تحدث أيضاً عند النزول Down . عندما يصل إلى 10% ثم ينقص 0.1 ، يصبح الناتج تقريباً -0.0000000149 ( أقل من الصفر ) ، فيتوقف عند 10% ولا يصل إلى 0% . لذا ، خطر ببالي ومن باب التجربة ما يلي ، على الدالتين Up و Down ، مع تغيير نوع المتغير طبعاً ليصبح الضع كالتالي :- نوع المتغير في تعريفه من Single إلى Double . الدالتين تصبحان :- Private Sub Up() Dim curVal As Variant Dim stpVal As Variant Dim nextVal As Variant stpVal = CDec(lngStep) If Not ctlTxtBox Is Nothing Then ' الوضع الأول: مع مربع النص If IsNumeric(ctlTxtBox.Value) Then curVal = CDec(ctlTxtBox.Value) nextVal = curVal + stpVal If Not IsEmpty(varMaxValue) Then If nextVal <= CDec(varMaxValue) Then ctlTxtBox.Value = CDbl(nextVal) ElseIf curVal < CDec(varMaxValue) Then ' إذا تجاوزت الخطوة الحد الأقصى وكان الرقم أقل منه (مثل 99% مع خطوة 3%) نضبطه على 100% ctlTxtBox.Value = varMaxValue End If Else ctlTxtBox.Value = CDbl(nextVal) End If End If Else ' الوضع الثاني: مع متغير وحدث curVal = CDec(dblValue) nextVal = curVal + stpVal If Not IsEmpty(varMaxValue) Then If nextVal <= CDec(varMaxValue) Then dblValue = CDbl(nextVal) ElseIf curVal < CDec(varMaxValue) Then dblValue = CDbl(varMaxValue) Else Exit Sub End If Else dblValue = CDbl(nextVal) End If RaiseEvent ValueChanged(dblValue) End If End Sub Private Sub Down() Dim curVal As Variant Dim stpVal As Variant Dim nextVal As Variant stpVal = CDec(lngStep) If Not ctlTxtBox Is Nothing Then ' الوضع الأول: مع مربع النص If IsNumeric(ctlTxtBox.Value) Then curVal = CDec(ctlTxtBox.Value) nextVal = curVal - stpVal If Not IsEmpty(varMinValue) Then If nextVal >= CDec(varMinValue) Then ctlTxtBox.Value = CDbl(nextVal) ElseIf curVal > CDec(varMinValue) Then ' إذا نزلت الخطوة عن الحد الأدنى وكان الرقم أكبر منه نضبطه على 0% ctlTxtBox.Value = varMinValue End If Else ctlTxtBox.Value = CDbl(nextVal) End If End If Else ' الوضع الثاني: مع متغير وحدث curVal = CDec(dblValue) nextVal = curVal - stpVal If Not IsEmpty(varMinValue) Then If nextVal >= CDec(varMinValue) Then dblValue = CDbl(nextVal) ElseIf curVal > CDec(varMinValue) Then dblValue = CDbl(varMinValue) Else Exit Sub End If Else dblValue = CDbl(nextVal) End If RaiseEvent ValueChanged(dblValue) End If End Sub
    1 point
  34. لكم الأجر والثواب .. شكراً لكم مهندس جمال على مروركم وإطرائكم
    1 point
  35. هذه الجملة وحدها شرف لي أخي منتصر ، أن أقف بجانبكم وبجانب نخبة من الأساتذة هنا التي لكم ولها أعمال تستحق رفع القبعات وبجدارة ..
    1 point
  36. رأيي هو نفسه في كل ماتقدمه ولا تحتاج إلى شهادة مني أو من غيري فأعمالك هي من مصاف الأعمال الإحترافية التي لم أجدها حتى عند الخبراء الأجانب ورغم أنك تهربت من الإجابة ولكن لابأس فحتى وإن غادرتنا فستظل أعمالك شاهدة على كل إسهاماتك القيمة في المنتدى
    1 point
  37. تجربتي على جهازي ( ويندوز 7 وأوفيس 2007 32بت ) من خلال أوفيس 2007 تم تحويل ملف قاعدة بيانات المدرسين ( أنا استخدم أوفيس 2003 ) بعد تفريغها من البيانات من TeacherData v2.5.mdb إلى TeacherData v2.5.accdb ومن خلال الشرح أعلاه تم إنشاء الملف الوسيط Setup_TeacherDatav2.5.exe ومن ثم تم استخدامه لاستخراج النسخة المحمية TeacherData v2.5.accde وعند استعادة النسخة العادية من النسخة المحمية كانت هذه الصور
    1 point
  38. على رأي المعلق الرياضي رؤوف خليف شنو هاااااذااااا منتهى الروعة والجمال الأداة بوضعها الحالي لاتشوبها شائبة ولكن لدي ملاحظة وإقتراح الملاحظة هي إختلاف شكل رسالة التنبيه بإختلاف طريقة حفظ التعديل كما في الصورة المتحركة التالية أدري أن الماكرو يقوم برفع خطأ برقم ونص مخصصين ولكن لاحظ رقم الخطأ في أول رسالة (عند النقر على زر الحفظ) سنجد أن رقمه 3939 رغم أن الماكرو يرفع خطأ بالرقم 9991 والرقم 9992 فهل بالإمكان أن يتم رفع رقم الخطأ من الماكرو وإعتراضه عن طريق الكود ليتم معالجته بإستخدام VBA ؟ أما المقترح أن يتم إستخدام مربعات قائمة (قابلة للتحديد المتعدد) بدلاً عن مربعات التحرير والسرد وهذه الصورة ستوضح الفكرة في الأخير وكما أسلفت فإن الملاحظة والمقترح هما من باب مشاركة الأفكار ولا ينقصا من روعة الأداة بوضعها الحالي بشيئ تحياتي
    1 point
  39. شكرا لحضرتك بشمهندس فادي على التعقيب الجميل البشمهندس موسي جزاه الله خيرا شرح على جروب الواتس كيفية اظهار الدزبلاج الصوتي و هو مرفق بالصورة المرفقة
    1 point
  40. أخواني وأساتذتي ومعلمينا ( دون استثناء ) كثير من المطورين ومصممي قواعد البيانات والمشاريع الخاصة بهم ، عندما يقوم بحفظ مشروعه بصيغة Accde ؛ بتفاجئ بأن جهاز العميل لم يقم بتشغيل قاعدة البيانات رغم خلوها من جميع الأخطاء البرمجية ، أو عدم التوافقية في الأكواد بين الناتين 32 و 64 . ولذا يلجأ لحفظ قاعدة البيانات بإصدار مطابق لإصدار أوفيس العميل المثبت في جهازه . أو إجبار العميل على تثبيت إصدارات حديثة أو بنواة معينة ... إلخ . اليوم كانت لي تجربة لتقوم بمهمة تشغيل قاعدة بياناتك على أي إصدار وعلى أي نواة وعلى أي ويندوز دون الحاجة لأي تدخل من مطور البرنامج . تجربتي اليوم ستقوم على مشروع مفتوح المصدر تم طرحه بعنوان الأداة :- معالج ومنشئ حزم تثبيت أكسيس الذكي - Access Smart Packager & Setup Builder كتجربة ليس إلا في هذا الموضوع هنا . على العموم وللتوضيح سأقوم بإرفاق ملف قاعدة البيانات ، والتجربة ممن يرغب بمشاركتنا رأيه ما يلي :- ذكر إصدار ونواة آكسيس الذي قام بالتجربة عليه . ذكر اصدار الويندوز ونواتها أيضاً . ممن يملك إصدارين من آكسيس على جهازه ( مثل أخوكم 😅 ، لدي الإصدارين 2019 - 64 ، والإصدار 2010 - 32 ) ، تجربة الفكرة على الاصدارين ومشاركتنا رأيه بنجاح أو فشل التجربة وهي عنوان الموضوع . وهذه صورة من جهازي الشخصي الذي أملك إصدارين مثبتين عليه . المشاركة مفتوحة لمن يرغب وغير مقتصرة على أحد 😇 . وبناء على النتائج والتفاعل ، سأقوم بفتح موضوع مخصص وطرح الأداة والشرح عنها بكامل تفاصيلها وآلية العمل عليها . وتشجيعاً لمن رغب بالتجربة .. جرب في مربع نص المسار اكتب إشارة # يليها مباشرة officena.net ، وهنا السر العجيب . لاحظ الصورة للتوضيح :- ♻ حيث سيتم استخراج قاعدة البيانات مفتوحة المصدر Accdb وليس Accde ♻ يعني يا صديقي يا مطور البرنامج ، لو في يوم من الأيام ولو بعد 10 سنين ؛ جاء العميل راكضاً ويريد منك إضافات وتعديلات جديدة . وتفاجأت بأن النسخة الأصلية ضاعت منك أو لم تعد موجودة في جهازك ولأي سبب من الأسباب .. فقط اكتب كلمة المرور التي حددتها في الأداة التي سيتم طرحها منفردة في موضعها الخاص , وستحصل على قاعدة بياناتك الأصلية مفتوحة المصدر 😁 . حجم الملف المرفق أكبر من الحد المسموح به ، لذا سأرفعه برابط مباشر على جوجل درايف من هنا . طبعاً حجم قاعدة البيانات هو 10 ميجا ..
    1 point
  41. وعليكم السلام ورحمة الله وبركاته .. انا عندي نسخة أوفيس 2021 - واجهة انجليزية . وقمت بتحويل الأرقام من العربية الى الهندية وبعدها تصدير ملفك وتم الأمر بنجاح . وهذا ملفك PDF الملف.pdf
    1 point
  42. الخبراء الافاضل بعد التحية اشكركم شكر خاص على مساعدتكم لى فى كل مرة احتاج لكم فيها
    1 point
  43. وعليكم السلام-يمكنك استخدام هذا الكود Sub RmDupsU() Dim U As Range, N As Long, i As Long, wf As WorksheetFunction Dim rUP As Range Set U = Range("A:A") Set wf = Application.WorksheetFunction N = Cells(Rows.Count, "A").End(xlUp).Row For i = N To 2 Step -1 Set rUP = Range(Cells(i - 1, "A"), Cells(1, "A")) If wf.CountIf(rUP, Cells(i, "A").Value) > 0 Then Cells(i, "A").Clear Next i End Sub Duplicate Clear Contents.xlsm
    1 point
  44. وعليكم السلام -يمكنك استخدام هذه المعادلة لإيجاد عدد العمليات =COUNTIFS(C:C,$K$2,D:D,$J$2,E:E,$I$2,F:F,$I5) ولإيجاد اجمالى المبلغ ... يمكنك استخدام هذه المعادلة =SUMIFS(B:B,C:C,$K$2,D:D,$J$2,E:E,$I$2,F:F,$I5) TQ1.xlsx
    1 point
  45. وعليكم السلام-اجعل المعادلة بالعمود C هكذا =VALUE(B1&A1) TEST1.xlsx
    1 point
  46. وعليكم السلام-دائماً وأبداً لابد من تدعيم اى مشاركة بملف موضح فيه المطلوب بكل دقة...فيمكنك استخراج الرقم 2018 بالمعادلة التالية =LEFT(AD1,LEN(AD1)-FIND("-",AD1)) أما 2019 بالمعادلة التالية =RIGHT(AD1,LEN(AD1)-FIND("-",AD1))
    1 point
  47. تفضل يمكنك استخدام هذه المعادلة (Ctrl+Shift+Enter) =IFERROR(INDEX($C$3:$C$40,SMALL(IF(($C$3:$C$40<=$I$3)*($C$3:$C$40>=$I$2)*($B$3:$B$40=$K$2),MATCH(ROW($C$3:$C$40),ROW($C$3:$C$40)),""),ROW(A1)),COLUMN(A1)),"") Item Card1.xlsx
    1 point
  48. 1 point
×
×
  • اضف...

Important Information