لدي استعلام أنشأت له حقل محسوب يقسم الحقل الأول على الحقل الثاني ولكن المشكلة التي تظهر عند احتواء أحد سجلات الحقل الثاني على القيمة صفر مثال
الحقل الأول =5
الحقل الثاني =0
الحقل الأول ÷ الحقل الثاني = قيمة غير منطقية
ماهو الحل ؟؟؟
لدي استعلام أنشأت له حقل محسوب يقسم الحقل الأول على الحقل الثاني ولكن المشكلة التي تظهر عند احتواء أحد سجلات الحقل الثاني على القيمة صفر مثال
الحقل الأول =5
الحقل الثاني =0
الحقل الأول ÷ الحقل الثاني = قيمة غير منطقية
ماهو الحل ؟؟؟
الأخ مجد
سؤال جيد ولم أنتبه له من قبل في عمليات الحساب في الاستعلام ، وقد عملت حل مؤقت يصلح لمثل هذه الحالات وإن كنت اعتقد أنه يوجد حل من ميكروسوفت لأن مثل هذا الأمر لا أظن أن يمر بدون حل مع بساطته .
اليك الحل ضع السطر التالي في شبكة الاستعلام مع تغيير ما يلزم :
ناتج القسمة: [اسم الحقل المقسوم]/IIf([اسم الحقل المقسوم عليه]=0;1;[اسم الحقل المقسوم عليه])
سأبحث إن لم أنسى عن حل أفضل من هذا ولكن كما يقولون مشي حالك به حتى يتوفر الأفضل .
ولك تحياتي
السلام عليكم و رحمة الله و بركاته
نظرا لتكرار الحاجة لهذا ، كنت قد أعددت بعض الدوال للتغلب علي مثل هذه الحالات
Function nvl1(inputval As Variant, checkval As Variant) As Variant If IsNull(inputval) Then 'Or inputval = 0 Then nvl1 = checkval Else nvl1 = inputval End If End Function Function nvl2(inputval As Variant, checkval As Variant) As Variant If IsNull(inputval) Or inputval = 0 Then nvl2 = checkval Else nvl2 = inputval End If End Function Function zvl(inputval, checkval, valifyes, valifno) If (inputval) = checkval Then zvl = valifyes Else zvl = valifno End If End Function
الأخ مصراوي
لكن سؤال الأخ كان في الاستعلام يعني كيف يستفيد من الدوال التي ذكرتها في الاستعلام ؟
الأمر الثاني أن الكود :
[اسم الحقل المقسوم]/IIf([اسم الحقل المقسوم عليه]=0;1;[اسم الحقل المقسوم عليه])
يعمل في VBA وهو مكون من سطر واحد مع ملاحظة تغيير الفاصلة المنقوطة بالفاصلة العادية .
اعتقد أنه يوجد حل ولابد ولكن ماهو .... ؟
ولك تحياتي
السلام عليكم و رحمة الله و بركاته
فى الاستعلام
result: [Table1]![number1]/nvl2([Table1]![number2];1)
و من خلال الدوال الثلاثة يمكن الحصول علي الناتج بحسب رغبة المستخدم ففي المثال السابق اذا كان البسط صفر فنقسم علي 1
و من الممكن استخدام الدالة فى المقام أيضا
الاخوة الاعزاء
مثال : نفرض الحقل المقسوم = A
نفرض ان الحقل المقسوم عليه = B
نفرض ان الحقل المحتسب = C
بفرض ان الحقل A به قيمة = 0
وبفرض ان الحقل B به قيمة = 0
ففى هذه الحالة نضع الدالة التالية فى حقل C
C= IIF(A=0;0;IIF(B=0;0;(A/B)))
مع ملاحظة تغيير الفاصلة المنقوطة بفاصلة عادية اذا احتاج الامر لذلك فى كتابة الداله .
وهذه الدالة كثيرا ما استعملها وخاصة فى الاكسل باستثناء ان فى الاكسل IF بدلا من IIF فجربوها وستنفع باذن الله .
جزاكم الله خيراً جميعاًً
وزادكم الله علماً ومعرفة
هذا الموضوع مغلق.