محمد سعيد بتاريخ: 23 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 23 سبتمبر 2009 السلام عليكم اخوانى الكرام وكل عام وانتم بخيرلدى تاسك اريد تنفيذه فى شكل لووب هو باختصار وببساطة شديدة انه لو فجدول ال emp مثلا عايز اعمل لووب بحيث يجبلى البيانات بس بين كل تاريخ مثلا عدد من الايام 1-2-3 وهكذا يتم ادخالها من باراميتر ارجو تكون واضحة يعنى المهم ان يجيب الداتا على حسب عدد الايام بين التواريخ يعنى لو عدد الايام 2 يكون اول تاريخ اقل من الذى بعده بيومين وهكذا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Ahmad.Hasan بتاريخ: 23 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 23 سبتمبر 2009 حسب ما فهمت من كلامك ممكن يكون الحل كالتالي: SELECT EMPNO,ENAME FROMEMP WHERE NUMBER_OF_DAYS=TO_NUMBER(SYSDATE - :BLK_NUMBER_OF_DAYS); حيث::BLK.NUMBER_OF_DAYS هو الايتم اللي رح تدخل فيه عدد الايام.. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 24 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 24 سبتمبر 2009 الأخ الفاضل يبدو ان الصورة مش واضحة لديك شوف ياسيدى الموضوع باختصار هو تاسك لمواعيد عيادة طبيب حيث ان المريض يقوم بحجز اكثر من موعد والمطلوب هو تحديد عدد ايام بين المواعيد يعنى مثلا بين كل موعد وموعد 3 ايام او على حسب البراميتر الصورة وضحت؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 25 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 25 سبتمبر 2009 أعزرني لأن بقالي فترة لم أتعامل مع الأوراكل ، علي كل حال جرب هذه القطعة البرمجية ، ويا رب تفيدك وتفيد الجميع 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; / بالتوفيق للجميع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 25 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 25 سبتمبر 2009 الأخ الفاضل جزاك الله خير على الرد لكن الكود مش واضح ياريت تعمل مثال على جدول الموظفين مثلا باعتباره جدول المواعيد المتاحة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 26 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 26 سبتمبر 2009 الأخ الكريم ، دة مجرد مثال بيطبع لك مواعيد زيارات المريض علي شاشة الأ 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 أبحث بالمنتدي فستجد العديد من الأمثلة !!! ملحوظة ، أنا لم أنفذ هذه الأكواد نظراً لأن حاسبي الشخصي لا يحتوي علي أوراكل .... شكراً بالتوفيق للجميع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 27 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 27 سبتمبر 2009 السلام عليكم ورحمة الله وبركاتهأخى الكريم الموضوع باختصار هو نظام حجز مواعيد لعيادة طبيب حيث ان المريض يذهب للحجز اولا فيقوم النظام بحجز عدة مواعيد لنفس المريض بحيث بين كل موعد والاخر عدد من الايام على حسب رغبة المريض المطلوب باختصار حيث ان هذا جزء من التاسك فقط ان يتم عمل لووب فى جدول المواعيد وفيه اتنين باراميتر الاول عدد المواعيد التى سيتم حجزها للمريض والثانى عدد الأيام بين كل موعد والاخر مع ملاحظة انه اولا:- بالنسبة للموعد الأول يكون اول موعد متاح بداية من تاريخ اليومالثانى:- لو مثلا لم يتوفر موعد ما من هذه المواعيد بعد عدد الايام المحدد فى البراميتر يتم زيادة 1 على هذا العدد وان لم يتوفر يتم زيادة يومين وهكذا يعنى مثلا لو تم حجز 5 مواعيد للمريض بين كل موعد والاخر يومين وكان مثلا الموعد الثانى ليس متوفر بعد يومين فى هذهالحالة يتم اضافة يوم حيث سيكون بعد 3 ايام وان لم يكن متوفر بعد 3 ايام يتم اضافة يوم اخر وهكذا بالنسبة لكل موعد على حدة ارجو تكون الصورة واضحة ولو فى اى استفسار اتفضل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 27 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 27 سبتمبر 2009 وده اسكربت الجدول المسجل فيه المواعيد المتاحة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)) اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 27 سبتمبر 2009 تقديم بلاغ مشاركة بتاريخ: 27 سبتمبر 2009 السلام عليكم كيف حالك أخي محمداعتقد ان الفكرة أصبحت واضحة كدا لكن ياريت توضح الاسكربت الجدول أكثر كيف يتم معرفة الموعد مشغول أم لا أقصد مثلا لو سجل مريض موعد الساعة 6 هل ينفع مريض يسجل موعد اخر بعد 6 مثلا 6:01 أقصد ما رأيك لو تزود عمود مثلا بداية الموعد وعمود نهاية الموعد ولو قمت بعمل ذلك لابد من عمل تاريخ لبداية الموعد وتاريخ لنهاية الموعد ربما يسجل مريض قبل الساعة 12 ليلا وبكده يدخل في يوم تانيلو امكن تعطي لنا أمثلة وخصوصا في حالة ان الموعد الثاني كان هذا اليوم مشغول "أقصد في الحالات الشاذة " موفق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 28 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 28 سبتمبر 2009 الأخ الفاضل مصطفى جميل هذا الجدول اصلا هو فيو مسجل به كل المواعيد المتاحة يعنى كل المواعيد المسجلة به هى مواعيد متاحة ثانيا بالنسبة لبداية ونهاية الموعد فهذا محلول حيث ان هناك سكيجوال يقوم بعمل ذلك حيث ان مثلا المدة بين كل موعد والاخر 20 دقيقة فتجد ان الموعد الاول مثلا يبدأ من الساعة 9 والثانى يكون الساعة 9 و20 دقيقة وهكذاارجو يكون واضح اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 29 سبتمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 سبتمبر 2009 لا اله الا الله 220 قراءة ومفيش حل عند حد ايه الحكاية المنتدى ايه اللى جراله فين راحت العقول الحلوة فى المنتدى اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 1 أكتوبر 2009 تقديم بلاغ مشاركة بتاريخ: 1 أكتوبر 2009 طيب جرب كدة المرفق !!!!بالتوفيق SQL.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 2 أكتوبر 2009 تقديم بلاغ مشاركة بتاريخ: 2 أكتوبر 2009 الأخوة الكرام ، أعتزر بشدة علي الكود الغير صحيح ، حيث لم أجرب الكود سوي اليوم علي جهاز أحد أصدقائيعلي كل حال الكود بسيط جداًأفترضت أن هناك جدول يدعي Pats أي المرضي ، وبعد كدة سجلت شوية سجلات خاصة لمجموعة مرضي ، ومن ثم صممت Function يرتجع ليا جدول Table يحتوي بقائمة التواريخ المطلوبةولكن بالطبع هذا ليس صحيح ، لأن تواريخ الزيارات بتتحدد حسب الحالة المرضية وحسب رغبة الطبيب ، بمعني أدق أن المفروض يكون لكل زيارة حقل آخر يدعي "التاريخ التالي للزيارة" ، بحيث أن هذا التاريخ يتم تحديد الزيارة التالية لمراجعة المريض ، سواء أستشارة فقط أو غيرهاعلي كل حال الكود تم إرفاقة مرة أخري ، لأن الكود السابق غير سليمبالتوفيق للجميع SQL.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد سعيد بتاريخ: 2 أكتوبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 2 أكتوبر 2009 اشكرك بشدة اخ محمد على محاولتك الطيبة للمساعدة لكن بصراحة المطلوب غير كده تمامالسلام عليكم ورحمة الله وبركاتهأخى الكريم الموضوع باختصار هو نظام حجز مواعيد لعيادة طبيب حيث ان المريض يذهب للحجز اولا فيقوم النظام بحجز عدة مواعيد لنفس المريض بحيث بين كل موعد والاخر عدد من الايام على حسب رغبة المريض المطلوب باختصار حيث ان هذا جزء من التاسك فقط ان يتم عمل لووب فى جدول المواعيد وفيه اتنين باراميتر الاول عدد المواعيد التى سيتم حجزها للمريض والثانى عدد الأيام بين كل موعد والاخر مع ملاحظة انه اولا:- بالنسبة للموعد الأول يكون اول موعد متاح بداية من تاريخ اليومالثانى:- لو مثلا لم يتوفر موعد ما من هذه المواعيد بعد عدد الايام المحدد فى البراميتر يتم زيادة 1 على هذا العدد وان لم يتوفر يتم زيادة يومين وهكذا يعنى مثلا لو تم حجز 5 مواعيد للمريض بين كل موعد والاخر يومين وكان مثلا الموعد الثانى ليس متوفر بعد يومين فى هذهالحالة يتم اضافة يوم حيث سيكون بعد 3 ايام وان لم يكن متوفر بعد 3 ايام يتم اضافة يوم اخر وهكذا بالنسبة لكل موعد على حدة ارجو تكون الصورة واضحة ولو فى اى استفسار اتفضل الجدول المسجل به المواعيد المتاحة مرفق فى الرسالة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 3 أكتوبر 2009 تقديم بلاغ مشاركة بتاريخ: 3 أكتوبر 2009 الأخ الكريم ، تحية طيبة وبعد ،أنت دلوقتي عندك جدول للمرضي 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 !!!!أو يجوز أحد الأصدقاء لدية فكرة أفضل أو يصنع الفكرة أسرع منيربنا يسهل ، بس من ناحيتك يجب المغامرة والتفكير في الموضوعفي رعاية الله وحفظةالسلام عليكم ورحمة الله وبركاتة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
MMA بتاريخ: 5 أكتوبر 2009 تقديم بلاغ مشاركة بتاريخ: 5 أكتوبر 2009 طيب بص بقي ، أنا عدلت لك علي المثال لكن للأسف موضوع ترحيل المواعيد لم أصنعه ، ولكن أعتقد هذه المرة الفكرة واضحة ومن الممكن أن تعدل علي الكود كما تشاءبالتوفيق SQL.zip اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.