إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

مطلوب مساعده فى لووووووووووب


15 رد (ردود) على هذا الموضوع

#1 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 23 September 2009 - 12:40 PM

السلام عليكم اخوانى الكرام وكل عام وانتم بخير
لدى تاسك اريد تنفيذه فى شكل لووب هو باختصار وببساطة شديدة انه لو فجدول ال emp مثلا عايز اعمل لووب بحيث يجبلى البيانات بس بين كل تاريخ مثلا عدد من الايام 1-2-3 وهكذا يتم ادخالها من باراميتر ارجو تكون واضحة يعنى المهم ان يجيب الداتا على حسب عدد الايام بين التواريخ يعنى لو عدد الايام 2 يكون اول تاريخ اقل من الذى بعده بيومين وهكذا

#2 Ahmad.Hasan

Ahmad.Hasan

    مشرف قسم الـ Forms & Reports والمشاريع

  • فريق الإشراف
  • 4,869 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Hasan
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle HCM Consultant

تاريخ المشاركة 23 September 2009 - 09:11 PM

حسب ما فهمت من كلامك ممكن يكون الحل كالتالي:

SELECT EMPNO,ENAME FROMEMP WHERE NUMBER_OF_DAYS=TO_NUMBER(SYSDATE - :BLK_NUMBER_OF_DAYS);

حيث:

:BLK.NUMBER_OF_DAYS هو الايتم اللي رح تدخل فيه عدد الايام..

.Oracle E-Business Suite R12 HCM Certified Implementation Specialist

 

.Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist

 


#3 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 24 September 2009 - 10:42 PM

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

#4 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 25 September 2009 - 02:44 PM

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


Declare
  ID_Date	  Date;	 -- أول يوم زيارة --
  ID_VisitDays Number;   -- عدد أيام الزيارات --
  ID_RestDays  Number;   -- عدد أيام الراحة --
  ID_Loop	  Number;   -- جملة التكرار --
Begin
  -- مدخلات القطعة البرمجية --
  ID_Date	  := SysDate();
  ID_VisitDays := 5;
  ID_RestDays  := 3;
  ---------------------------------------
  -- سرد كافة التواريخ الخاصة بزيارات المريض بالعيادة ، بدئاً من أول تاريخ زيارة --
  ID_Loop := 0;
  For ID_Loop In 0 .. ID_VisitDays - 1
  Loop
	DBMS_OutPut.Put_Line(ID_Date + (ID_Loop * ID_RestDays));
  End Loop;
  ---------------------------------------
  -- ملحوظة ، هذا مثال بسيط جداً ولكنة يعتبر البداية --
  -- بالتوفيق --
End;
/



بالتوفيق للجميع

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#5 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 September 2009 - 04:40 PM

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

#6 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 26 September 2009 - 12:24 PM

الأخ الكريم ، دة مجرد مثال بيطبع لك مواعيد زيارات المريض علي شاشة الأ SQL*Plus فقط لا غير ، وحسب مدخلات محددة ، والمدخلات هي كالتالي :

1- المتغير (ID_Date) ، هو متغير تاريخ بداية أول زيارة.
2- المتغير (ID_VisitDays) ، هو متغير رقمي ، يمثل عدد أيام الزيارات ، يعني مثلاً الطبيب حدد للمريض أن عدد أيام الزيارات هي 5 مرات.
3- المتغير (ID_RestDays) ، هو متغير رقمي ، يمثل عدد الأيام الفارق أو الراحة ، ودة طبعاً لأن الزيارات ليس من الشرط أن تكون يومية ، ولكن من الممكن أن يكون للمريض زيارة كل مثلاً 3 أيام

بالطبع من الممكن أن يختلف مريض عن مريض ، فبالنسبة للثلاثة متغيرات هذه فهي التي تمثل تلك التغير ، وهذا مجرد مثال لطباعة كافة تواريخ زيارات المريض علي شاشة الـ SQL*Plus فقط لا غير !!!

ولكن من الممكن عمل شيء آخر ، وهو عمل Function يقوم بإرتجاع Table يمثل كافة التواريخ وإستخدامها داخل التطبيق الخاص بنا !!!

أو من الممكن عمل جدول Temp يحتوي علي كافة هذه التواريخ كما يلي :

Create Table TempAllDate
(
  AllDate_Date   Date
)
/

ثم بعد ذلك يتم تحويل الكود السابق الي إجراء Procedur كما يلي :

Create Or Replace Procedure GetAllDate(In_Date  Date, In_VisitDays Number, In_RestDays Number)
  ID_Loop	  Number;   -- جملة التكرار --
Begin
  Delete From TempAllDate;
  ID_Loop := 0;
  For ID_Loop In 0 .. ID_VisitDays - 1
  Loop
	Insert Into TempAllDate Values(In_Date + (ID_Loop * In_RestDays));
  End Loop;
  Commit;
End;
/

وبعد ذلك يتم إستدعاء الجدول كما يلي :
Select * From TempAllDate;


أما بخصوص عمل Function Table أبحث بالمنتدي فستجد العديد من الأمثلة !!!



ملحوظة ، أنا لم أنفذ هذه الأكواد نظراً لأن حاسبي الشخصي لا يحتوي علي أوراكل .... شكراً




بالتوفيق للجميع

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#7 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 September 2009 - 01:32 PM

السلام عليكم ورحمة الله وبركاته
أخى الكريم الموضوع باختصار هو نظام حجز مواعيد لعيادة طبيب حيث ان المريض يذهب للحجز اولا فيقوم النظام بحجز عدة مواعيد لنفس المريض بحيث بين كل موعد والاخر عدد من الايام على حسب رغبة المريض
المطلوب باختصار حيث ان هذا جزء من التاسك فقط ان يتم عمل لووب فى جدول المواعيد وفيه اتنين باراميتر الاول عدد المواعيد التى سيتم حجزها للمريض والثانى عدد الأيام بين كل موعد والاخر مع ملاحظة انه
اولا:- بالنسبة للموعد الأول يكون اول موعد متاح بداية من تاريخ اليوم
الثانى:- لو مثلا لم يتوفر موعد ما من هذه المواعيد بعد عدد الايام المحدد فى البراميتر يتم زيادة 1 على هذا العدد وان
لم يتوفر يتم زيادة يومين وهكذا يعنى مثلا لو تم حجز 5 مواعيد للمريض بين كل موعد والاخر يومين وكان مثلا الموعد الثانى ليس متوفر بعد يومين فى هذه
الحالة يتم اضافة يوم حيث سيكون بعد 3 ايام وان لم يكن متوفر بعد 3 ايام يتم اضافة يوم اخر وهكذا بالنسبة لكل موعد على حدة
ارجو تكون الصورة واضحة ولو فى اى استفسار اتفضل

#8 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 September 2009 - 01:35 PM

وده اسكربت الجدول المسجل فيه المواعيد المتاحة
CREATE TABLE VALID_APPOINTMENTS --- جدول المواعيد المتاحة---
(
APPT_TIME VARCHAR2(8 BYTE),---وقت الموعد--
T_APPT_TIME NUMBER(9),
TIME_FLAG NUMBER, --فلاج الوقت ص او م---
APPT_DATE_H VARCHAR2(4000 BYTE),
APPT_DATE_G VARCHAR2(10 BYTE), --تاريخ الموعد ميلادى---
DAY_ARB VARCHAR2(15 BYTE),
DAY_ENG VARCHAR2(15 BYTE),
CLINIC_ARB VARCHAR2(40 BYTE),
CLINIC_ENG VARCHAR2(40 BYTE),
CLINIC_CODE VARCHAR2(5 BYTE),
ROOM_NO VARCHAR2(10 BYTE),
RULE_NO NUMBER(9),
T_CLINIC_DOC_CODE VARCHAR2(20 BYTE),
T_SCHEDULE_RULE_NO NUMBER(9)
)

#9 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 September 2009 - 05:50 PM

السلام عليكم
كيف حالك أخي محمد
اعتقد ان الفكرة أصبحت واضحة كدا
لكن ياريت توضح الاسكربت الجدول أكثر
كيف يتم معرفة الموعد مشغول أم لا أقصد مثلا لو سجل مريض موعد الساعة 6 هل ينفع مريض يسجل موعد اخر بعد 6 مثلا 6:01 أقصد ما رأيك لو تزود عمود مثلا بداية الموعد وعمود نهاية الموعد ولو قمت بعمل ذلك لابد من عمل تاريخ لبداية الموعد وتاريخ لنهاية الموعد ربما يسجل مريض قبل الساعة 12 ليلا وبكده يدخل في يوم تاني

لو امكن تعطي لنا أمثلة وخصوصا في حالة ان الموعد الثاني كان هذا اليوم مشغول "أقصد في الحالات الشاذة "
موفق

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#10 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 September 2009 - 11:01 AM

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

#11 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 29 September 2009 - 10:43 PM

لا اله الا الله 220 قراءة ومفيش حل عند حد ايه الحكاية المنتدى ايه اللى جراله فين راحت العقول الحلوة فى المنتدى

#12 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 01 October 2009 - 09:45 PM

طيب جرب كدة المرفق !!!!


بالتوفيق

ملفات مرفقة

  • ملف مرفق  SQL.zip   808بايت   21 عدد مرات التحميل

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#13 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 02 October 2009 - 09:54 PM

الأخوة الكرام ، أعتزر بشدة علي الكود الغير صحيح ، حيث لم أجرب الكود سوي اليوم علي جهاز أحد أصدقائي


علي كل حال الكود بسيط جداً

أفترضت أن هناك جدول يدعي Pats أي المرضي ، وبعد كدة سجلت شوية سجلات خاصة لمجموعة مرضي ، ومن ثم صممت Function يرتجع ليا جدول Table يحتوي بقائمة التواريخ المطلوبة

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


علي كل حال الكود تم إرفاقة مرة أخري ، لأن الكود السابق غير سليم




بالتوفيق للجميع

ملفات مرفقة

  • ملف مرفق  SQL.zip   824بايت   27 عدد مرات التحميل

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#14 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 02 October 2009 - 10:27 PM

اشكرك بشدة اخ محمد على محاولتك الطيبة للمساعدة لكن بصراحة المطلوب غير كده تمام
السلام عليكم ورحمة الله وبركاته
أخى الكريم الموضوع باختصار هو نظام حجز مواعيد لعيادة طبيب حيث ان المريض يذهب للحجز اولا فيقوم النظام بحجز عدة مواعيد لنفس المريض بحيث بين كل موعد والاخر عدد من الايام على حسب رغبة المريض
المطلوب باختصار حيث ان هذا جزء من التاسك فقط ان يتم عمل لووب فى جدول المواعيد وفيه اتنين باراميتر الاول عدد المواعيد التى سيتم حجزها للمريض والثانى عدد الأيام بين كل موعد والاخر مع ملاحظة انه
اولا:- بالنسبة للموعد الأول يكون اول موعد متاح بداية من تاريخ اليوم
الثانى:- لو مثلا لم يتوفر موعد ما من هذه المواعيد بعد عدد الايام المحدد فى البراميتر يتم زيادة 1 على هذا العدد وان
لم يتوفر يتم زيادة يومين وهكذا يعنى مثلا لو تم حجز 5 مواعيد للمريض بين كل موعد والاخر يومين وكان مثلا الموعد الثانى ليس متوفر بعد يومين فى هذه
الحالة يتم اضافة يوم حيث سيكون بعد 3 ايام وان لم يكن متوفر بعد 3 ايام يتم اضافة يوم اخر وهكذا بالنسبة لكل موعد على حدة
ارجو تكون الصورة واضحة ولو فى اى استفسار اتفضل الجدول المسجل به المواعيد المتاحة مرفق فى الرسالة

#15 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 03 October 2009 - 02:06 PM

الأخ الكريم ، تحية طيبة وبعد ،

أنت دلوقتي عندك جدول للمرضي Pats ، الجدول دة بيحتوي علي معلومات كافة المرضي ، ويحتوي علي الحقول التالية :

Create Table Pats
(
  Pats_No	 Number,				 --الرقم
  Pats_Name VarChar2(50),		 --الإسم
  Pats_Sex	Number(1),			--النوع
  Pats_BDate Date,				   --تاريخ الميلاد
  Constraint PK_Pats Primary Key(Pats_No),
  Constraint UQ_Pats_Name Unique(Pats_Name)
)
/
--مع العلم أن هذه البيانات ليست البيانات الكلية للمريض ، ولكنة مجرد مثال--

وعندك جدول تاني للزيارات ، كما يلي :
Create Table Visits
(
  Visits_No  Number,
  Visits_PatsNo  Number,  --FK from pats table.
  Visits_Date	Date,	  --تاريخ الزيارة
  Visits_Comment  VarChar2(500),
  Constraint PK_Visits Primary Key(Visits_No),
  Constraint FK_Visits_Pats Foreign Key(Visits_PatsNo) References Pats(Pats_No)
				 On Delete Cascade
)
/
--ملحوظة: هذه ليست كافة حقول جدول الزيارات--

المطلوب كالتالي :
1- البحث عن مريض محدد.
2- إدراج عدد من السجلات في جدول الزيارات حسب طلب الطبيب ، بحيث لو مثلاً عدد الزيارات 5 أيام ، يبقي يتم إدراج 5 سجلات في جدول الزيارات
3- هناك فترة من الأيام بين كل زيارة وزيارة ، يعني مثلاً لو الفترة دي 3 أيام يبقي بين كل زيارة وزيارة 3 أيام
4- إضافة الساعة أو الوقت الذي سيتم مقابلة المريض علي أساسها ، ولو هذا الوقت مشغول يتم ترحيل المريض ليوم آخر !!!

هو المفروض ميتمش ترحيل الي يوم آخر ، ولكن يتم أيجاد موعد فارغ في نفس اليوم أولاً (في فترة العمل الزمنية) ، ولو لم يتم إيجاد فترة زمنية مناسبة للمريض يتم ترحيلة لليوم التالي.


الأخ الكريم ، الموضوع مفهوم ، بس دة لوحدة محتاج وقت كبير جداً ، والمثال الموضح أعلاة هو أبسط مثال لذلك !!!

ممكن تحول الـ Function الي Procedure أو قطعة برمجية عادية ، وفي الـ Form تضيف الأدوات المناسبة (تاريخ ووقت أول زيارة - عدد أيام الزيارات - عدد أيام الراحة أو الفارق بين كل زيارة وزيارة) ، بعد كدة تضيف زر أمر Button وتعمل القطة البرمجية الموجودة بالمشاركة السابقة وبدلاً من إرتجاع Function ، يتم جلب التاريخ وإدراج سجل للمريض كزيارة حسب هذا التاريخ (وقبل كل هذا تصنع إختبار علي هذا التاريخ حتي لا يتطابق مع تاريخ وموعد مريض آخر)


عفواً الموضوع هيحتاج وقت ، وأتركني فترة لعل وعسي أقدر علي صناعتة سواء بالـ PL أو بالـ Forms !!!!

أو يجوز أحد الأصدقاء لدية فكرة أفضل أو يصنع الفكرة أسرع مني



ربنا يسهل ، بس من ناحيتك يجب المغامرة والتفكير في الموضوع


في رعاية الله وحفظة

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

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )