الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد كود لللتنبية بايام الغياب

بدأه ahmedpros في 21 يوليو 2010 · 7 رد · 1,017 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الاعزاء اعضاء المنتدى الكريم

اقوم بتصميم برنامج لتسجيل الغياب اليومي لمدرسة

ولكن المشكلة اريد عند ادخال رقم الطالب

اذاكان هذا الطالب له عدد 7 ايام غياب يعطيني تنبية بذلك

واذاكان لة 15يوم متصلة او30 يوم منفصلة يعطيني تنبية بالفصل

وجزاكم الله خيرا

احمد سليمان

Copy of geab2010.rar

تم تعديل هذه المشاركة بواسطة ahmedpros في 21 يوليو 2010 في 17:58

#2
ahmedpros كتب:

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

اخواني الاعزاء اعضاء المنتدى الكريم

اقوم بتصميم برنامج لتسجيل الغياب اليومي لمدرسة

ولكن المشكلة اريد عند ادخال رقم الطالب

اذاكان هذا الطالب له عدد 7 ايام غياب يعطيني تنبية بذلك

واذاكان لة 15يوم متصلة او30 يوم منفصلة يعطيني تنبية بالفصل

وجزاكم الله خيرا

احمد سليمان

بصراحة برنامج حلو ناطر ردود المبرمجين

#3

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

أظن والله أعلم أن واحداً من الحلول الممكنة لهذه المسألة يمكن أن يتحقق بكود مثل التالي:

Dim rs As DAO.Recordset, intRecCount As Integer
            Set rs = CurrentDb.OpenRecordset("SELECT date FROM geab WHERE stud_id = '" & Me.stud_id & "'", dbOpenSnapshot)
            With rs
                If Not .EOF Then
                    .MoveLast
                    intRecCount = .RecordCount
                    If intRecCount >= 30 Then
                        MsgBox "عدد أيام غياب هذا التلميذ 30 يوماً على الأقل", vbCritical, "تنبيه بالفصل"
                    ElseIf intRecCount >= 7 Then
                        If intRecCount >= 15 Then
                            Dim i As Integer
                            For i = 1 To 15
                                If DCount("*", "geab", "stud_id = '" & Me.stud_id & _
                                               "' And date Between #" & DateAdd("d", -14, rs(0)) & _
                                               "# And #" & rs(0) & "#") = 15 Then
                                    MsgBox "عدد أيام غياب هذا التلميذ 15 يوماً على الأقل", vbCritical, "تنبيه بالفصل"
                                    Exit For
                                End If
                                .MovePrevious
                            Next i
                        Else
                            MsgBox "عدد أيام غياب هذا التلميذ 7 أيام على الأقل", vbInformation, "تنبيه بالغياب"
                        End If
                    End If
                    .Close
                End If
            End With
            Set rs = Nothing

وضعت هذا الكود في النموذج fr_beaanat بعد اختبار وجود الطالب في قاعدة البيانات مباشرة، وحددت بواسطة تعليق أين يبدأ الكود المضاف وأين ينتهي، وذلك في الملف المرفق.

فكرة الكود:

1. إنشاء مجموعة سجلات recordset تحوي كل أيام (تواريخ) غياب الطالب الحالي.

2. إذا كانت هناك سجلات بالفعل في هذه المجموعة (هناك أيام غياب)، الانتقال إلى آخر مجموعة السجلات، والحصول على عدد السجلات.

3. اختبار عدد السجلات:

إذا كانت أكبر أو يساوي 30، إظهار تنبيه بالفصل.

ما لم، إذا كانت مازالت أكبر أو تساوي 15، اختبار اتصال هذه الأيام (15 يزماً متصلة على التوالي أم لا).

ما لم، إذا كانت مازالت أكبر أو تساوي 7، إظهار تنبيه بالغياب.

4. إغلاق مجموعة السجلات، وتحرير الذاكرة المحجوزة لها.

العملية المعقدة هي التأكد من أن هنالك 15 يوماً متصلة من الغياب. وفكرته كالتالي:

نحن الآن في نقف على آخر سجل، وعدد السجلات 29 أو أقل.

ندور من السجل الأخير إلى الأمام 15 مرة فقط.

في كل مرة، نستعلم عن عدد السجلات التي تقع تواريخها بين تاريخ السجل الحالي، و14 يوماً قبله. إذا كانت هنالك 15 سجلاً بالضبط، فهذا يعني أن هنالك 15 يوماً متصلة. إذا كانت الأيام غير متصلة فإن الاستعلام عن سجلات بين هذين التاريخين سيعيد عدداً أقل من 15. إذا تحقق هذا الشرط في أي سجل، نظهر تنبيهاً بالفصل ونغادر حلقة التكرار.

نختبر بهذا الشكل 15 سجلاً فقط، لأن الباقي بعدها سيكون 14 سجلاً على الأكثر، فإن لم توجد 15 يوماً متصلة قبلها، فلن توجد بعدها كما هو واضح والله أعلم.

جرب هذا الحل أخي الكريم، وفي انتظار حلول أخرى من الآخرين...

Copy of geab2010.rar

#4

شكرا جزيلا اخي احمد مبارك

وجزاك الله خيرا على هذا الرد لقد جربت الكود

وقام بمهامة جيدا

ولكن اريد اضافة

وهي عند وصول عدد غياب الطالب الى 15 يوم منفصلة

يعطى تنبية بان هذا الطالب لة انذار اول

واذا وصل 21 انذار ثالث

واريداستعلا م للطلبة التى وصل عدد غيابها 7 ايام و15 يوم و 21 يوم و 30 يوم حتى يتم التعامل معهم وارسال الانذارات

واخيرا

في التقرير اليومي للمدرسة وهو باسم

q_kol_madrasa_yome

اذا ادخلت التاريخ يعطي ايام الغياب للمدرسة في هذا اليوم

ولكن يعطي كل غياب الصفوف بالجدول في تذييل التقرير

اجمالي غياب الصف الاول

الثاني

الثالث

اريدة ان يعطي غياب هذة الصفوف في هذا اليوم فقط

واسف جدا على الاطالة

واخيرا لك مني كل الشكر والتقدير

احمد سليمان

قمت ببعض التعديلات على الملف

في المرفق

new geab2010.rar

#5

السلام عليكم

اخواني اعضاء ومشرفي المنتدى الكريم

اامل ان يتم الرد على باقي الاستفسار للاهمية

ولكم جزيل الشكر

احمد سليمان

#6

الاخوة الاعزاء اعضاء ومشرفي المنتدى الموقر

الى الان لم يتم الرد على استفساري

ارجو منكم الرد ومساعدتي

ولكم جزيل الشكر

احمد سليمان

#7

وعليكم السلام ورحمة الله أخي الكريم،

مرفق الملف بعد التعديل، وفيه استعلام باسم q_warnings وتعديل في مود النموذج. هذا التعديل أصح من الكود الأول، لأنني اكتشفت خطأ منطقياً في الكود الأول... أرجو الاطلاع على الملف المرفق، والمعذرة.

أخوك أحمد

new geab2010.rar

#8

جزاك الله خيرا اخي العزيز احمد

واسف جدا على الاطالة عليك

قمت بتحميل الملف بعد التعديل

وجاري المعاينة والتجربة

احمد سليمان

مواضيع مشابهة