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

مساعدة في كيفية التعامل مع قيم Null في جملة Select

مغلق
بدأه amansh2004 في 24 ديسمبر 2007 · 8 رد · 1,415 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

لدي ثلاث حقول واريد حاصل جمع هذه الحقول كما في الجملة التالية:

SELECT Center_Cost, Services_Cost, Salry, Income,year,Center_Cost+ Center_Cost + Salry AS Total_Cost

FROM (((Query41 LEFT OUTER JOIN

Query52 ON Query41.year = Query52.year) LEFT OUTER JOIN

Query48 ON Query41.year = Query48.year) LEFT OUTER JOIN

( Query42 ON Query41.year= Query42.year

المشكلة ان اذا كان احد هذه الحقول قيمتها تساوي Null يظهر لي الاستعلام حاصل جمع الحقول تساوي Null

مثال للمشكلة:

Center_Cost=1200

Services_Cost=Null

Salry=Null

Total_Cost=Null

المطلوب ان يظهر الاستعلام اجمالي المصروفات كالتالي:

Center_Cost=1200

Services_Cost=Null

Salry=Null

Total_Cost=1200

في المرفقات صورة لجملة Select وصورة لتنفيذ الاستعلام في Query Builder

ارجو المساعدة

ولكم الثواب والاجر

شكرا جزيلا

post-132033-1198462076_thumb.jpg

post-132033-1198462085_thumb.jpg

#2

الاخ العزيز هناك حل بسيط جداً لمشكلتك لا يعتمد على البرمجة

ارجع لتصميم الجدول فى الداتا بيز ثم اجعل القيم الأفتراضية (Default value) للحقول الرقمية =0

ثم احذف البيانات الموجودة بالجدول وادخلها من جديد فلن تجد حقل يحمل القيمة NULL

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#3

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

اذا كنت تستخدم ال SQL server فتوجد دالة للتعامل مع هذا الامر والتي هي isnull حيث تستبد ل القيمة الفارغة بالصفر فيصبح عندك

isnull(Center_Cost,0)+ isnull(Center_Cost) + isnull(Salry,0) AS Total_Costis

#4

شكرا جزيلا

جربت حل الداتا بيز ولم اصل للنتيجة وجربت دالة Is Null تظهر لي رسالة الخطأ

هل يجب ان يكون لدي SQL SERVER حتى استطيع استخدام دالة Is Null؟

وشكرا جزيلا

post-132033-1198534467_thumb.jpg

#5

طبعا isnull دالة في ال SQL server وكما يظهر في الصورة انت تستخدم نسخة الاكسبرس منه لذا لا مشكلة في ذلك .

انصحك ان تجرب في query builder خطوة خطوة اي تأكد من الاستعلام اولا ثم ضع isnull لمرة واحدة وتأكد منها وبعد ذلك على البقية .

وانتبه ان هذه الدالة هي كلمة واحدة isnull وهي تختلف عن استخدام الكلمتين Is null

#6

شكرا جزيلا

رغم اني كتبت التعبير Isnull ككلمة واحدة ولكن لا يزال يظهر لي نفس رسالة الخطأ

هل هناك طريقة اخرى لحل هذه المشكلة؟

مع الملاحظة اني لا امتلك الفيجوال ستديو الكامل فقط فيجوال بيسيك 2005

شكرا جزيلا

#7

السلام عليكم

أتوقع ان تكون جملة الاستعلام فيها خطأ قبل استخدام هذه الدالة ، حيث أن استخدامك لها صحيح.

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

من لمح فجر الأجر هان عليه ظلام التكليف

#8

أولاً ، أعتقد أنك تتعامل مع قاعدة بيانات Access ، فإذا كان هذا الأمر صحيح فسأعطي لك حل مبدئي يمكن تطبيلة علي أكسيس وأوراكل وسكوال وهي معرفة الجملة الشرطية التي تتعامل معها قاعدة البيانات داخل جملة إستعلامات التحديد Select ، وإليك ثلاثة أمثلة علي كل نوع :

Access :
--------
Select (IIF(Fld1 Is Null,0,Fld1) + IIF(Fld2 Is Null,0,Fld2)) As SumTwoField
From TBL

==============================================
Oracle :
--------
Select ((Case When Fld1 Is Null Then 0 Else Fle1 End) + (Case When Fld1 Is Null Then 0 Else Fle1 End)) As SumTwoField
From TBL

==============================================
SQL-Server :
-------------
نفس طريقة أوراكل

وشكراً

تم تعديل هذه المشاركة بواسطة MMA_EG_Cairo في 29 ديسمبر 2007 في 11:55

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#9

شكرا جزيلا

لقدجربت حل الجملة الشرطية في الاكسيس وتم حل المشكلة ولكني عوضا عن كتابة تعبير Is Null جعلت الاختبار اكبر من 0

شكرا جزيلا للجميع وجعله في ميزان اعمالكم إن شاء الله

post-132033-1198959852_thumb.jpg

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…