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

حساب نسبة الاشغال

مغلق
بدأه hmax في 6 سبتمبر 2004 · 12 رد · 15,216 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا اعمل مشروع قاعدة بياناتsql server و الواجهات ب visual basic 6 خاص بمستشفى و عندى جدول به ارقام الاسرة

و جدول اخر لدخول المريض يحتوى على اكثر من حقل و منهم تاريخ دخول المريض و تاريخ الخروج و مدة الاقامة

المشكلة هى حساب نسبة الاشغال للاسرة انا استطعت عمل النسبة لليوم الحالى حيث اعمل جملة اس كيو ال

تجمع عدد المرضى المتواجدين و نضربه فى 100 ثم القسمة على اجمالى عدد الاسرة كل هذا ما مشكلة المشكلة هى عمل نسبة الاشغال خلال فترة معينة اى بين

تاريخين محددين

اسف على الاطالة و لكنكم لا تعلمون مدى اهمية هذا الاستعلام بالنسبة و انا كلى ثقة فى اعضاء المنتدى

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

#2
كيف يمكن طرح التاريخ بال sql?

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

تعريف نسبة الاشغال التى اريدها كالاتى انا اريد نسبة الاشغال خلال الفترة من 1/8/2004 ال 30/8/2004

المطلوب هو ضرب عدد الاسره الكلية فى عدد ايام الفترة و نفترض انهم 10 اسرة فيكون الناتج هو 10 *30 = 300 هو عدد الاسرة فى هذه الفترة.

الاصعب هو انه قد يدخل المريض يوم 1/8/2004 و يخرج يوم 10/8 /2004 فيكون شغل السرير لمدة عشرة ايام

و قد يكون قد دخل يوم 20/7/2004 و خرج يوم 30/9/ 2004 فيكون شغل السرير 70 يوم و لكنه شغل السرير 30 يوم فقط ما بين التاريخين المذكورين سابقا فارجو عمل المعادلة ارجوكم

انا عارف ان الطلب صعب و انا مش عارف اوضح كويس لكن اتمنى ان اى شخص يفيدنى

و شكرا.

#4

و الله انا فى قمة الحزن و خيبة الامل يا رواد المنتدى يا مبرمجين يا كبار

#5
اقتباس
انا فى قمة الحزن و خيبة الامل

بالفعل لانك لم تتعب نفسك و تحاول على الاقل

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#6

يمكنك كتابة كود صغير فى ال query analyzer للتجربه

print (datediff("dd",'1/1/2000','1/1/2004'))

هذا السطر سيعرض لك الفرق بين التاريخين بالايام

و سيكون الناتج هو 1461

يمكن استبدال التواريخ بالحقول التى تناسب عمل برنامجك ثم اجر عملية الضرب بصوره طبيعيه

اعتقد ان الكود بفيجوال بيسك 6 سيكون بهذا الشكل بافتراض ان textbox1 سيحمل تاريخ الدخول للمستشفى و textbox2 سيحمل تاريخ الخروج و textbox3 سيحمل عدد الايام التى تم شغل السرير فيها

textbox3.text=datediff("d",textbox1.text,textbox2.text)

لم اجرب هذا الكود لاننى لا املك فيجوال بيسك 6 حالياً و إن كنت اعتقد انه سيعمل معك

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 8 سبتمبر 2004 في 17:40

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#7

اولا و قبل كل شىء انا مشكور على تجاوبك معى

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

#8

شكرا لكل من تجاوب معى ولكن انا عارف ان طلبى يمكن ان يكون صعب او مش مفهوم لذلك انا هطلب الطلب بصورة اخرى و هو كالتالى

نفترض ان المريض دخل يوم 1-1-2004 و خرج يوم 10-1-2004 و عملت معادلة الDateDiff و وصل الناتج ال 10 ايام الطلب هو كود لإضافة كل يوم من العشرة فى سجل اى كالتالى

1 - 1-1-2004

2 - 2-1-2004

3 - 3-1-2004

4 - 4-1-2004

5 - 5-1-2004

6 - 6-1-2004

7 - 7-1-2004

8 - 8-1-2004

9 - 9-1-2004

10 - 10-1-2004

#9

حقيقه ما تسأل عنه تعتبر من اساسيات ال T-SQL التى لا بد من تعلمها قبل ان نبدا فى كتابة المشاريع

على كل انت ستستخدم امر ال INSERT INTO و لكن إذا كان عدد السجلات كبير فعليك ان تعمل دواره لل INSERT INTO و فى كل مره تدخل قيمه مختلفه

اتمنى ان تبحث قليلاً و ان تراجع موضوع مشرف القسم الخاص بدروس ال SQL SERVER

كل ما تود معرفته عن ال SQL SERVER

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#10

اخوي

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

ومن خلال الجدول تقدر تعرف حساب النسب اللي تبغا سواء مفرده ليوم او المتوسط خلال فتره زمنيه .

#11

كلامك صحيح يا اخ salr و لكن صاحب المشكله لم يوضح لنا بنية الجداول لديه

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#12

الاخ طارق ابراهيم

انا مش عارف اشكرك ولا الومك اعتقد انك تعلم ان المنتديات العربية اساسها هو تبادل الخبرات و يمكن انا اتعثر فى معلومة تكون سهلة بالنسبة لك و يمكن ان يحدث العكس فاتمنى ان نساعد بعض حتى يكون للعرب شأن اخر و على العموم انا مشكور

بانسبة للجداول نفترض ان الجدول به حقلين الاول هو رقم المريض و الثانى هو ايام التواجد.

المطلوب هو بعد إدخال تاريخ الدخول و تاريخ الخروج ان تتحول المدة الى سجلات

مثال : رقم المريض 1

تاريخ الدخول 1/1/2004

تاريخ الخروج 5/1/2004

و ما اريده هو كود لتحويل هذه البيانات الى سجلات كالاتى

رقم المرض ايام التواجد

[ 1 1/1/2004

1 2/1/2004

1 3/1/2004

1 4/1/2004

1 5/1/2004

اتمنى ان اكون وضحت و يا رب تقدرو تساعدونى خاصة الاخ طارق :D)

تم تعديل هذه المشاركة بواسطة hmax في 10 سبتمبر 2004 في 02:40

#13

سأشرح لك الفكرة فقط الآن. ركز معي:

بما أن لديك تاريخ الدخول وتاريخ الخروج ، يمكنك الحصول على الفرق بينهما عبر الدالة datediff ، الموجودة في Visual Basic و TSQL.

الآن أنت تمكنت من حصول على عدد الأيام التي مكث فيها المريض في المستشفى ، قم بعمل loop حجمه عدد أيام المكوث ، ليقوم بجمع عدد الأيام لتاريخ دخوله المستشفي ، عبر دالة اسمها تقريبا dateadd ، تمرر لها اسم تاريخ الابتداء وعدد الأيام التي تريد جمعها له، وترجع التاريخ بعد الجمع.

بعد الحصول على كل تاريخ يمكنك عمل جملة SQL تدخل كل سجل مكون من هذا التاريخ ، وهذه الجملة داخل نفس الloop السابق.

جرب هذه الطريقة ، وبالتوفيق بإذن الله.

فكر بطريقة أخرى

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

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