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

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

قام بنشر

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

فى نموذج (Query_dataDor2) بيتم رصد درجات الدور الثانى للطلاب الراسبين فى بعض المواد ذات الدرجة باللون الأحمر بالدور الأول 

محتاج لما أضغط على زر تحديث الدرجة النهائية يعمل الآتى :

1- درجة الدور الأول طالما أكبر من أو تساوى 50 تترحل كما هى :

2- درجة الدور الثانى إذا كانت أصغر من 50 تترحل كما هى ، أما إن كانت أكبر من أو تساوى 50 تتحول لـ 50 

مثال توضيحى : الطالب الأول له دور ثان فى مواد ( الرياضيات - العلوم - اللغة الانجليزية ) 

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

الرياضيات مثلا  89 والعلوم 77 والانجليزى 77 إذًا أكبر من 50 تتحول لـ 50  ( ده النظام المعمول به إنه الطالب لو حصل على أكبر 50 يأخذ درجة الامتحان فقط  اللى هى 50 ) 

طيب لو حصل فى الرياضيات مثلا 36 تتحول لـ 36 ، وهكذا 

أتمنى تكون الفكرة وصلت 

 

cont.accdb

كما فى مثل هذه الصورة

Screenshot_٢٠٢٥-٠٧-٢٠-١٢-٠٦-٠٦-٩٣٩_com.miui.gallery-edit.jpg

قام بنشر

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

بدايةً وقبل الخوض في التجارب أكثر . جرب هذا الاستعلام الجزئي ، هل يفي بالغرض ؟

SELECT 
  data_dor2.name_student,
  data_dor2.National_ID,
  data_dor2.CLASS_CLASS,
  data_dor2.num_Glos,
  data_dor2.n_lgna_dor2,
  data_dor2.sery_dor2,
  data_dor2.Dor_Arb,
  data_dor2.Dor_Math,
  data_dor2.Dor_Drast,
  data_dor2.Dor_Since,
  data_dor2.Dor_Eng,
  data_dor2.Dor_comp,
  data_dor2.Dor_skills,
  data_dor2.Dor_Den,
  data_dor2.TDor_Arb,
  data_dor2.TDor_Math,
  data_dor2.TDor_Drast,
  data_dor2.TDor_Since,
  data_dor2.TDor_Eng,
  data_dor2.TDor_Comp,
  data_dor2.TDor_Skills,
  data_dor2.TDor_Den,
  data_dor2.N_Arb,
  data_dor2.N_Math,
  data_dor2.N_Drast,
  data_dor2.N_Since,
  data_dor2.N_Eng,
  data_dor2.N_Comp,
  data_dor2.N_Skills,
  data_dor2.N_Den,
  IIf(data_dor2.N_Arb=0, IIf(data_dor2.TDor_Arb>=50, data_dor2.TDor_Arb, data_dor2.TDor_Arb), IIf(data_dor2.TDor_Arb<50, data_dor2.TDor_Arb, 50)) AS Final_Arb,
  IIf(data_dor2.N_Math=0, IIf(data_dor2.TDor_Math>=50, data_dor2.TDor_Math, data_dor2.TDor_Math), IIf(data_dor2.TDor_Math<50, data_dor2.TDor_Math, 50)) AS Final_Math,
  IIf(data_dor2.N_Drast=0, IIf(data_dor2.TDor_Drast>=50, data_dor2.TDor_Drast, data_dor2.TDor_Drast), IIf(data_dor2.TDor_Drast<50, data_dor2.TDor_Drast, 50)) AS Final_Drast,
  IIf(data_dor2.N_Since=0, IIf(data_dor2.TDor_Since>=50, data_dor2.TDor_Since, data_dor2.TDor_Since), IIf(data_dor2.TDor_Since<50, data_dor2.TDor_Since, 50)) AS Final_Since,
  IIf(data_dor2.N_Eng=0, IIf(data_dor2.TDor_Eng>=50, data_dor2.TDor_Eng, data_dor2.TDor_Eng), IIf(data_dor2.TDor_Eng<50, data_dor2.TDor_Eng, 50)) AS Final_Eng,
  IIf(data_dor2.N_Comp=0, IIf(data_dor2.TDor_Comp>=50, data_dor2.TDor_Comp, data_dor2.TDor_Comp), IIf(data_dor2.TDor_Comp<50, data_dor2.TDor_Comp, 50)) AS Final_Comp,
  IIf(data_dor2.N_Skills=0, IIf(data_dor2.TDor_Skills>=50, data_dor2.TDor_Skills, data_dor2.TDor_Skills), IIf(data_dor2.TDor_Skills<50, data_dor2.TDor_Skills, 50)) AS Final_Skills,
  IIf(data_dor2.N_Den=0, IIf(data_dor2.TDor_Den>=50, data_dor2.TDor_Den, data_dor2.TDor_Den), IIf(data_dor2.TDor_Den<50, data_dor2.TDor_Den, 50)) AS Final_Den
FROM data_dor2
WHERE data_dor2.name_student Is Not Null;

 

وبناءً عليه نستكمل باقي المطلوب .. 

  • Like 1
قام بنشر
3 دقائق مضت, Barna said:

هل الصورة الموجودة في النموذج بعد التحديث هو المطلوب
 

1.jpg

نعم هو المطلوب مع الأخذ فى الاعتبار عند نقل درجة الدور الأول إلى الدرجة النهائية تبقى كما هى بالكسر يعنى 54.5 تبقى زى ما هى 

قام بنشر
5 دقائق مضت, Barna said:

هل الصورة الموجودة في النموذج بعد التحديث هو المطلوب
 

1.jpg

سبقتني في الإستكمال :clapping: ، وهي لك

لأني كنت على وشك ارفاق الصورة التالية أيضاً أخي @Barna 😅

 

image.png.1e0ec22e52f284013de54c8275f110d8.png

  • Like 2
قام بنشر
1 دقيقه مضت, Foksh said:

سبقتني في الإستكمال :clapping: ، وهي لك

لأني كنت على وشك ارفاق الصورة التالية أيضاً أخي @Barna 😅

 

image.png.1e0ec22e52f284013de54c8275f110d8.png

هو المطلوب بالضبط

  • Like 1
قام بنشر
1 دقيقه مضت, Foksh said:

لأني كنت على وشك ارفاق الصورة التالية أيضاً أخي

بل نريد الطريقة ربما افضل من طريقتي ونتعلم منها بارك الله فيك

 

قام بنشر

هذا الاستعلام الذي خرجت به كما في الصورة السابقة نتيجته :-

SELECT 
    name_student, 
    National_ID, 
    CLASS_CLASS, 
    num_Glos, 
    n_lgna_dor2, 
    sery_dor2, 
    Dor_Arb,
    Dor_Math,
    Dor_Drast,
    Dor_Since,
    Dor_Eng,
    Dor_comp,
    Dor_skills,
    Dor_Den,
    TDor_Arb,
    TDor_Math,
    TDor_Drast,
    TDor_Since,
    TDor_Eng,
    TDor_Comp,
    TDor_Skills,
    TDor_Den,
    
    IIF(IsNumeric([Dor_Arb]),
        IIF(Val(Nz([Dor_Arb],0))>=50, 
            Val([Dor_Arb]),
            IIF(IsNull([TDor_Arb]) OR Val(Nz([TDor_Arb],-1))=-1,
                0,
                IIF(Val([TDor_Arb])>=50, 50, Val([TDor_Arb]))
            )
        ),
    0) AS N_Arb,
    
    IIF(IsNumeric([Dor_Math]),
        IIF(Val(Nz([Dor_Math],0))>=50, 
            Val([Dor_Math]),
            IIF(IsNull([TDor_Math]) OR Val(Nz([TDor_Math],-1))=-1,
                0,
                IIF(Val([TDor_Math])>=50, 50, Val([TDor_Math]))
            )
        ),
    0) AS N_Math,
    
    IIF(IsNumeric([Dor_Drast]),
        IIF(Val(Nz([Dor_Drast],0))>=50, 
            Val([Dor_Drast]),
            IIF(IsNull([TDor_Drast]) OR Val(Nz([TDor_Drast],-1))=-1,
                0,
                IIF(Val([TDor_Drast])>=50, 50, Val([TDor_Drast]))
            )
        ),
    0) AS N_Drast,
    
    IIF(IsNumeric([Dor_Since]),
        IIF(Val(Nz([Dor_Since],0))>=50, 
            Val([Dor_Since]),
            IIF(IsNull([TDor_Since]) OR Val(Nz([TDor_Since],-1))=-1,
                0,
                IIF(Val([TDor_Since])>=50, 50, Val([TDor_Since]))
            )
        ),
    0) AS N_Since,
    
    IIF(IsNumeric([Dor_Eng]),
        IIF(Val(Nz([Dor_Eng],0))>=50, 
            Val([Dor_Eng]),
            IIF(IsNull([TDor_Eng]) OR Val(Nz([TDor_Eng],-1))=-1,
                0,
                IIF(Val([TDor_Eng])>=50, 50, Val([TDor_Eng]))
            )
        ),
    0) AS N_Eng,
    
    IIF(IsNumeric([Dor_comp]),
        IIF(Val(Nz([Dor_comp],0))>=50, 
            Val([Dor_comp]),
            IIF(IsNull([TDor_Comp]) OR Val(Nz([TDor_Comp],-1))=-1,
                0,
                IIF(Val([TDor_Comp])>=50, 50, Val([TDor_Comp]))
            )
        ),
    0) AS N_Comp,
    
    IIF(IsNumeric([Dor_skills]),
        IIF(Val(Nz([Dor_skills],0))>=50, 
            Val([Dor_skills]),
            IIF(IsNull([TDor_Skills]) OR Val(Nz([TDor_Skills],-1))=-1,
                0,
                IIF(Val([TDor_Skills])>=50, 50, Val([TDor_Skills]))
            )
        ),
    0) AS N_Skills,
    
    IIF(IsNumeric([Dor_Den]),
        IIF(Val(Nz([Dor_Den],0))>=50, 
            Val([Dor_Den]),
            IIF(IsNull([TDor_Den]) OR Val(Nz([TDor_Den],-1))=-1,
                0,
                IIF(Val([TDor_Den])>=50, 50, Val([TDor_Den]))
            )
        ),
    0) AS N_Den
    
FROM data_dor2
WHERE (((data_dor2.[name_student])<>"IsNull"));

 

  • Thanks 1
قام بنشر
8 دقائق مضت, The best said:

نعم هو المطلوب مع الأخذ فى الاعتبار عند نقل درجة الدور الأول إلى الدرجة النهائية تبقى كما هى بالكسر يعنى 54.5 تبقى زى ما هى 

استخدم هذه الشيفرة في زر التحديث مع اللاحقة له   ......

Private Sub أمر309_Click()
    Dim rst As DAO.Recordset
    Dim db As DAO.Database
    Dim ctl As Control
    Dim controlsList As New Collection
    Dim dorAwalField As String, dorThanField As String, finalField As String
    Dim dorAwalVal As Variant, dorThanVal As Variant, finalVal As Variant
    Dim i As Integer
    Dim excludedNames As Variant

    Set db = CurrentDb()
    Set rst = Me.RecordsetClone ' نسخة من مصدر بيانات النموذج

    ' أسماء الحقول التي نريد استثناؤها (اسم الطالب، رقم الجلوس)
    excludedNames = Array("name_student", "num_Glos")
    
    ' جمع الحقول الثلاثية فقط حسب الترتيب
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then
            If IsExcluded(ctl.Name, excludedNames) = False Then
                If ctl.ControlSource <> "" Then ' مرتبط بحقل فعلي
                    controlsList.Add ctl.ControlSource
                End If
            End If
        End If
    Next ctl

    ' المرور على كل سجل في النموذج
    If Not rst.EOF Then rst.MoveFirst

    Do While Not rst.EOF
        rst.Edit
        For i = 1 To controlsList.Count Step 3
            If i + 2 <= controlsList.Count Then
                dorAwalField = controlsList(i)
                dorThanField = controlsList(i + 1)
                finalField = controlsList(i + 2)

                dorAwalVal = Nz(rst(dorAwalField), 0)
                dorThanVal = Nz(rst(dorThanField), -1)

                If dorThanVal <> -1 Then
                    If dorThanVal >= 50 Then
                        finalVal = 50
                    Else
                        finalVal = dorThanVal
                    End If
                Else
                    finalVal = dorAwalVal
                End If

                rst(finalField) = finalVal
            End If
        Next i
        rst.Update
        rst.MoveNext
    Loop

    rst.Close
    Set rst = Nothing
    Set db = Nothing

    Me.Requery ' لتحديث العرض في النموذج
    MsgBox "تم تحديث جميع الدرجات النهائية بنجاح.", vbInformation
End Sub
Private Function IsExcluded(fieldName As String, excludedList As Variant) As Boolean
    Dim item As Variant
    For Each item In excludedList
        If LCase(fieldName) = LCase(item) Then
            IsExcluded = True
            Exit Function
        End If
    Next item
    IsExcluded = False
End Function

وهذا ملفك بعد التعديل ...............

cont.accdb

  • Like 1
قام بنشر

أحسنتما وبارك الله لكما وجعله فى ميزان حسناتكما ...

# عندى طلب آخر هل من الممكن جعل حقل الدور الثانى اللى سيتم رصده فقط مُمَكَّن والباقى غير مُمَكَّن 

قام بنشر
6 دقائق مضت, The best said:

عندى طلب آخر هل من الممكن جعل حقل الدور الثانى اللى سيتم رصده فقط مُمَكَّن والباقى غير مُمَكَّن 

تفضل .................

 

1.jpg

cont.accdb

قام بنشر
6 دقائق مضت, Barna said:

تفضل .................

 

1.jpg

cont.accdb 756 kB · 0 downloads

بعد تجريب الملف لاحظت ما يلى ومعلم عليه 

عند رصد (1-) للطالب وده معناه أنه غائب لاحظت بيكتب درجةالدور الاول لا انا عاوزه يكتب (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