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

احتساب النتيجة عن طريق وحدة نمطية


omran2015

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

هل يمكن إحتساب النتيجة في الاستعلامين عن طريق وحدة نمطية بحيث يتم يتم استدعاء النتيجة إلى الاستعلامين من الوحدة النمطية: بحيث يكون كالتالي:

أولاً: استعلام  Q_Final1  (الدور الأول (1) Semester ) يتم احتساب النتيجة إذا نجح الطالب في جميع المواد فهو ناجح - وإذا رسب في مادة أو أكثر له دور ثان  

ثانياً: استعلام Q_Final2  (الدور الثاني (2) Semester) يتم احتساب النتيجة إذا كان الطالب نجح في جميع المواد فهو ناجح -

وإذا رسب في أقل من أربع مواد فهو مكمل

وإذ رسب في أكثر من  ثلاث مواد فهو راسب (باقٍ للإعادة) 

Data_Base.rarData_Base.rar

 

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

42 دقائق مضت, Moosak said:

الملف المرفق فارغ أخي عمران ..
لا تظهر الجداولا ولا الاستعلامات ..

أسف أخي الحبيب تم إظهار الجداول والاستعلامات

ملاحظة: درجة النجاح: الحصول على النهاية الصغرى 50

الاحتساب يكون عن طريق  TR1 - TR2 - TR3 - TR4 - TR5 - TR6  

أما TR7 فغير داخلة في المجموع

Data_Base.rarData_Base.rar

 

 

 

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

السلام عليكم \مشاركه مع اخى الاستاذ @Moosak جزاه الله خيرا

اتفضل حاجه على قد حالى عملت لك اول طلب على اول استعلام

حاول تنفذ انت الطلب التانى اخى @omran2015

Function dragat(t1 As Integer, t2 As Integer, t3 As Integer, t4 As Integer, t5 As Integer, t6 As Integer)
    If t1 >= 50 And t2 >= 50 And t3 >= 50 And t4 >= 50 And t5 >= 50 And t6 >= 50 Then
        dragat = "ناجح"
    Else
        dragat = "دور ثان"
    End If
End Function

بالتوفيق

Data_Base.mdb

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

بارك الله فيك أخي الفلاحجي على ردك الطيب ولكن ليس هذا ما أريد

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

في منشئ التعبير والاحتساب يكون عن طريق الكود ثم يتم الاستدعاء الى الاستعلام فقط.

هذا أفضل تقريباً من منشئ التعبير ولهذا أرفقت المثال للتعديل عليه

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

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

تفضل هذه المحاولة

للحصول على نتيجة الفصل الأول 

Public Function Semester1(StudintID As Integer) As String

Dim AllMwad As Integer, Set1 As Integer, Set2 As Integer
        'Set1 = ناجح   /  Set2= دور ثاني
AllMwad = DCount("*", "Q_Final1", "ID=" & StudintID)
Set1 = DCount("*", "Q_Final1", "ID=" & StudintID & " And resultt='ناجح'")
Set2 = DCount("*", "Q_Final1", "ID=" & StudintID & " And resultt='دور ثان'")

If AllMwad = Set1 Then
    Semester1 = "ناجح"
Else
    Semester1 = "دور ثان"
End If
Debug.Print Semester1

End Function

و للحصول على نتيجة الفصل الثاني

Public Function Semester2(StudintID As Integer) As String

Dim AllMwad As Integer, Set1 As Integer, Set2 As Integer

AllMwad = DCount("*", "Q_Final2", "ID=" & StudintID)
Set1 = DCount("*", "Q_Final2", "ID=" & StudintID & " And resultt='ناجح'")
Set2 = DCount("*", "Q_Final2", "ID=" & StudintID & " And resultt='راسب'")

If AllMwad = 0 Then
    Semester2 = "لم يختبر"

ElseIf AllMwad = Set1 Then
    Semester2 = "ناجح"

ElseIf Set2 < 3 Then
    Semester2 = "مكمل"

ElseIf Set2 > 3 Then
    Semester2 = "باقٍ للإعادة"

End If
Debug.Print Semester2

End Function

و للاستدعاء كما يلي

نتيجة الفصل الأول
Call Semester1([ID])

نتيجة الفصل الثاني
Call Semester2([ID])

 

image.png.47c457f15338f94093cace0cdf121c56.png

 

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

 

Data_Base.zip

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

سبقني إليها الأستاذ د.كاف يار أثناء اشتغالي بها ما شاء الله عليه 🙂 

هذه محاولتي .. جعلتها في دالة واحدة للفصلين ، وأضطررت لإضافة حقل ترقيم تلقائي في كلا الجدولين للتأكد من وجود رقم مميز لكل سجل وعدم اختلاط النتائج .. 🙂 

Public Function FinalResult(ID As Long, TblFinal As String) As String

Dim x As Integer: x = 0
Dim n As String
Dim TR1 As Double
Dim TR2 As Double
Dim TR3 As Double
Dim TR4 As Double
Dim TR5 As Double
Dim TR6 As Double
Dim DB As DAO.Database
Dim RS As DAO.Recordset

Set DB = CurrentDb
Set RS = DB.OpenRecordset("select * from " & TblFinal & " where [AutoNum] = " & ID & " ;")
    TR1 = RS!TR1
    TR2 = RS!TR2
    TR3 = RS!TR3
    TR4 = RS!TR4
    TR5 = RS!TR5
    TR6 = RS!TR6
If TR1 < 50 Then x = x + 1
If TR2 < 50 Then x = x + 1
If TR3 < 50 Then x = x + 1
If TR4 < 50 Then x = x + 1
If TR5 < 50 Then x = x + 1
If TR6 < 50 Then x = x + 1

Select Case TblFinal
    Case "TBL_Final1"
        If x >= 1 Then
        n = "دور ثان"
        Else
        n = "ناجح"
        End If
        FinalResult = n
    Case "TBL_Final2"
        If x > 0 And x < 3 Then
        n = "مكمل"
        ElseIf x >= 4 Then
        n = "باقٍ للإعادة"
        ElseIf n = 0 Then
        n = "ناجح"
        End If
        FinalResult = n
End Select

RS.Close
Set DB = Nothing
Set RS = Nothing

End Function

والنتيجة في العمود الأخير لكلا الاستعلامين ..

image.png.19aa9a4b839505e04319c417d840ecbf.png

 

 

image.png.acd7295903fb115b356dc105e224186e.png

 

احتساب النتيجة عن طريق وحدة نمطية.mdb

تم تعديل بواسطه Moosak
  • Like 2
رابط هذا التعليق
شارك

في 27‏/3‏/2022 at 16:03, omran2015 said:

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

الأمور شغالة تمام معانا 🙂 

image.png.226e4a5c060d38c4f37f03f21816e9c8.png

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

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