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

فكرة لتسجيل مخالفات الطلاب وخصمها بالدرجات


ha98

الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

أعزائي كل من محمد طاهر و أمير عاطف تحياتي لكما وللمجهودات المبذولة من قبلكما وشكرا لكما لكل ماتقدمانه في هذا المنتدى العظيم

عندي لمسة فنية ولكن لم افلح في عملها وبودي أن تساعداني في تحقيقها

لنفرض أن لدينا قاعدة بيانات بها 3 جداول

جدول الطلاب ، جدول المخالفات ، جدول تسجيل المخالفات

جدول الطلاب به الأعمدة التالية :

رقم الطالب ، اسم الطالب ، درجة المواظبة الكلية ، درجة المواظبة المستحقة (مثال )

1 ، صالح الماجد ، 100 ، 95

جدول المخالفات به الاعمدة التالية

رقم المخالفة ، وصف المخالفة ، درجة الحسم (مثال )

1 ، غياب بدون عذر ، ربع درجة ولكن من بعد المرة الثانية

جدول تسجيل المخالفات به الأعمدة التالية

الرقم ، رقم الطالب ، رقم المخالفة

أريد كتابة دالة تحسب عدد السجلات التي تخص طالب معين في جدول تسجيل المخالفات ومن ثم تطرح عدد السجلات من درجة المواظبة الكلية للطالب والموجودة في جدول الطلاب

بحيث :

1/ يتم مثلا خصم نصف درجة وليس درجة كاملة من درجات المواظبة لكل تأخير عن الطابور الصباحي ولكن من بعد المرة الثالثة (أي يتم خصم نصف درجة من درجة المواظبة للطالب صالح الماجد عندما يكون موجود في جدول تسجيل المخالفات اربع سجلات تخص صالح الماجد وتخص المخالفة تأخير عن الطابور الصباحي وبعدها تخصم نصف درجة تلقائيا لكل تسجيلة جديدة )

2/ أن يتم مثلا خصم ربع درجة من درجات المواظبة لكل غياب بدون عذر ولكن من بعد المرة الثانية (أي يتم خصم ربع درجة من درجة المواظبة للطالب صالح الماجد عندما يكون موجود في جدول تسجيل المخالفات ثلاث سجلات تخص صالح الماجد وتخص غياب بدون عذر وبعدها تخصم ربع درجة تلقائيا لكل تسجيلة جديدة )

أتمنى ان يكون ماأطلبه واضحا ويمكن تحقيقه

تحياتي للجميع

  • Thanks 1
رابط هذا التعليق
شارك

السلام عليكم

أخي الكريم ، أرجو اتباع قواعد الاسئلة المثبتة ، من حيث عدم توجيه السؤال الي شخص أو أشخاص بعينهم

بالنسبة للموضوع ، فهو قابل للتطبيق باستخدام دوال تجميع المجال

و هي مشروحة هنـــــــــــا

فى قسم الدوال فى الارشيف من هنــــا

و للتأكد من رقم المخالفة للطالب ستسخدم الدالة Dcount

و للحصول علي القيمة المناظرة لرقم المخالفة سنستخدم

DLookup

بتطبيق للدالتين مع استخدام if الشرطية يتم اجراء الاختبار من المنوذج بالكود ، و سيتم تحديد القيمة الجزائية بناء علي جدول الجزاءات و عدد التكرار فى الجدول نفسه

فاقرا الموضوع عاليه و ابدأ ، و ان لم تصل لما تريد فستجد التعاون من الجميع باإذن الله حتي تكمل المثال

مع تحياتي

رابط هذا التعليق
شارك

عزيزي المشرف محمد طاهر

في البداية عذرا على مخالفة قوانين المنتدى لجهلي بها

راجعت قسم الدوال وعرفت وظيفة الدالة Dcount ووظيفة الدالة DLookup ولكن مشكلتي ياعزيزي أنني لاأعرف كيف اكتب الكود اللازم لعمل هذا ولا أجيد ترتيب خطواته وادخال if الشرطية فيه

لو تكرمت انت او اي واحد من الخيرين في هذا المنتدى أن يرفق لي مثال في المنتدى ولو لفقرة واحدة من الفقرات السابقة أتعلم من الكود

كيفية تنظيم الخطوات وترتيبها مثلا متى استخدم Dcount ومتى استخدم DLookup وأين مكان if من الكود

واستفيد منها في تكملة باقي المشروع لأنه في الحقيقة مشروع ضروري أسويه للمدرسة اللي أنا فيها

تحياتي لكم

رابط هذا التعليق
شارك

اذاً لعمل ذلك باسلوب علمي ... يجب ان يكون لدينا ثلاث جداول

اولا:

جدول الطلاب واسمه مثلاً tblstudents

ويحتوي على الحقول التالية

student_id (رقم الطالب) المفتاح الأساسي

strstudent_name (اسم الطالب)

ثانياً:

جدول الجزاءات واسمه مثلاً tblrecompenses

ويحتوي على الحقول التالية

recompense_id (رقم الجزاء) المفتاح الأساسي

strrecompense_description (وصف الجزاء)

intdiscount (درخة الحسم)

bytperiod_after (وهو حقل المدة التي يتم تطبيق الحسم بعدة)

ثالثاً:

جدول تسجيل عمليات الجزاءات واسمه مثلاً tbltransaction وهو جدول الوصلة

ويتكون من الحقول التاليه

student_id (حقل رقم الطالب) وهو ذو علاقة واحد الى متعدد مع جدول tblstudents

recompense_id (حقل رقم الجزاء) وهو ذو علاقة واحد الى متعدد مع جدول tblrecompenses

اي كل ما نفعله في هذا الجدول هو تسجيل رقم الطالب رقم الجزاء فقط

وبذلك نكون قد حققنا الاسلوب العلمي والقياسيNormalization في تصميم قاعدة البيانات

رجاء مراجعة الجزء الخاص بتصميم الجداول والجزء الخاص بالاستعلامات من دورة الأكسس لما به من فائدة كبيرة ومن خلالها تم عمل المثال المرفق بالمشاركة السفلية

تم تعديل بواسطه امير عاطف
رابط هذا التعليق
شارك

مشرفنا العزيز أمير عاطف والله ماقصرت ودائما ماتتحفنا

بأفكارك الجميلة أثابك الله على ماتقدمه من مساعدات لغيرك ولكن حبيت استفسر منك لو حبيت مثلا احدد درجة المواظبة لكل طالب بحيث لما احب اعمل استعلام لدرجة مواظبة طالب معين حيث درجة مواظبة الطالب = 100 - عدد الدرجات المخصمة فكيف يمكنني عمل ذلك

ثانيا لاحظت شيئا ما وهو انك لم تستعمل الدوال التي نوه عنها الاستاذ محمد طاهر فهل استعضت بلغة sql بدلا منها في الاستعلامات

ثالثا qry1 لم افهمه 100%

تحياتي وتقديري الكبيرين لك ياكبير

رابط هذا التعليق
شارك

المسألة ليست استعاضة الدوال بالاستعلامات ولكن هناك اكثر من فكرة لعمل ذلك واعتقد ان هناك افكار افضل لعمل ذلك ... ولو قمت بقراءة الجزء الذي تم انجازه بدورة الأكسس حتى الان والجزء الخاص بالدوال بقسم خلاصة مشاركات الاكسس بتمعن سوف تجد نفسك تجد افكار اخرى يمكن العمل من خلالها :d

بالنسبة للاستعلام qry1 فهو الذي يحسب عدد الجزاءات لكل طالب عن طريق الدالة Count راجع الاستعلام وتمعن به جيداً وبعد ذلك تم استنتاج الاستعلام المسمى qry2 من هذا الاستعلام وتم استخدام الدالة iif لحساب الدرجات المخصمة من كل طالب اعتماداً على الاستعلام qry1

اما بالنسبه لحساب درجة المواظبه فيمكنك عمل ذلك بالطبع بدون اضافة حقل بجانب كل طالب لكتابة النهاية العظمى للمواظبة وذلك باضافة حقل بالاستعلام المسمى qry2 ووضع هذه القيمة بداخلة

درجة المواظبة: 100-[عدد الدرجات المخصمة]

رابط هذا التعليق
شارك

شكرا لك مرة اخرى عزيزي اخي أمير

ولكن قصدي اجمع كل درجات الحسم لجميع مخالفات احمد واطرحها من 100 لأحصل على درجة المواظبة

على فكرة عملت استعلام جديد على qry2 واخترت فقط

عمودان هما strstudent_name (ووضعن عليه تجميع حسب ) و ج: عدد الدرجات المخصمة (ووضعت عليه sum)

ولكن بعده يطلع عندي خطأعدم توافق نوع البيانات في المعايير فما الحل

تحياتي

رابط هذا التعليق
شارك

اولاً بالنسبه للخطأ الذي يظهر "عدم توافق نوع البيانات في المعايير فما الحل" فهذا بسبب انه وجد قيمة نصيه في وسط الأرقام ويمكن معالجة ذلك عن طريق استبدال القيمة النصيه الي تم استخدامها مع الداله iif برقم صفر

قم بعمل نموذج جديد مصدر السجل الخاص به هو جدول الطلاب tblstudents وبعد ذلك قم بوضع مربع نص وضع به المعادلة التالية

=100-DSum("[عدد الدرجات المخصمة]";"qry2";"student_id = forms!formname!student_id")

هنا بالطبع استخدمنا الدالة Dsum

لا تنسى مراجعة شرح الدوال بقسم خلاصة مشاركات الأكسس :WU:

الملف المرفق

absense.zip

تم تعديل بواسطه امير عاطف
رابط هذا التعليق
شارك

  • 2 weeks later...

أخي العزيز أمير عاطف كم أنا ممتن لك لما قدمته لي وتقدمه انت والمشرف العزيز محمد طاهر

بودي اسألك حول مشاركتي السابقة فكرة لتسجيل المخالفات وخصمها بالدرجات والتي قدمت لي فيها ميكانيكية الخصم بعد تسجيل المخالفات

من ضمن نماذج المشروع كان هناك نموذج اسمه formname وكان هذا النموذج يسرد اسماء الطلاب ودرجات المواظبة لهم

وذلك بعد أن يخصم درجات الحسم من 100

ماأريد عمله هو ان يكون في هذا النموذج مربع نص اكتب فيه الحرف الاول من اسم الطالب الذي أريد معرفة درجة مواظبته

فتخرج لي أسماء كل الطلاب الذين اسماؤهم تبدأ بنفس الحرف مع درجات المواظبة التابعة لهم

حاولت كثيرا لعمل ذلك ولم افلح

اتمنى المساعدة في هذا

شيء آخر الطلبة الذين لم تسجل لهم أي مخالفات تظهر اسماؤهم ولكن في خانة درجة المواظبة لايظهر أي نص أو رقم

هل من الممكن أن تظهر الدرجة 100 في هذه الخانة

تحياتي وتقديري لك

رابط هذا التعليق
شارك

======================================

الأخ العزيز ha98 :

من قواعد طرح الأسئلة بالمنتدى عدم طرح الأسئلة لأشخاص محددين حتى يتسنى لكل المشاركين ولأي شخص يعرف الاجابه ان يضع الرد حيث ليس الرد مقصور على المشرفين وليس شرط ان يعرف المشرف اجابة سؤالك ....... ارجو ان تتقبل ذلك بصدر رحب :)

======================================

بالنسبه للبحث بمجرد كتابة الحرف الأول يمكنك الاستفادة من هذين الموضعين بقسم الخلاصات:

البحث بمجرد الكتابة مباشرةً (داخل قائمة)

البحث بمجرد الكتابة مباشرةً (داخل نموذج فرعي)

اما بالنسبه لكي تجعل درجة مواظبة الطلاب الملتزمين 100% استبدل كود المعادلة التي داخل مربع النص الخاص بدرجة المواظبه بالكود التالي:

=IIf(DCount("[عدد الدرجات المخصمة]";"qry2";"student_id = forms!formname!student_id")>0;100-DSum("[عدد الدرجات المخصمة]";"qry2";"student_id = forms!formname!student_id");"100%")

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information