• 0
SANDANET

لماذا دالة الجمع sum لاتجمع القيم الموجبة مع السالبة في الاستعلام

سؤال

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

 

أخوتي الكرام لدي مثال مرفق فيه استعلام يقوم بجمع الاعداد التابعة لجهة معينة لكني لاحظت ان دالة الجمع فيه لا تجمع الأعداد السالبة مع الموجبة ..فهل من حل لذلك ؟

 

وشكراً لكل من يقدم يد العون 

example.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

11 إجابة على هذا السؤال .

  • 0

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

 

أخي الكريم يبدو أن المشكلة كانت تكمن في الصف نفسه.. حيث أنني حذفت الصف الذي به [ثلاجة - المدينة - 5] وكتبته من جديد فتم الحساب بخصم [ثلاجة 1-] ليكون المجموع [4 ثلاجات]

 

اتمنى أن تكون حلت معك المشكلة

 

خالص تحياتي

example.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراأ لك أخي عبدالرحمن على المساعدة وفعلاً المشكلة كما وصفتها انت لكنها مشكلة غريبة فلايوجد مايشير الى التسبب بهذا الخلل ..اتمنى ان يفيدنا احد الأخوة بالسبب لتلافي حدوث مثل هذه المشاكل مستقبلاً .. تحياتي 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام :)

 

جرب عمل اللي في الصورة ، وبعدين سنتناقش ان شاء الله :)

post-273849-0-16540600-1412948774_thumb.

 

 

جعفر

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي جعفر أشكرك جزيل الشكر على المساعدة ..المشكلة تم حلها وهي غريبة نوعا ما .. المشكلة كانت في خانة الملاحظات فعد احتوائها على قيمة خالية في الجدول فإن عملية الجمع في الاستعلام تستثني الارقام التي لديها قيم فارغة في خانة الملاحظات فكان لابد من إزالة خانة الملاحظات من الاستعلام لتجنب تلك المشكلة

تم تعديل بواسطه SANDANET
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم اعرف هذا الشئ :)

لهذا لوسمحت ، استخدم برنامجك الاصلي الذي فيه المشكلة ، ثم اعمل الاستعلام اللي ارفقته لك ، وستظهر لك كل النتائج :)

 

انا سأوضح لك السبب ، فقط عندما تجرب الاستعلام اعلاه على قاعدة بياناتك التي كان بها هذه المشكلة :)

هذا اذا كنت لاتزال تريد تعرف السبب :)

 

 

جعفر

تم تعديل بواسطه jjafferr
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 أستاذي العزيز جعفر أحييك على هذا المجهود الرائع في متابعة المواضيع المطروحة ومساعدتك لنا .. اسألك الله ان يوفقك دنيا وآخرة وان يجعل اعمالك هذه كلها في ميزان حسناتك .. أخي الكريم جعفر يؤسفني انني لم ارفق البرنامج الاصلي الذي كنت اعمل عليه لأنه خاص بجهة معينة تملك حقوقه وقد تم تسليمه .. ولكني جربت الاستعلام الذي ارفقته لي وكان لدي سؤال على الامر val ماهي وظيفته بالتحديد؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حياك الله أخي :)

 

آسف ما كان قصدي ان ترفق برنامجك ، ولكن كان قصدي انك تجرب الاستعلام اللي انا عملته ، وتجربه في المرفق في مشاركتك الاولى (اللي ما كان الرقم السالب ينجمع فيها) :)

 

 

1. الحقل Amounts

نوع الحقل Amounts هو نص ، فعادة لا تستطيع جمع قيمة النص ، لذا فاننا نخبر البرنامج ان يحول لنا النص الى قيمة Val معناها Value ، ومن ثم تكون العملية الحسابية صحيحة :)

مع ان المجموع عندك كان صحيح بدون Val ، ولكن قد تواجه مشاكل في اماكن اخرى في الكود :)

 

2. الحقل notes

أ- الحقول في قواعد البيانات قد تكون غير ممسوسة (اي لم يتم الكتابة فيها مسبقا) ، وتسمى Null ،

ب- وحقول اخرى تكون قد كتبت فيها ، وقد تكون مسحت البيانات منها (هذا الذي كان حاصل في قيمة notes للرقم السالب) ، وتسمى Empty ،

ج- بالنسبة لأكسس ، التعامل مع هذين النوعين يختلف ، ويعاملهما الاكسس على انهما قيمتان مختلفتان (وهذه كانت المشكلة في عدم جمع الاكسس بياناتك ، يعني كأنّ عنك قيم مختلفة ، لهذا ما كان يجمع قيم notes في مجموعة واحدة) ،

د- بسبب ج ، ترى في الكثير من البرامج ترى ان المبرمج لا يعرف اذا الحقل Null او Empty ، فانه يستعمل الكود التالي:

if IsNull([notes])=true OR [notes]="" then

وبدل هذين الشرطين ، انا دائما استعمل شرط واحد يدمج الشرطين:

if Len([notes] & "")=0 then

هـ - السبب ان الاستعلام اللي انا وضعته لك يشتغل ، هذا لآني استعملت الامر Nz ، والذي معناه انه اذا كانت الخانة Null ، فحول قيمتها الى اي قيمة نريد (وانا في هذه الحاله حولتها الى "" اي Empty) ، لذلك ، فاصبحت قيم جميع خانات notes الى  Empty ، فاصبحت متشابهه ، فقام الاستعلام بجمعها :) ،

الامر Nz وهو خاص بالاكسس فقط ، عادة نستعمله هكذا:

Nz([notes], القيمة التي نريدها بدل Null)مثلا:تحويل القيم Null الى صفر:Nz([notes], 0)تحويل القيم Null الى لا شئ ، اي Empty:Nz([notes], "")تحويل القيم Null الى النص جعفر:Nz([notes], "جعفر")

للعلم :)

 

 

جعفر

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حياك الله :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

آه نسيت شئ آخر لأختم به هذا الموضوع :)

 

ضع المعادلة التالية في نفس الاستعلام اعلاه ، ولاحظ النتيجة:

Len([notes])

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

فلاحظ انه اذا كان الحقل Empty ، فان عدد الحروف فيه تختلف عن عدد الحروف للحقل الـ Null :)

 

 

جعفر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك أخي جعفر على الأمر Len فقط اصبحت اعتمد عليه كثيرا  :D وفائدته كبيرة لكن يستخدم عبارة if لفحص قيمة خلية فيما اذا كانت فارغة ام لا ..تحياتي لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .