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

Foksh

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

    4707
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    208

كل منشورات العضو Foksh

  1. .. ما شاء الله ، فكرة جميلة ونظيفة ولا تشوبها شائبة في التنفيذ . بس استخدام Requery الشيء الجميل في الموضوع هو أنك إذا أردت تغيير المنطق ، ففقط تغيره في مكان واحد وهو الكلاس ، وليس في 50 نموذجاً مثلاً . جزاك الله خيراً لهذه المشاركة الجميلة والقيمة ..
  2. تم نقل الرد إلى هذا الموضوع المنفرد
  3. العفو أستاذنا الجليل ابو خليل ، لكم ذلك إن شاء الله 😇 . ليتك جربت أولاً الطريقة قبل ردك هذا بهذا الوصف 😇 . وصدقني لو سألت صديقك شات جي بي تي عن مثلاً:- أنا أرى أنه وبجهودك وأفكارك ، يمكن ان يكون ناتج 1+1=3 بطرق تحايلية ، إلا أن صديقي يخالفنا الرأي تماماً. وهذا أزعجني بتشكيكه هذا. وحينها سيأتيك بإجابات من كوكب الغزالين بأنه يمكن تحقيق 1+1=3 وللتجربة ، قمت بإرسال إيميل الى البريدين المسجلين في ملفك المرفق لتجربتك ، فتحقق من وصولهما إذا أردت
  4. عن تجربتي الشخصية سأتحدث . حيث قمت سابقاً بتنفيذ الفكرة لمشروع آخر ليرسل الإيميلات من بريده في Gmail إلى أي ايميل تريده ؛ دون إدخال أي وسيط أو موقع خارجي . حيث سيكون تعاملك مع خدمات جوجل مباشرة قمت بإنشاء جدول جديد باسم tbl_EmailSettings . ويحتوي الحقول التالية :- IDMail = حقل ترقيم تلقائي . SenderEmail = حقل نصي ، ويمثل أيميلك الذي تريد استخدامه كإيميل مرسل . SMTPServer = حقل نصي ، ويمثل الخدمة المستخدمة في Gmail لإرسال البريد الإلكتروني . وتكون عادة = smtp.gmail.com SMTPPort = حقل رقمي ، ويمثل المنفذ الذي سنستخدمه للإيميلات الصادرة . وهو عادة لـ Gmail يكون 465 . SMTPPassword = حقل نصي ، وهو الحقل المهم جداً هنا والذي ستكون قيمته كلمة مرور التطبيق الذي سنقوم بإنشائه من خلال بريدك الإلكتروني الذي سجلت به في الحقل SenderEmail . أما كيف نحصل عليه فسيكون الشرح تالياً . UseSSL = حقل من نوع Yes/No . وهو مهم إلى حد ما . والسبب أنه جميع خدمات البريد الحديثة (Gmail, Yahoo, Hotmail) تشترط وجود تشفير SSL . لذا فقيمته بالنسبة لك ستكون دائماً True . الآن كيف نحصل على SMTPPassword المقدم من Gmail ؟ إليك الطريقة خطوة بخطوة ببساطة . في متصفحك ، ادخل إلى ( إعدادات حساب Google ) . تحقق أولاً وقبل كل شيء من تفعيل ميزة ( التحقق بخطوتين ) أو ( 2-Step Verification ) في حسابك . ابحث في خانة البحث عن ( كلمة مرور التطبيق ) أو ( كلمات مرور التطبيقات )، او ( App Password ) ، حسب لغة الموقع لديك . ادخل كلمة المرور الخاصة بالإيميل الذي تريد استخدامه كإيميل مرسل . في خانة ( اسم التطبيق ) أو ( App Name ) ، أدخل اسم للتطبيق ، مثلاً ( SenderMailer ) . ثم انقر زر ( إنشاء أو Creat ) . الآن سيزودك الموقع بكلمة من 16 حرف ، انسخها والصقها في الحقل SMTPPassword . الآن في الجدول المخصص للأعدادات ، سيكون لديك الحقول المهمة وقيمها كالتالي :- SMTPServer = عنوان الخادم وهو smtp.gmail.com SMTPPort وهو المنفذ = 465 SMTPPassword = كلمة المرور التي حصلنا عليها من 16 حرف ( يفضل بدون مسافات ) UseSSL = نعم أو علامة صح SenderEmail = إيميلك الذي سجلت به والذي ستستخدمه للإرسال الآن في زر الإرسال المخصص لكل ايميل بشكل فردي ، سنستخدم الكود البسيط التالي :- Dim result As String Dim strRecipient As String Dim strMessageBody As String strRecipient = Trim(Nz(Me.B2.Value, "")) strMessageBody = Nz(Me.Fonda.Value, "") If strRecipient = "" Then MsgBox "يرجى إدخال إيميل المستلم أولاً", vbExclamation + vbMsgBoxRight, "" Me.B2.SetFocus Exit Sub End If result = SendSmartEmail(strRecipient, "رسالة تجريبية", strMessageBody) If result = "Success" Then MsgBox "تم الإرسال بنجاح", vbInformation + vbMsgBoxRight, "" Else MsgBox "فشل في الإرسال", vbCritical + vbMsgBoxRight, "خطأ" End If وفي زر الإرسال الجماعي ، سنستخدم الكود التالي :- Dim rs As DAO.Recordset Dim result As String Dim counter As Integer Dim strTo As String Dim strMsg As String Set rs = Me.RecordsetClone If rs.RecordCount = 0 Then MsgBox "لا توجد سجلات للإرسال إليها في هذا النموذج", vbInformation + vbMsgBoxRight, "" Exit Sub End If If MsgBox("هل أنت متأكد من إرسال إيميلات لجميع السجلات الحالية؟", vbQuestion + vbYesNo + vbMsgBoxRight, "تأكيد الإرسال") = vbNo Then Exit Sub counter = 0 rs.MoveFirst Do Until rs.EOF strTo = Nz(rs!Gmail, "") strMsg = Nz(rs!Fonda, "") If strTo <> "" Then result = SendSmartEmail(strTo, "تنبيه بريدي", strMsg) If result = "Success" Then counter = counter + 1 End If End If rs.MoveNext Loop MsgBox "تمت عملية الإرسال بنجاح" & vbCrLf & _ "عدد الإيميلات المرسلة: " & counter, vbInformation + vbMsgBoxRight, "" Set rs = Nothing وملاحظة بسيطة ، وهي تستطيع تغيير موضوع عنوان البريد الذي سيصل لأي شخص ترسل له ( بشكل منفرد ) بتغيير قيمة "رسالة تجريبية" داخل زر الإرسال . أو من خلال الزر المخصص للإرسال الجماعي بتغيير قيمة "تنبيه بريدي" ليكون هو العنوان لموضوع البريد . وهذا ملف تجريبي بعد الإضافات التي ذكرتها . فقط يرجى ملئ الجدول بالإيميل و كلمة المرور التي تتكون من 16 حرف فقط . Nouveau.zip الفكرة و المشاركة كانت تتبع الموضوع التالي هنا ، وتم فصلها لإفرادها وكي تعم الفائدة على من يمر باحثاً عن فكرة إرسال بريد من آكسيس دون قيود . التحديث الجديد في هذه المحادثة هنا :- التحديث الجديد في هذه المحادثة هنا :- التحديث الجديد في هذه المحادثة هنا :-
  5. العفو يا صديقي .. يبقى خليني أحاول أمتعك بالتجربة بنفسك إنت والأصدقاء والأخوة ، والتي تم دعمها بالتأثيرات الصوتية أيضاً .. الإصدار المتوافق مع 64 :- Connect 4 - 64.zip الإصدار المتوافق مع 32 :- Connect 4 - 32.zip
  6. بالفعل ، وأعلم هذا .. ولكن كنوع من الجرأة كما سميتها تطرقت لهذه الفكرة من باب التجربة ليس إلا 😉 وبالفعل رسائل الخطأ غير واضحة ، لأن الرسالة الإنجليزية متأصلة في آكسيس ولم أتمكن من ضبطها وتعديلها داخلياً إلا من خلال استعمال حدث النموذج عند الخطأ .. ولم أقم بإدراج إجابتي لأنها خارجة عن الشروط 😜 هذا سيكون عليك في الشهر القادم إن شاء المولى عز وجل .. ( ما رأيك؟ 👀 ) أنت هنا يا صديقي ، قمت بزرع الشروط جميعها داخل خصائص الجدول ، وكذلك رسالة الرد العامة حتى لو كان حقلاً واحداً مخالفاً .. الدمج بين الطريقتين فكرة جميلة أيضاً .. ملاحظتي ، وهي أن السادة الأخوة والأصدقاء الخبراء والموهوبين في المنتدى يبدو أنهم لم يتشجعوا للمشاركة في هذا الموضوع الصغير 😎
  7. لا تنسوا أن الأفكار قد تكون كثيرة ، والحلول لم تنتهي بعد 😉
  8. نكهتي الفوكشية
  9. وعليكم السلام ورحمة الله وبركاته .. شكراً لك على الهدية القيمة .. وخطر ببالي سؤال يخص التصميم . بأي إصدار تم إنشاء قاعدة البيانات في أساسها ؟؟؟ أم هي الفكرة من خلال المديول فقط !!!! وأقصد تحديداً النموذج ufTreeview
  10. كلامك سليم وجميل أخي جعفر .. لكن الميزةفي فكرتك هي بمثابة خط الدفاع الأخير . يعني حتى لو تم إدخال البيانات عبر استعلام إلحاق مثلاً أو من مصدر خارجي ، سيأتي الحارس الشخصي للجدول وهو هنا الماكرو لإيقافها . سامحك الله أخي جعفر .. من أنا لأسمح أو أمنع .. لاحظ أن الشرط حماية هيكل الرواتب ( ربط الراتب بالدرجة ) ، فهذا الشرط لا يمكن عمله على مستوى الحقل أبداً ، لأننا هنا سنقارن حقلين ببعضهما . لذا ومن رأيي الشخصي ، لا بد من وجود قاعدة تعمل على مستوى السجل .
  11. فكرة جميلة جداً تجميع بين عدم ظهور الشروط في خصائص الحقول + القوة والمتانة + دعمها للرسائل العربية
  12. في آخر نسخة لك ، انظر للخلل في الإحصائيات :- وحيث تم إضافة العاطفة البرمجية ( مقتبس من مشروع RobotaAI ) لأخي أحمد يوسف . هذه النسخة الأخيرة من اللعبة بالإصدارين 32 و 64 .. X-O Game - 64.zip X-O Game - 32.zip إصدار تفاعلي أكثر مرونة عن اللعب ضد الكمبيوتر .. إضافة تفاعل عاطفي مزاجي للكمبيوتر عند اللعب ضده بحيث يكون متهاون حتى في ردود أفعاله النصية عند المستويات . حسم الأمر بالمستوى الصعب ، فليس دائماً يكون ارتكاز الكمبيوتر على مركز اللعبة ليلعب به دائماً .. الملف مفتوح المصدر :- X-O Game - Open Source.accdb
  13. احذف القديم ، وشغل الجديد يا هندسة .. 😎 معلمنا الفاضل ، انا مستغرب جداً من عدم عمل الإصدار 32 لديك .. انظر من جهاز آخر بالقرب مني ويعمل على أوفيس 2010 32 ..
  14. جرب كدة ونشوف النتيجة !! X-O Game - 32.zip X-O Game - 64.zip
  15. ماشي يا محمد .. الـ Bugs ده اللي بتتكلم عنه سببه إنك بالنقر على الأزرار بينما الكمبيوتر كان يفكر .. ولكن جاري المعالجة في المرفقات التي سيتم رفعها في المشاركة التالية .. على العموم ، انا زودت قفل زيادة علشان تفرح يا عم 😉
  16. لا لا يا هندسة ، مش ده قصدي !! ولا حتى قريب منه ، استغفر الله أن نظن بأحد ظناً سيء . على العكس ثقتنا كبيرة ببعضنا انا ناوي أشارك أفكاري من خلال ملفين مغلقين للتجربة وطرح الأفكار التي نفذتها بالتطوير على فكرتي الأساسية السابقة .. وهذين ملفين 32 و 64 للتجربة ، وإبداء الرأي لمن يريد . وثق تماماً أنني سأفرج عن الملف مفتوح المصدر بعد مشاهدة بعض المشاركات . X-O Game - 32.zip X-O Game - 64.zip
  17. تقصد بهذا الشكل ؟؟
  18. وعليكم السلااااااام ورحمة الله وبركاته .. وبما أنني من عشاق تصميم الألعاب في آكسيس .. وقد كان لي تجربة مع هذه اللعبة الجميلة ، وقد قمت بتضمينها ضمن برنامج إدارة النوادي الرياضية في هذا الموضوع هنا .. وكانت تجربتي بالشكل القديم التالي :- ولكن وبما أننا في 2026 ، فسأقوم بتطويرها بشكل أجمل ضمن هوايتي المتواضعة .😁.
  19. أهلاً بكم في انطلاقة سلسلتنا الجديدة "الفعاليات والتحديات الشهرية". في عالم قواعد البيانات ، المحترف الحقيقي ليس من يكتب مئات الأسطر من الأكواد ، بل هو "المعماري" الذي يبني قاعدة بيانات قوية ، ذكية ، وتحمي نفسها بنفسها ! تحدي اليوم سيعيدنا إلى الجذور ، إلى قوة محرك آكسيس الكامنة في جداوله . فهل أنت مستعد لخوض التجربة الأولى ؟؟ 📖 قصة التحدي :- طلب منك عزيزي المشارك ( مصنع تقني ) بناء نظام لإدارة شؤون الموظفين ، ولكن لديهم شروط صارمة جداً لمنع أي موظف مُدخِل بيانات من ارتكاب أخطاء . حيث أن الإدارة ترفض تماماً استخدام أكواد ( VBA ) ، وتريد أن تكون الحماية مزروعة ومتأصلة في قلب الجداول مباشرة ، لضمان أقصى درجات الأمان . 🛠️ المطلوب :- إنشاء جدول باسم tbl_Managers ، يحتوي على الحقول التالية :- اسم الموظف ( EmpName ) تاريخ الميلاد ( DOB ) تاريخ التعيين ( HireDate ) الدرجة الوظيفية ( JobGrade ) = (A أو B أو C) الراتب الأساسي ( Salary ) 🚫 شروط التحدي :- يجب عليك ضبط إعدادات الجدول (Property Sheet) ليقوم بالمهام التالية تلقائياً :- يُمنع الحفظ في حال مخالفة القوانين والأحكام ، حيث يُمنع تسجيل أي موظف عمره أقل من 18 عاماً ( بناءً على تاريخ ميلاده مقارنة بتاريخ اليوم ) . حماية التسلسل الزمني ، حيث يُمنع أن يكون تاريخ التعيين قبل تاريخ تأسيس المصنع ( 01/01/2020 ) . يُمنع أن يكون تاريخ التعيين في ( المستقبل ، أي بعد تاريخ اليوم الحالي ) . حماية هيكل الرواتب : يجب ربط الراتب بالدرجة الوظيفية كالتالي :- إذا كانت الدرجة A : الحد الأقصى للراتب هو 10,000 . إذا كانت الدرجة B : الحد الأقصى للراتب هو 7,000 . إذا كانت الدرجة C : الحد الأقصى للراتب هو 5,000 . الرسائل المخصصة ، بحيث عند وقوع أي خطأ ، يجب أن يظهر للمستخدم رسالة تنبيه واضحة باللغة العربية تشرح له سبب الرفض بالضبط . 🚫 قوانين المشاركة :- يُمنع منعاً باتاً استخدام أكواد VBA أو الـ Macros - الماكرو . الحل يجب أن يكمن في خصائص الجدول ( Table Properties ) فقط . ♻ كيف تشارك ؟ قم برفع ملف مرفق فقط . وتذكر أنك عزيزي المشارك تملك الحق في 3 محاولات لإجاباتك خلال التحدي الواحد فقط .
  20. شكراً لك أخي محمد على هذا التوضيح العميق والتفصيلي الذي اريده تماماً ، وقد حصلت على الزبدة منه بفضل الله أولاً ، ثم لشرحك الجميل .
  21. مشاركة مع الأستاذ @عبدالله بشير عبدالله ، هذه تجربتي .. استخدمت الحدثين التاليين في ThisWorkbook :- Private Sub Workbook_Open() Application.IgnoreRemoteRequests = True Application.Visible = False UserForm6.Show vbModeless End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim Response As VbMsgBoxResult Dim MsgText As String MsgText = "سيتم اغلاق جميع أوراق العمل ومشاريع آكسل المفتوحة ، هل ترغب بالاغلاق؟" Response = MsgBox(MsgText, _ vbCritical + vbYesNo + vbMsgBoxRight + vbRtlReading, _ "تنبيه هام - إغلاق النظام") If Response = vbNo Then Cancel = True Exit Sub End If Application.IgnoreRemoteRequests = False ThisWorkbook.Saved = True Application.Quit End Sub وقمت بتعديل بسيط على الحدث UserForm_Activate :- Private Sub UserForm_Activate() ThisWorkbook.Application.Visible = False Load UserForm6 End Sub مشكلة.xlsm
  22. يعني انت لا تنصح باستخدام الذكاء الإصطناعي في كتابة الأكواد ؟ انصحني لأني لقيت أن التوجه له أصبح كبيراً وكثيراً جداً 😥
  23. يسرّنا مشرفي قسم الآكسيس أن نعلن عن انطلاق سلسلة من التحديات الشهرية التي سيتم نشرها في قسم الآكسيس حصراً ، حيث سيتم طرح سؤال أو فكرة بموضوع - مثبت شهرياً - كنوع من أنواع التحدي والمثابرة لجميع الأعضاء في المنتدى . وستُعرض المشاركات التي تم اعتمادها بالتصويت من قبل الأعضاء كافةً من خلال الإعجاب لكل تحدي وسؤال على حدة . الهدف من هذه الفعاليات هو تعزيز روح المنافسة الإيجابية والبناءة ، تبادل الخبرات ، وإثراء المحتوى في هذا القسم . يحق لكل عضو المشاركة بـ 3 محاولات للإجابة في كل تحدي . ( وذلك لأن الأفكار أحيانا تتفجر بشكل متلاحق بعد الشروع في فكرة ما ، وتنتج عنها عدة نسخ في كل نسخة تحسين للتي قبلها ) جميع التحديات ستكون ضمن إطار برنامج الآكسيس حصراً . موضوع التحدي يتم تحديده مسبقاً وهو غير قابل للتعديل أو النقاش . يجب أن تكون المشاركة مكتوبة بلغة واضحة وخالية من الأخطاء قدر الإمكان . لا مانع من استخدام أي مصدر أو مساعدة خارجية ، أو حتى الذكاء الإصطناعي . الإلتزام بالوقت المحدد لنشر الإجابات ، حيث لن تُقبل المشاركات بعد انتهاء المهلة المقررة لكل تحدي . ( سيتم إغلاق الموضوع بعد انقضاء المهلة المخصصة للتحدي ) سيتم اعتماد الفائزين عبر تصويت الأعضاء من خلال الضغط على ، ويُعلن عن النتائج في نهاية كل تحدي ؛ والتي سيتم تثبيتها في هذا الموضوع فقط مع ذكر اسم صاحب المشاركة التي تم التصويت لها . يحق للإدارة استبعاد أي مشاركة مخالفة للشروط أو خارجة عن موضوع التحدي . المشاركة تشمل جميع الأعضاء ومن جميع الأقسام أيضاً . أي إضافات خارجة عن نطاق التحدي لن تحتسب ضمن التقييم لدى المشرفين . ( الهدف هو عدم الإبتعاد عن جوهر التنفيذ البرمجي وليس الشكل الجمالي فقط )
×
×
  • اضف...

Important Information