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

داله ناجح راسب في الخلايا الفارغة


nizarqassm
إذهب إلى أفضل إجابة Solved by jjafferr,

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

السلام عليكم كتبت داله iif لكتابة ناجح وراسب ولكن مشكلتي في الخلايا الفارغة ايضا يكتب فيها راسب لانها فارغة ... 

فكيف يكون اذا كانت الخليه فارغة لا تحتوي على درجة لا يكتب راسب 

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

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

وعليكم السلام 🙂

 

اذن ، اذا لم يوجد رقم ، تريده لا يتكتب شيء ، فيمكننا استعمال الامر IsNumeric([Grade]) (هل حقل Grade رقم) ، جرب هذا الكود :

iif(IsNumeric([Grade]);""; iif([Grade]<50; "راسب"; "ناجح"))

 

 

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

شكرا جزيلا استاذ 

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

IIf([الاسلامية الدرجة بعد الاكمال]>=49.5 And [العربية الدرجة بعد الاكمال]>=49.5 And [الانكليزية الدرجة بعد الاكمال]>=49.5 And [الرياضيات الدرجة بعد الاكمال]>=49.5 And [الحاسوب الدرجة بعد الاكمال]>=49.5 And [الفيزياء الدرجة بعد الاكمال]>=49.5 And [الكيمياء الدرجة بعد الاكمال]>=49.5 And [الاحياء الدرجة بعد الاكمال]>=49.5 And [علم الارض الدرجة بعد الاكمال];"ناجح ";"راسب")

 

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

14 دقائق مضت, jjafferr said:

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

هل تقصد ارفق لك الجدول الخاص باليبانات

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

عملت استعلام ، يرسل رقم المعرف الى الدالة Pass في وحدة نمطية ، ويحصل على النتيجة منها :

image.png.3aa1b39d2d21057d6690526392c68749.png

.

وهذه الدالة (تركت لك بقية حقول الجدول ، قد تستفيد منها لاحقا) :

Option Compare Database
Option Explicit

    Dim rst As DAO.Recordset
'

Function Pass(ID As Long) As String
On Error GoTo err_Pass

'IIf([الاسلامية الدرجة بعد الاكمال]>=49.5 And [العربية الدرجة بعد الاكمال]>=49.5 And [الانكليزية الدرجة بعد الاكمال]>=49.5 And [الرياضيات الدرجة بعد الاكمال]>=49.5 And [الحاسوب الدرجة بعد الاكمال]>=49.5 And [الفيزياء الدرجة بعد الاكمال]>=49.5 And [الكيمياء الدرجة بعد الاكمال]>=49.5 And [الاحياء الدرجة بعد الاكمال]>=49.5 And [علم الارض الدرجة بعد الاكمال];"ناجح ";"راسب")

    Set rst = CurrentDb.OpenRecordset("SELECT * FROM [الصف الخامس جميع الدرجات] WHERE [المعرف]=" & ID)
    
    If Len(rst![الاسلامية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![العربية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الانكليزية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الرياضيات الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الحاسوب الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الفيزياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الكيمياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الاحياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![علم الارض الدرجة بعد الاكمال] & "") = 0 Then
        
        Pass = ""
        
    ElseIf rst![الاسلامية الدرجة بعد الاكمال] >= 49.5 And _
        rst![العربية الدرجة بعد الاكمال] >= 49.5 And _
        rst![الانكليزية الدرجة بعد الاكمال] >= 49.5 And _
        rst![الرياضيات الدرجة بعد الاكمال] >= 49.5 And _
        rst![الحاسوب الدرجة بعد الاكمال] >= 49.5 And _
        rst![الفيزياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![الكيمياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![الاحياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![علم الارض الدرجة بعد الاكمال] >= 49.5 Then

        Pass = "ناجح"
    Else
        Pass = "راسب"
    End If
    
    
Exit_Pass:

    rst.Close: Set rst = Nothing
    Exit Function

err_Pass:

    If Err.Number = 1 Then
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_Pass
    End If
    
'a = [المعرف]
'a = [تسلسل]
'a = [اسم الطالب الرباعي]
'a = [الصف]
'a = [الشعبة]
'a = [التولد]
'a = [رقم القيد]
'a = [رقم الصفحة]
'a = [اسم الام]
'a = [سنوات الرسوب]
'a = [آخر مدرسة]
'a = [الملاحظات]

'a = [اسلامية معدل النصف الاول]
'a = [اسلامية درجة نصف السنة]
'a = [اسلامية معدل النصف الثاني]
'a = [اسلامية درجة السعي السنوي]
'a = [اسلامية درجة امتحان آخر السنة]
'a = [اسلامية الدرجة النهائية]
'a = [الاسلامية درجة الاكمال]
'a = [الاسلامية الدرجة بعد الاكمال]

'a = [اسلامية]
'a = [العربية]
'a = [الكردية]
'a = [الانكليزية]
'a = [الرياضيات]
'a = [الحاسوب]
'a = [الفيزياء]
'a = [الكيمياء]
'a = [الاحياء]
'a = [علم الارض]

'a = [العام الدراسي]
'a = [نتيجة الدور الاول]
'a = [نتيجة الدور الثاني]
'a = [نتيجة الطالب]
'a = [مواد الاكمال]
'a = [رفـع بقرار بالمواد الدراسية]
'a = [الدرجة المضافة]
'a = [من]
'a = [الى]
'a = [باقي القرار]
'a = [مواد الاعفاء]
'a = [نوع الاعفاء]


End Function

 

والنتيجة من البيانات التي في الجدول:

image.png.4ea549ddb80045d0e88a5c3c6f5694fe.png

 

1570.test.accdb.zip

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

  • أفضل إجابة

واذا عندك صفوف غير "الصف الخامس جميع الدرجات" ، فيمكننا تعديل الدالة ، بحيث تستخدمها لجميع الصفوف :

 

image.png.09dc7b9f5cd96af522d60c9f5a92920d.png

 

والدالة:

Option Compare Database
Option Explicit

    Dim rst As DAO.Recordset
'

Function Pass(ID As Long, Clss As String) As String
On Error GoTo err_Pass

    'Clss= Class = اسم جدول الصفوف مثل: الصف الخامس جميع الدرجات
    'ID = المعرف = معرف السجل
    
'IIf([الاسلامية الدرجة بعد الاكمال]>=49.5 And [العربية الدرجة بعد الاكمال]>=49.5 And [الانكليزية الدرجة بعد الاكمال]>=49.5 And [الرياضيات الدرجة بعد الاكمال]>=49.5 And [الحاسوب الدرجة بعد الاكمال]>=49.5 And [الفيزياء الدرجة بعد الاكمال]>=49.5 And [الكيمياء الدرجة بعد الاكمال]>=49.5 And [الاحياء الدرجة بعد الاكمال]>=49.5 And [علم الارض الدرجة بعد الاكمال];"ناجح ";"راسب")

    Set rst = CurrentDb.OpenRecordset("SELECT * FROM [" & Clss & "] WHERE [المعرف]=" & ID)
    
    If Len(rst![الاسلامية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![العربية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الانكليزية الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الرياضيات الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الحاسوب الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الفيزياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الكيمياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![الاحياء الدرجة بعد الاكمال] & "") = 0 Or _
        Len(rst![علم الارض الدرجة بعد الاكمال] & "") = 0 Then
        
        Pass = ""
        
    ElseIf rst![الاسلامية الدرجة بعد الاكمال] >= 49.5 And _
        rst![العربية الدرجة بعد الاكمال] >= 49.5 And _
        rst![الانكليزية الدرجة بعد الاكمال] >= 49.5 And _
        rst![الرياضيات الدرجة بعد الاكمال] >= 49.5 And _
        rst![الحاسوب الدرجة بعد الاكمال] >= 49.5 And _
        rst![الفيزياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![الكيمياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![الاحياء الدرجة بعد الاكمال] >= 49.5 And _
        rst![علم الارض الدرجة بعد الاكمال] >= 49.5 Then

        Pass = "ناجح"
    Else
        Pass = "راسب"
    End If
    
    
Exit_Pass:

    rst.Close: Set rst = Nothing
    Exit Function

err_Pass:

    If Err.Number = 1 Then
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_Pass
    End If
    
'a = [المعرف]
'a = [تسلسل]
'a = [اسم الطالب الرباعي]
'a = [الصف]
'a = [الشعبة]
'a = [التولد]
'a = [رقم القيد]
'a = [رقم الصفحة]
'a = [اسم الام]
'a = [سنوات الرسوب]
'a = [آخر مدرسة]
'a = [الملاحظات]

'a = [اسلامية معدل النصف الاول]
'a = [اسلامية درجة نصف السنة]
'a = [اسلامية معدل النصف الثاني]
'a = [اسلامية درجة السعي السنوي]
'a = [اسلامية درجة امتحان آخر السنة]
'a = [اسلامية الدرجة النهائية]
'a = [الاسلامية درجة الاكمال]
'a = [الاسلامية الدرجة بعد الاكمال]

'a = [اسلامية]
'a = [العربية]
'a = [الكردية]
'a = [الانكليزية]
'a = [الرياضيات]
'a = [الحاسوب]
'a = [الفيزياء]
'a = [الكيمياء]
'a = [الاحياء]
'a = [علم الارض]

'a = [العام الدراسي]
'a = [نتيجة الدور الاول]
'a = [نتيجة الدور الثاني]
'a = [نتيجة الطالب]
'a = [مواد الاكمال]
'a = [رفـع بقرار بالمواد الدراسية]
'a = [الدرجة المضافة]
'a = [من]
'a = [الى]
'a = [باقي القرار]
'a = [مواد الاعفاء]
'a = [نوع الاعفاء]


End Function

 

1570.1.test.accdb.zip

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

استاذ الفاضل 

ايضا كتبت كلمة راسب ... وحقول الدرجات فارغة بمجرد كتابة اسم الطالب تظهر كلمة راسب 

 

قصدت اذا كانت حقول الدرجات فارغة يبقى حقل النتيجة فرغ يبدو ان البرنامج يتعامل مع الحقول الفارغة على انها صفر 

يي.jpg

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

اخي الفاضل نزار ، انا لم اذكر النماذح ولم اتعامل معها ، فعملي كان في الاستعلام 100%

اعطني دقيقة لتعمل الذي تريده

تفضل ، تم تغيير مصدر بيانات النموذج الى الاستعلام 

1570.2.test.accdb.zip

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

2 ساعات مضت, شايب said:

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

هذا الموضوع

علمت بطريقتين

الاولى مباشرة على النموذج بدون الحاجة لاستعلام باستخدام خاصية tag حددت الحقول العشرة بعلامة *

ثم عملت حلقة تمر على الحقول المحددة اذا كان فارغ نعود بفارغ وننهي الاجراء

وان كانت الحقول غير فارعة نعوض بـ 1 لكل حقل اكبر او يساوي الحد الادنى للنجاح او نعوض بصفر

ثم اذا كان العدد =10 ناجح اقل راسب

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

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

وايضا بنفس طريقة العد

على كل حال لعل لنا لقاء في موضوع اخر

اخيرا ايضاح من اخونا شايب

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

 

الشايب9.gif

  • 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