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

طريقة اضافة شرط if في حقل محسوب

مغلقمُجاب
بدأه anas6666 في 19 مارس 2013 · 9 رد · 2,295 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

الاخوة الكرام قمت بانشاء جدول لمشاريع انشائية ومن ضمن الحقول يوجد حقل "نسبة الانجاز" ونوعه "محسوب" استناداً على عدة حقول في نفس الجدول ، والمخرج يطون بصيغة النسبة مثل 48% وهكذا ..

 

تكمن المشكلة بان النسبة تصل في بعض المشاريع الى اكثر من 100% وهذا خطأ برمجي 

 

المطلوب يااحبتي هو انه عند وصول النسبة الى اكثر من 100% يتم ارجاع النسبة الى 100% تلقائياً 

 

 

واعتذر عن عدم ارفاق المرفق لتقييدها من الشركة 

 

وبارك الله فيكم

#2

ممكن يكون المثل هكذا:

text1=A+B+C

ويكون text1 اكثر من 100%

ممكن تعمل الآتي:

text1=iif((A+B+C)>100,100,(A+B+C))

 

هل هذا المطلوب ؟

 

جعفر

#3

تستطيع كتابة دالة تحكم Control Function بسيطة جدا كالتالي

Public Function Adjust100(dblInput As Double) As Double
'
    On Error GoTo Err_Handler
    
    If dblInput > 100 Then
        Adjust100 = 100
    Else
        Adjust100 = dblInput
    End If

Exit_Here:
    Exit Function

Err_Handler:
    Adjust100 = 0
        
End Function

ثم ضع هذه الدالة في وحدة نمطية قياسية Standard Module. وفي كل مرة تُريد أن تتحكم في قيمة عدد ما بحيث لا يتجاوز المائة، أكتبه بالشكل التالي

Adjust100(xyz)

أو إذا كان لديك متغير - وليكن اسمه مثلا dblProjectComplete ، تستطيع أن تتحكم في قيمته بتمرير إلى الدالة أعلاه، كالتالي

Adjust100(dblProjectComplete)


أما إذا كان لديك استعلام من قاعدة البيانات، وتُريد أن تضمن ألا يتم جلب حقل بقيمة أعلى من من 100، فتستطيع كتابة استعلامك بإدراج الدالة أعلاه داخل الاستعلام، كالتالي على سبيل المثال:

 

SELECT ProjectID, ProjectName, ProjectPhase, Adjust100(ProjectCompletion) FROM Projects;

بالتوفيق،

عبدالله،،،
 

#4
anas6666 كتب:

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

 

الاخوة الكرام قمت بانشاء جدول لمشاريع انشائية ومن ضمن الحقول يوجد حقل "نسبة الانجاز" ونوعه "محسوب" استناداً على عدة حقول في نفس الجدول ، والمخرج يطون بصيغة النسبة مثل 48% وهكذا ..

 

تكمن المشكلة بان النسبة تصل في بعض المشاريع الى اكثر من 100% وهذا خطأ برمجي 

 

المطلوب يااحبتي هو انه عند وصول النسبة الى اكثر من 100% يتم ارجاع النسبة الى 100% تلقائياً 

 

 

واعتذر عن عدم ارفاق المرفق لتقييدها من الشركة 

 

وبارك الله فيكم

 

 

 

الأخ / جعفر 

 

قمت بتجربة هذا الكود

=IIf([Percntage Compleed]>1;1;([Now Quarter End]-[N T P])/([End of Contract]-[N T P]))

في الحقل المطلوب بالتقرير ولم يفلح

حث كانت النتيجة  # نوع!

Ab Techno كتب:

تستطيع كتابة دالة تحكم Control Function بسيطة جدا كالتالي

Public Function Adjust100(dblInput As Double) As Double
'
    On Error GoTo Err_Handler
    
    If dblInput > 100 Then
        Adjust100 = 100
    Else
        Adjust100 = dblInput
    End If

Exit_Here:
    Exit Function

Err_Handler:
    Adjust100 = 0
        
End Function

ثم ضع هذه الدالة في وحدة نمطية قياسية Standard Module. وفي كل مرة تُريد أن تتحكم في قيمة عدد ما بحيث لا يتجاوز المائة، أكتبه بالشكل التالي

Adjust100(xyz)

أو إذا كان لديك متغير - وليكن اسمه مثلا dblProjectComplete ، تستطيع أن تتحكم في قيمته بتمرير إلى الدالة أعلاه، كالتالي

Adjust100(dblProjectComplete)

أما إذا كان لديك استعلام من قاعدة البيانات، وتُريد أن تضمن ألا يتم جلب حقل بقيمة أعلى من من 100، فتستطيع كتابة استعلامك بإدراج الدالة أعلاه داخل الاستعلام، كالتالي على سبيل المثال:

 

SELECT ProjectID, ProjectName, ProjectPhase, Adjust100(ProjectCompletion) FROM Projects;

بالتوفيق،

عبدالله،،،

 

شكرا لك اخوي عبدالله 

 

ساحاول تطبيقها باذن الله

#5

اخي انس

 

هل النص كما كتبت: 

[Percntage Compleed]

او انك اخطأت ونسيت حرف مثل t مثلا ، رجاء التأكد من الاسم!!

حيث يكون النص

[Percntage Completed]

 

جعفر

#6
jjafferr كتب:

اخي انس

 

هل النص كما كتبت: 

[Percntage Compleed]

او انك اخطأت ونسيت حرف مثل t مثلا ، رجاء التأكد من الاسم!!

حيث يكون النص

[Percntage Completed]

 

جعفر

 

اخي جعفر النص مثل ماهو 

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

#7

إذا حبيت ، ممكن ترسل لي النموذج اللي تجري فيه هذه العملية الحسابية ، وأحاول اشوف لك وين المشكلة :)

جعفر

#8 أفضل إجابة

جرب هاي المعادلة:

 

 

IIf(([Now Quarter End]-[N T P])/([End of Contract]-[N T P])>1,1,([Now Quarter End]-[N T P])/([End of Contract]-[N T P]))

 

 

جعفر

2
#9

جزاك الله خير اخي جعفر 

 

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

 

IIf(([Now Quarter End]-[N T P])/([End of Contract]-[N T P])>1;1;([Now Quarter End]-[N T P])/([End of Contract]-[N T P]))

#10

هممم

على بركة الله :)

 

جعفر

هذا الموضوع مغلق.

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