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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    199

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

  1. مقصدي أن الطريقة التقليدية التي نستخدمها عادةً بوضع Me.Combo2.Requery في حدث AfterUpdate . ولكن بعد مراجعة الكلاس وتحفته الفنية ، لاحظت أنه يقوم بأكثر من مجرد Requery ؛ فهو يقوم بمسح القيم القديمة وبناء جملة SQL ديناميكية لفك الارتباط باسم النموذج .
  2. طيب بالعودة إلى ملفك وفكرتك ، انت تستعمل مفتاح Tab للإنتقال 5 مرات .. لذا جرب استبدال الأقواس [tab] بهذه الأقواس {tab} .
  3. وعليكم السلام ورحمة الله وبركاته .. جرب هذا التعديل أخي الفاضل ، لأنني أستخدم تطبيق واتس اب سطح المكتب ، وليس واتس اب ويب .. كود إرسال مرتبات.xlsm
  4. .. ما شاء الله ، فكرة جميلة ونظيفة ولا تشوبها شائبة في التنفيذ . بس استخدام Requery الشيء الجميل في الموضوع هو أنك إذا أردت تغيير المنطق ، ففقط تغيره في مكان واحد وهو الكلاس ، وليس في 50 نموذجاً مثلاً . جزاك الله خيراً لهذه المشاركة الجميلة والقيمة ..
  5. تم نقل الرد إلى هذا الموضوع المنفرد
  6. العفو أستاذنا الجليل ابو خليل ، لكم ذلك إن شاء الله 😇 . ليتك جربت أولاً الطريقة قبل ردك هذا بهذا الوصف 😇 . وصدقني لو سألت صديقك شات جي بي تي عن مثلاً:- أنا أرى أنه وبجهودك وأفكارك ، يمكن ان يكون ناتج 1+1=3 بطرق تحايلية ، إلا أن صديقي يخالفنا الرأي تماماً. وهذا أزعجني بتشكيكه هذا. وحينها سيأتيك بإجابات من كوكب الغزالين بأنه يمكن تحقيق 1+1=3 وللتجربة ، قمت بإرسال إيميل الى البريدين المسجلين في ملفك المرفق لتجربتك ، فتحقق من وصولهما إذا أردت
  7. عن تجربتي الشخصية سأتحدث . حيث قمت سابقاً بتنفيذ الفكرة لمشروع آخر ليرسل الإيميلات من بريده في 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 الفكرة و المشاركة كانت تتبع الموضوع التالي هنا ، وتم فصلها لإفرادها وكي تعم الفائدة على من يمر باحثاً عن فكرة إرسال بريد من آكسيس دون قيود . التحديث الجديد في هذه المحادثة هنا :- التحديث الجديد في هذه المحادثة هنا :- التحديث الجديد في هذه المحادثة هنا :-
  8. العفو يا صديقي .. يبقى خليني أحاول أمتعك بالتجربة بنفسك إنت والأصدقاء والأخوة ، والتي تم دعمها بالتأثيرات الصوتية أيضاً .. الإصدار المتوافق مع 64 :- Connect 4 - 64.zip الإصدار المتوافق مع 32 :- Connect 4 - 32.zip
  9. بالفعل ، وأعلم هذا .. ولكن كنوع من الجرأة كما سميتها تطرقت لهذه الفكرة من باب التجربة ليس إلا 😉 وبالفعل رسائل الخطأ غير واضحة ، لأن الرسالة الإنجليزية متأصلة في آكسيس ولم أتمكن من ضبطها وتعديلها داخلياً إلا من خلال استعمال حدث النموذج عند الخطأ .. ولم أقم بإدراج إجابتي لأنها خارجة عن الشروط 😜 هذا سيكون عليك في الشهر القادم إن شاء المولى عز وجل .. ( ما رأيك؟ 👀 ) أنت هنا يا صديقي ، قمت بزرع الشروط جميعها داخل خصائص الجدول ، وكذلك رسالة الرد العامة حتى لو كان حقلاً واحداً مخالفاً .. الدمج بين الطريقتين فكرة جميلة أيضاً .. ملاحظتي ، وهي أن السادة الأخوة والأصدقاء الخبراء والموهوبين في المنتدى يبدو أنهم لم يتشجعوا للمشاركة في هذا الموضوع الصغير 😎
  10. لا تنسوا أن الأفكار قد تكون كثيرة ، والحلول لم تنتهي بعد 😉
  11. نكهتي الفوكشية
  12. وعليكم السلام ورحمة الله وبركاته .. شكراً لك على الهدية القيمة .. وخطر ببالي سؤال يخص التصميم . بأي إصدار تم إنشاء قاعدة البيانات في أساسها ؟؟؟ أم هي الفكرة من خلال المديول فقط !!!! وأقصد تحديداً النموذج ufTreeview
  13. كلامك سليم وجميل أخي جعفر .. لكن الميزةفي فكرتك هي بمثابة خط الدفاع الأخير . يعني حتى لو تم إدخال البيانات عبر استعلام إلحاق مثلاً أو من مصدر خارجي ، سيأتي الحارس الشخصي للجدول وهو هنا الماكرو لإيقافها . سامحك الله أخي جعفر .. من أنا لأسمح أو أمنع .. لاحظ أن الشرط حماية هيكل الرواتب ( ربط الراتب بالدرجة ) ، فهذا الشرط لا يمكن عمله على مستوى الحقل أبداً ، لأننا هنا سنقارن حقلين ببعضهما . لذا ومن رأيي الشخصي ، لا بد من وجود قاعدة تعمل على مستوى السجل .
  14. فكرة جميلة جداً تجميع بين عدم ظهور الشروط في خصائص الحقول + القوة والمتانة + دعمها للرسائل العربية
  15. في آخر نسخة لك ، انظر للخلل في الإحصائيات :- وحيث تم إضافة العاطفة البرمجية ( مقتبس من مشروع RobotaAI ) لأخي أحمد يوسف . هذه النسخة الأخيرة من اللعبة بالإصدارين 32 و 64 .. X-O Game - 64.zip X-O Game - 32.zip إصدار تفاعلي أكثر مرونة عن اللعب ضد الكمبيوتر .. إضافة تفاعل عاطفي مزاجي للكمبيوتر عند اللعب ضده بحيث يكون متهاون حتى في ردود أفعاله النصية عند المستويات . حسم الأمر بالمستوى الصعب ، فليس دائماً يكون ارتكاز الكمبيوتر على مركز اللعبة ليلعب به دائماً .. الملف مفتوح المصدر :- X-O Game - Open Source.accdb
  16. احذف القديم ، وشغل الجديد يا هندسة .. 😎 معلمنا الفاضل ، انا مستغرب جداً من عدم عمل الإصدار 32 لديك .. انظر من جهاز آخر بالقرب مني ويعمل على أوفيس 2010 32 ..
  17. جرب كدة ونشوف النتيجة !! X-O Game - 32.zip X-O Game - 64.zip
  18. ماشي يا محمد .. الـ Bugs ده اللي بتتكلم عنه سببه إنك بالنقر على الأزرار بينما الكمبيوتر كان يفكر .. ولكن جاري المعالجة في المرفقات التي سيتم رفعها في المشاركة التالية .. على العموم ، انا زودت قفل زيادة علشان تفرح يا عم 😉
  19. لا لا يا هندسة ، مش ده قصدي !! ولا حتى قريب منه ، استغفر الله أن نظن بأحد ظناً سيء . على العكس ثقتنا كبيرة ببعضنا انا ناوي أشارك أفكاري من خلال ملفين مغلقين للتجربة وطرح الأفكار التي نفذتها بالتطوير على فكرتي الأساسية السابقة .. وهذين ملفين 32 و 64 للتجربة ، وإبداء الرأي لمن يريد . وثق تماماً أنني سأفرج عن الملف مفتوح المصدر بعد مشاهدة بعض المشاركات . X-O Game - 32.zip X-O Game - 64.zip
  20. تقصد بهذا الشكل ؟؟
  21. وعليكم السلااااااام ورحمة الله وبركاته .. وبما أنني من عشاق تصميم الألعاب في آكسيس .. وقد كان لي تجربة مع هذه اللعبة الجميلة ، وقد قمت بتضمينها ضمن برنامج إدارة النوادي الرياضية في هذا الموضوع هنا .. وكانت تجربتي بالشكل القديم التالي :- ولكن وبما أننا في 2026 ، فسأقوم بتطويرها بشكل أجمل ضمن هوايتي المتواضعة .😁.
  22. أهلاً بكم في انطلاقة سلسلتنا الجديدة "الفعاليات والتحديات الشهرية". في عالم قواعد البيانات ، المحترف الحقيقي ليس من يكتب مئات الأسطر من الأكواد ، بل هو "المعماري" الذي يبني قاعدة بيانات قوية ، ذكية ، وتحمي نفسها بنفسها ! تحدي اليوم سيعيدنا إلى الجذور ، إلى قوة محرك آكسيس الكامنة في جداوله . فهل أنت مستعد لخوض التجربة الأولى ؟؟ 📖 قصة التحدي :- طلب منك عزيزي المشارك ( مصنع تقني ) بناء نظام لإدارة شؤون الموظفين ، ولكن لديهم شروط صارمة جداً لمنع أي موظف مُدخِل بيانات من ارتكاب أخطاء . حيث أن الإدارة ترفض تماماً استخدام أكواد ( 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 محاولات لإجاباتك خلال التحدي الواحد فقط .
  23. شكراً لك أخي محمد على هذا التوضيح العميق والتفصيلي الذي اريده تماماً ، وقد حصلت على الزبدة منه بفضل الله أولاً ، ثم لشرحك الجميل .
×
×
  • اضف...

Important Information