-
Posts
4515 -
تاريخ الانضمام
-
Days Won
196
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
تمهيداً للتحدي الثاني ، وللإنتقال إلى مرحلة أكبر عن المستوى الأول . وإنطلاقاً من باب المشاركة للجميع . سنتجه للأخذ بترشيحكم لموضوع من بين 3 مواضيع ، ليتم طرحه كسؤال التحدي الثاني . 1️⃣ إنشاء مؤقتة الصلوات .. 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. 3️⃣ إنشاء نظام قارئ للنصوص متعدد الخصائص ..
-
المشاركة التالية كان لها نصيب الإعجاب في إجابتها . للأخ @Debug Ace . في هذه المشاركة هنا
-
أخواني وأساتذتي ومعلمينا ( دون استثناء ) الكل مر بحياته على هاي اللعبة البسيطة والجميلة ، إن كان في طفولته أو في شبابه .. واليوم جسدناها بطريقة فوكشية جديدة من خلال آكسيس ، وتحدي معوقاته بالتعامل مع الصور .. وبدون ما نتكلم في هذه النقطة - واللي رح أتركها لكم للتجربة - رح أشرحلكم اليوم اللعبة ببساطة للي ما بعرفها من قبل . تتكون اللعبة من مجموعة من الأوراق ، تتمثل في :- أوراق الأرقام : تحتوي اللعبة على أوراق الأرقام (9-0) ضمن ألوان مختلفة : الأحمر ، الأصفر ، الأزرق ، الأخضر . بطاقات الأوامر : تختلف هذه البطاقات في اللون والأمر الذي يترتب على استخدامها ، وهي كالآتي :- بطاقة تغيير الاتجاه : تُمكن اللاعب من تغيير سير اللعبة من اليسار إلى اليمين أو العكس . وإذا كانت اللعبة مكونة من لاعبين اثنين فقط ، يتم تخطي دور اللاعب الآخر ويعود الدور للّاعب الذي لعب البطاقة . بطاقة السحب +2 : وتمكن اللاعب من إجبار اللاعب التالي على سحب ورقتين من كومة الأوراق . ويتم تخطي دوره وينتقل الدور للّاعب الذي يليه . بطاقة تخطي الدور : تمكن اللاعب من منع اللاعب التالي من لعب دوره القادم وينتقل الدور للاعب الذي بعده . بطاقة السحب +4 : وتمكن اللاعب من اختيار اللون الذي سيلعبه اللاعب التالي ، وإجباره على سحب 4 أوراق من كومة الأوراق . ويتم تخطي دوره وينتقل الدور للّاعب الذي يليه . بالنسبة إلى توزيع الأوراق في الأونو ، يتم التوزيع بشكل عشوائي ، حيث يوزع 7 أوراق لكل لاعب ويضع باقي الأوراق بشكل مقلوب على يسار منطقة اللعب ، وتسمى ( كومة اللسحب ) . وييتم وضع آخر ورقة بشكل مكشوف في منتصف منطقة اللعب ، وهذا المكان يسمى ( النار ) ، وإذا كانت أوّل ورقة مكشوفة في النار هي بطاقة تغيير اللون أو بطاقة اسحب 4 ، هنا يجب إعادتها لكومة الأوراق وتسحب ورقة أخرى غيرها . طريقة اللعب :- يبدأ اللاعب باللعب في نسختنا ، وذلك برمي أي ورقة في النار ، على أن توافق هذه الورقة آخر ورقة في النار بأحد الشرطين :- - اللون نفسه من أي قيمة . - القيمة نفسها من أي لون . ينتقل الدّور بين اللاعبين باتجاه عقارب الساعة ، وإذا لم يمتلك أحد اللاعبين ورقة أو بطاقة مناسبة للّعب ، يجب عليه أن يسحب من كومة الأوراق . زر الأونو :- وهي كلمة يقولها اللاعب إذا تبقت في يده ورقة أو ورقتان ، وسيلعب إحداهما ويضعها في كومة النار ، هنا يجب أن يقول " أونو " لتحذير اللاعبين الآخرين قبل رمي ورقته ما قبل الأخيرة ، وإذا لم يُحذّر اللّاعب من امتلاكه بطاقة واحدة وانتبه عليه اللاعبون الآخرون سيُعاقب بسحب بطاقتين من كومة الأوراق وهذا ما أطلقنا عليه اسم تحدي الأونو 😁 . في نموذج البداية ، تم إضافة وتفعيل 3 خيارات للتحكم بخصائص اللعبة . بحيث لديك :- 1️⃣ السماح بالسحب التراكمي عند رمي ورقة السحب +2 . ماذا يعني هذا ؟ يعني لو اللاعب رمى ورقة +2 ، والكمبيوتر معه ورقة +2 ، فالكمبيوتر بقدر يرمي الورقة اللي معه بغض النظر عن لونها . وهيك بكون الدور عندك إنك تسحب 4 ورقات . إلا إذا كان معك ورقة +2 ثانية ، فبتقدر ترميها . وبرجع الدور للكمبيوتر يسحب 6 ورقات ..... وهيك بشكل تراكمي . 2️⃣ السماح بتبديل الأوراق عند رمي أي لاعب ورقة 0 أو ورقة 7 مهما كان لونها . فسيتم تبديل الأوراق التي بيدك لتصبح بيد الكمبيوتر والعكس طبعاً 😜 . 3️⃣ السحب من كومة الورق حتى يجد اللاعب ورقة صالحة للّعب . يعني بدل ما تسحب ورقة وحدة ، رح تضل تسحب حتى تلاقي ورقة ترميها للنار . 4️⃣ تحديد قيمة النتيجة التي يفوز اللاعب الذي يصل لها أولا . فعند فوز أي لاعب ، يأخذ مجموع القيم للأوراق التي في اللاعب الثاني . والإحتساب كما يلي لقيمة كل ورقة . طريقة حساب النقاط :- تحسب النقاط في لعبة أونو كما يأتي :- أوراق الأرقام = قيمة الورقة نفسها . بطاقة اسحب 2 = 20 نقطة . بطاقة تخطّي الدّور = 20 نقطة . بطاقة تغيير الاتّجاه = 20 نقطة . بطاقة تغيير اللّون = 50 نقطة . بطاقة اسحب 4 = 50 نقطة . صورة حية من اللعبة :- ملفات اللعبة للإصدارين ، 64 و 32 :- للإصدار 32 :- Uno Game - 32.zip للإصدار 64 :- Uno Game - 64.zip :- يجب أن يكون ملف اللعبة بجانب مجلد الصور حتى لا تواجه مشاكل في اللعب .
-
أخي الكريم ، وعليكم السلام ورحمة الله وبركاته .. فيما يخص طلبك ، اعتقد أنه مخالف لقوانين المنتدى ولأخلاقياته . حيث أن أصحاب الملفات المحمية بكلمة مرور قاموا بالتعب على مشروعهم وملفهم بحمايته من أيدي العابثين . أو ممن لهم هوايات بكسر الحماية . لذا فإنك لن تجد رداً لطلبك هنا للأسف . شكراً لتفهمك سيتم اغلاق الموضوع لمخالفته الإجابات لو تمت .
-
انتهت المدة المحددة للتحدي الأول ، ونشكر جميع من قام على هذا الدعم والمشاركة .. وسيتم إختيار الإجابة التي نالت الإعجاب بالتقييم قريباً. وسيتم الإعلان أيضاً عن التحدي الثاني قريباً جداً بإذن الله تعالى ، وذلك بالتصويت لنوع وموضوع التحدي الذي تفضلونه من بين مجموعة مواضيع. شكراً لكم 💐
-
⏳ باقي من الوقت : 3 أيام حتى نهاية التحدى الأول
-
⏳ باقي من الوقت : 5 أيام حتى نهاية التحدى الأول
-
وعليكم السلام ورحمة الله وبركاته .. أهلاً أخي أمين ، وبارك الله بك على هذه المبادرة الجميلة .. بدايةً ، واعلم أنك قد طرحت فكرة من تطبيقك وخطوة بخطوة ، وهو شيء جميل شعورك بأنك استطعت نقل الفكرة وتطبيقها ونجاحها معك . ولذا ومستقبلاً ومن باب التطوير لك ، إليك نصيحة قد تكون الخطوة الأولى لبناء مشروع سليم . تتلخص بما يلي :- عدم إستعمال المسميات العربية للحقول أو العناصر أو المكونات بشكل عام ( حقول ، جداول ، استعلامات ، مربعات نص أو أزرار .... إلخ ) . عدم استعمال المسافات بين أسماء المكونات التي تتكون من مقطعين أو أكثر ، وهنا لاحظت إنك تلافيت هذه النقطة باستخدامك الشرطة السفلية أو العادية ( ـ ، - ) في معظم الأحيان . حاول دائماً مستقبلاً - ( إن شاء الله ) - أن يكون لأسماء العناصر دلالة عليها . بدلاً من استعمال الأسماء الإفتراضية مثل text0 , text1 أو أمر12 ، أمر45 ... إلخ . كي تسهل عليك الإستدلال عليها دون الحاجة للتنقل بين هنا وهناك لمعرفة وتذكر و كتابة أسمائها عند الإستدعاء داخل الأكواد . لاحظت أيضاً أنك استخدمت سطر VBA لأيقاف وتشغيل التنبيهات عند حذف سجل من الجدول ، وهذه نقطة إيجابية وجميلة منك انك استخدمتها ، بدلاً من الرسائل المزعجة التي يظهرها آكسيس عند حذف أو إضافة أو تعديل سجل أيضاً لاحظت أنك قمت بتبسيط الأمور على من يريد الإستفادة من فكرتك ، فالأكواد بسيطة جداً ومفهومة و واضحة ، ولا تحتاج ترجمة حتى يتقنها من يريد الإتقان والفهم . شكراً لك على مشاركتك الجميلة ، ونأمل منك أن لا تقطعنا من أفكارك التي تساعد بها من يحتاجها
-
⏳ باقي من الوقت : 7 أيام حتى نهاية التحدى الأول
-
وهذه فكرة تجمع بين عرض التكرارات التي يتنافس فيها الطلاب حسب رغبتك .. Data_Base_Rep.zip
-
بسيطة أخي الكريم .. يعني انت تريد إظهار الطلاب الذين في المركز الرابع مثلاً جميعهم بالتمييز بينهم ( متكرر ) !!!!!!! انا لم أقترب من الدالة التي قمت بإنشائها ، حرصاً على أنه قد يكون مطلبك .. لكن بعد التوضيح ، إليك التعديل الذي تم على الدالتين أولاً :- Public Function fncTrteeb() Dim rst As Object Dim RankNumber As Long ' تصفير الحقل أولاً CurrentDb.Execute "UPDATE Q_top10 SET trteeb = Null" Set rst = CurrentDb.OpenRecordset("SELECT * FROM Q_top10 ORDER BY average DESC, StudentID ASC", 2) If rst.RecordCount = 0 Then Exit Function rst.MoveFirst RankNumber = 0 Do While Not rst.EOF And RankNumber < 10 RankNumber = RankNumber + 1 rst.Edit rst!trteeb = GetArabicRank(RankNumber) rst.Update rst.MoveNext Loop rst.Close Set rst = Nothing End Function Public Function GetArabicRank(ByVal n As Long) As String Select Case n Case 1: GetArabicRank = "الأول" Case 2: GetArabicRank = "الثاني" Case 3: GetArabicRank = "الثالث" Case 4: GetArabicRank = "الرابع" Case 5: GetArabicRank = "الخامس" Case 6: GetArabicRank = "السادس" Case 7: GetArabicRank = "السابع" Case 8: GetArabicRank = "الثامن" Case 9: GetArabicRank = "التاسع" Case 10: GetArabicRank = "العاشر" Case Else GetArabicRank = "المركز " & n End Select End Function والإستعلام سيصبح بهذاالشكل :- SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, GetArabicRank(( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND (F2.average > F.average OR (F2.average = F.average AND S2.StudentID < S.StudentID)) ) + 1) AS RankText FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC , S.StudentID; في الاستعلام القديم كان المنطق هو ( احسب كم طالب معدله أكبر مني ) ؟؟ فإذا كان هناك طالبان معدلهما متساوٍ ( مثلاً 91% ) ، فإن كلاهما سيجد نفس العدد كترتيب من الطلاب المتفوقين عليهما ، وبالتالي يأخذان نفس الرقم ( مثلاً المركز 2 ) ، ثم يقفز الترتيب للمركز 4 مباشرة . أما في الاستعلام المعدل ، إذا تساوى طالبان في المعدل ، انظر لرقم الطالب ؛ صاحب الرقم الأصغر يعتبر هو الأسبق . وبالنسبة لي هذا غير منطقي ، فلا بد من شرط ثاني لتحديد المنافس على نفس المركز !!!! 💥 وفي هذا الموضوع هنا ، قد تطرقنا مع مشاركة أخي @ابو جودي لنفس الفكرة تقريباً . وملفك بعد التعديل :- Data_Base.zip
-
اهاااا ، بعد متابعة النتيجة ، وجدت أنه يأتيك بجميع الطلاب للفصل الأول والصف الثامن وعددهم 16 على سبيل المثال .. وأنت تريد فقط 10 جرب هذا الإستعلام التالي :- SELECT TOP 10 S.StudentID, S.StudentName, S.ClassName, S.SETNO1, F.SemesterID, F.TotalSum, F.average, F.Grade, ( SELECT COUNT(*) FROM TBL_Final1 AS F2 INNER JOIN TBL_Students AS S2 ON F2.StudentID = S2.StudentID WHERE F2.SemesterID = F.SemesterID AND S2.ClassName = S.ClassName AND F2.average > F.average ) + 1 AS RankOrder FROM TBL_Students AS S INNER JOIN TBL_Final1 AS F ON S.StudentID = F.StudentID WHERE F.SemesterID = [أدخل رقم الفصل] AND S.ClassName = [أدخل اسم الصف] ORDER BY F.average DESC, S.StudentID ASC;
-
وعليكم السلام ورحمة الله وبركاته .. جرب هذا المرفق بعد تثبيت التطبيقين المرفقين معه لدعم السحب من السكانر أو الفيدر Scanner 2 PDF.zip
-
بدايةً ، وعليكم السلام ورحمة الله وبركاته .. لديك نقطة واحد فقط كان عليك إدراكها . وهي إضافة الحقل ClassID من الجدول F ، وجعل الشرط [أدخل اسم الصف] له وليس للحقل ClassName من الجدول S . قبل تجربة المرفق ، جرب دون النظر للمرفق حتى تفهم المقصود من كلامي .. مع العلم أن ملفك يعمل معي بشكل سليم باستخراج الأوائل . إلا إن كان هناك نقطة لم تتوضح في شرحك 😀 Data_Base.zip
-
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
باختصار شديد :- ضرورة فتح برنامج Outlook في الكمبيوتر الذي تريد استعمال الأداة فيه . وتقوم بتسجيل بريدك الذي ستستعمله في الإرسال من Outlook فقط . السبب هنا أننا سنستعمل السيرفر أو الخدمة المدمجة في مايكروسوفت نفسها والمنفذ نفسه الذي يستعمله برنامج Outlook بشكل خفي خلف الكواليس .. فقط لا غير . -
مشكلة عدم تطابق عدد السجلات مع حقل ترقيم تلقائي
Foksh replied to حافظ التونسي's topic in قسم الأكسيس Access
سؤالي الذي أريد منك إجابة مقنعة له حتى نصل إلى جوهر المشكلة لنجد لها حلاً .. لماذا تشترط أن يكون الترقيم مرهوناً ومقروناً ومساوياً بعدد السجلات التي لديك .. يعني لو حذفت السجل رقم 4 من أصل السجلات 1500 والتي هي فعلاً تطابق الترقيم ، فهل تريد أن يكون الترقيم للسجل الجديد = 1500 أما لاستخدام الدالة DMAX مثلاً ، فعليك أولاً تغيير نوع الحقل من ترقيم تلقائي الى حقل رقمي ، ثم في مربع النص داخل النموذج تستعمل الجملة = Nz(DMax("[BL n°]", "BL"), 0) + 1 في القيمة الإفتراضية لمربع النص داخل النموذج . -
مشكلة عدم تطابق عدد السجلات مع حقل ترقيم تلقائي
Foksh replied to حافظ التونسي's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته .. نوع الحقل BL n° في جدول BL هو AutoNumber . أي ترقيم تلقائي . وهذا من الطبيعي يا صديقي لأنه عندما تدخل أي قيمة في أي حقل داخل الجدول ، فإن آكسيس يعتبره سجل جديد ويقوم بحجزه حتى عند حذفه أو إلغاء الإدخال والتراجع . يعني انت لو حذفت السجل رقم 2 من أصل السجلات الـ 6 التي لديك لتصبح 5 ، فإن السجل الجديد لن يكون رقمه 6 بل سيصبح 7 وهذا كله شأن الترقيم التلقائي . لذا استخدم للترقيم حقل رقمي باستعمال DMAX مثلاً . أما المشكلة الأولى التي ذكرتها لم تظهر عندي للأسف بعد فتح سجلات جديدة كثيرة -
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
تم تحديث الملف المرفق في المشاركة السابقة ، لوجود السطر التالي زائداً سهواً .. Opt_01_AfterUpdate -
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
إصلاح مشكلة الإرسال على دفعات ، حسب الوقت الذي يقرره المستخدم من خانتي . ضبط مشكلة Yahoo عند استلامه بريد من Gmail ، والسبب طبعاً في هذه المشكلة هو سيرفر الـ Yahoo نفسه لما يفرضه من قيود أمان . وحيث أنه يمكن للمستخدم اعتبار الإيميل Not Spam عند استلامه بريد من Gmail . إتاحة الإرسال من Outlook كما فعلنا في Gmail . حيث على المستخدم فقط تشغيل تطبيق الـ Outlook وتفعيل بريده مرة واحدة فقط لا غير . وبعدها لن نحتاج للتطبيق أبداً أو حتى فتح التطبيق بالخلفية أو بأي شكل من الأشكل . السبب في هذا هو عدم فرض قيود مايكروسوفت على المستخدم نهائياً . تحسين ردود الرسائل في الجدول Tbl_SentLog ، بحيث تكون أوضح للمستخدم عن سبب الخلل عند فشل الإرسال ، كي يتم التعامل مع الخلل بشكل مباشر . تحسين وإصلاح بعض النقاط الصغيرة . EmailSender V.2.0.accdb.zip -
وإياكم أخي الكريم .. تقبل الله منا ومنكم صالح الأعمال والطاعات ، ومبارك عليكم الشهر الفضيل
-
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
أهلاً بشمهندس محمد ، في حقيقة الأمر هناك مشكلة في الطريقة التي استخدمها حالياً مع Gmail لعدم توافقها مع سيرفر مايكروسوفت لما يفرضه من قيود محكمة وغريبة جداً بهذا الشكل ، لكن من قال أنني لا أسعى بأن تكون الأداة متكاملة 😁 ... فعلياً في الوقت الحالي ، جاري العمل على حل مشكلة استقبال سيرفر الياهو للرسائل المرسلة باعتبارها Spam ، ولكن هنا الأمر أيضاً مفروض جبرياً من نفس سيرفر الياهو ، ولكن حلها تقريباً شبه مكتمل الأوجه والتنفيذ ، أو للمستخدم المستقبل اعتبار البريد الوارد غير مزعج وبالتالي ستعود الرسائل التالية الواردة منه في صندوق الوارد مباشرة ، وهذا ما أشجعه حقيقة لعدم كسر قيود الحماية أو التجاوز عنها أما بخصوص البريد المرسل من مايكروسوفت عموماً ، فالفكرة قيد العمل إن شاء الله ، وقد تم إنهاء 70% من مرحلة التجارب ومتابعة الأخطاء . والنتيجة :- -
ارسال ايميل جيميل ⭐ هدية ~ إرسال بريد إلكتروني من Gmail الى أي إيميل ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
حياك الله أخي منتصر .. في الحقيقة اعتقد أن هذه مشكلة تخص الياهو نفسه . السبب في عدم اهتمامي لموقع الـ Yahoo هو حتى أنه حالياً لا يقوم بفتح حساب جديد 😅😅 .. ولا يقبل تسجيل الدخول الى حسابي رغم انه يقول لي انه مستخدم بالفعل . أما ملاحظتك الثانية والمهمة ، وأشكرك على طرحها . فقد تركتها في حقيقة الأمر لغير الإلزام بالجدول حصراً ، وقد نوهت للقارئ أنه يستطيع اختيار أي جدول آخر يريده في مشروعه شريطة أن يقوم بإضافة حقل الإسم أولاً ثم الحقل الإيميل . يعني العمود الأول للإسم والثاني للإيميل ، والكود تلقائياً سيتعامل مع الحقل الثاني كمرسل له . -
وعليكم السلام ورحمة الله وبركاته .. بدايةً وللتأكيد مما فهمت ، انت تريد فتح التقرير بناءً على الشرطين ، بحيث يتم فتح التقرير من الزر في النموذج الفرعي 🙄 !!! هكذا ... ؟؟؟ saad.zip أم أنا فهمت الفكرة بشكل خاطئ 😅
-
تفضل أخي الكريم .. أولاً وجدت خطأ في اسم النموذج مصدر الشرط وهو رقم الحريف ليصبح في جميع الشروط التي يطلبها :- [forms]![F_BL]![ref_client] بدلاً من :- [forms]![BL]![ref_client] قمت بتعديل الاستعلام R_Solde_Finale_par_client ، ليصبح كالتالي :- SELECT T_Client.Ref_Client, R_Total_vente_client_solde.Total_Vente AS TV, R_Total_Recette_client_solde.Total_Recette AS TRC, R_Total_Retour_client_solde.Total_retour AS TRT, (Nz([TV],0)-Nz([TRC],0)-Nz([TRT],0)) AS Net FROM R_Total_Retour_client_solde RIGHT JOIN ((R_Total_Recette_client_solde RIGHT JOIN T_Client ON R_Total_Recette_client_solde.Ref_client = T_Client.Ref_Client) LEFT JOIN R_Total_vente_client_solde ON T_Client.Ref_Client = R_Total_vente_client_solde.ref_client) ON R_Total_Retour_client_solde.Ref_Client = T_Client.Ref_Client; والسبب هو أنه في الاستعلام النهائي أنت لم تقم بإضافة الحقل Ref_Client إليه الآن في النموذج في مربع النص Texte45 ، أصبح مصدره :- =DLookUp("Net","R_Solde_Finale_par_client","Ref_Client = " & [ref_client]) وتستطيع أيضاً إضافة الدالة NZ لتلافي القيم الفارغة لتصبح مثلاً :- =Nz(DLookUp("Net","R_Solde_Finale_par_client","Ref_Client = " & [ref_client]),0) النتيجة :- ملفك بعد التعديل :- E G P_test.zip