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

استفسار بسيط عن كود


عمر شعيب

Recommended Posts

السلام عليكم ..

قمت بكتابة كود اعارة كتب

update items
set Item_qty = Item_qty -1 where Item_id=:RE_ITEM_ID and  Item_qty > 0;
commit;

ITEMS اسم جدوال الكتب

و Item_qty عدد نسخ الكتاب

و Item_id رقم الكتاب

و RE_ITEM_ID رقم الكتاب من جدول اسمه EMP_REQUEST    

هذا الكود شغال ميه الميه

ولكن مشكلتي عندما اقوم بارجاع الكتاب اكتب نفس الكود مع تغير من -1 الي +1 لا يعمل

كود الاجاع

update items
set Item_qty = Item_qty +1 where Item_id=:RE_ITEM_ID and  Item_qty > 0;
commit;

نتمنى اي حد عنده فكرة على الموضوع يفيدني بارك الله فيكم ...


 

تم تعديل بواسطة ميسم الكرام
رابط هذا التعليق
شارك

eslam elbyaly

بارك الله فيك على سرعة الاستجابه اولاً

 

الشرط ده علشان لما بيكون قيمة النسخه Item_qty > 0

بحيت لما تكون قيمة النسخه اقل من زيرو  ما يعطيني اي كتاب

نتمنى افدتي بالكود الصحيح سوء كان لاعاره او الارجاع

 

 

 

رابط هذا التعليق
شارك

انا قصدى وانت بترجع الكتاب
لو بزيرو حتى المفروض يرجع
اتاكد من القيمة فى الجدول وقارنها بالشرط
اتاكد ان ال commit بيحصل

رابط هذا التعليق
شارك

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

بعد ما اعمل الاعاره اروح افتح جدول الكتب يعطيني 4

انا مشكلتي في الارجاع مش عارف ليش مايرجعش

رابط هذا التعليق
شارك

طب سيبك من الكود ده يا باشا كده
وسيليكت

Item_qty +1 into variable
where Item_id=:RE_ITEM_ID
and Item_qty > 0;

وحط طبعا الايتم الى بتحاول ترجعه مكان RE_ITEM_ID:
واعمل message للقيمة شوف هيديك ايه

رابط هذا التعليق
شارك

آسف استاذ الفاضل تعبتك معي
انا عملت نفس ما قلت  لم يحدث شئ مش عارف هل انا اخطأت !

declare
x number  EMP_REQUEST.RE_ITEM_ID%type;
begin

 select Item_qty +1 into x from items
 where Item_id=:RE_ITEM_ID
 and Item_qty > 0;

 end;
 commit;
تم تعديل بواسطة ميسم الكرام
رابط هذا التعليق
شارك

أستاذي

المشروع الثالث :-

 

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

 

 


 

الشاشة الاولى :-

يتم  ادخال معلومات  الموظفين حيث  يتم ربط  هذة الشاشة مع  جدول employee

Emp_id  رقم الموظف  

Emp_name  اسمالموظف

 

يتم تصميم  الشاشة من نوع tabular   وعدد السجلات 10

 

 

الشاشة الثانية  :-

شاشة انواع  المواد  المخزنة  في المكتبة  يتم  ربط هذة الشاشة  مع جدول items_type

Id   رمز النوع

Describe  وصف النوع

 

يتم  تصميم  هذةالشاشة نوع TABULER   وعدد السجلات  10

 

الشاشة الثالثة :-

 

شاشة  طلب الاستعارة  يتم  فيها ادخال رقم ومعلومات الطلب استعارة اسطوانة او كتاب اوغيرها

تتم من خلال  الموظف  بحيث تكون هذة الشاشة  مفعلة  لوحدها لجميع العاملين

RE_EMP_ID رقم  الموظف  

RE_ITEM_ID   رقم المادة المراد استعارتها

RE_DATE  تاريخ طلب المادةالمراد استعارتها

REQ_STATUS  رمز يوضع لتحديد الطلب

تكون حالة  عند  الطلب  غير منفذة وتعطى قيمة ابتدائية صفر وعند قيام  عامل المكتبة  بتفيذ

طلب الاعارة  يجب

  1. ان يتم تنقيص طرح 1  من عدد النسخ الكمية لهذة المادة من جدول  المواد
  2. ان يتم  ادخال حركة  في ملف الاعارة BORROWING حيث يتم تسجيل  رقم الموظف وادخال رقم متسلسل لحركةالاعارة  وتاريخ الاعارة  وتاريخ  الاعادة  حيث  تاريخ الاعادة يساوي تارخ الاعارة  + عدد ايام الاعارة  وادخال حالة الاعارة  قيمة  صفر انة مازال  معار وقيمة  1 تعني انة  تمت اعادة الكتاب  او المادة  المعارة

 

الشاشة الرابعة

شاشة  لادخال  عناصر المكتبة  سواء كانت كتب  ،  اسطوانات  ليزرية ، دليل  استخدام  برمجيات  وغيرها  من المواد

حيث يتم  ربطها مع جدول itemsوالذي يحتوي على البيانات التالية

Item_id  رقم المادة

Item_name       اسم المادة

Item_qty     الكمية عدد النسخ

Item_type    نوع المادة وهنا نستخدم شاشةلعرض انواع  المواد باستخدام lov's

Item_shelf_no  تحديد رقم  الرف

Item_date_enter    ادخال تاريخ ادخال بيانات  المادة

Item_desc   ادخال وصف  المادة

Item_author اسم المؤلف 

Item_notes   ملاجظات

Item_manuals  اسم   الدليل

No_of_cds   عدد الاسطوانات

Item_copy_orginal   ادخال  قيمة  ان النسخة اصلية  ام نسخة من اصل

 

الشاشة الخامسة

يتم تصميم هذةالشاشة  من نوع tabular وعدد السجلات10

يتم ربط  هذة  الشاشة مع جدول  borrowing    من اجل  عرض بيانات  التي تم ادخالها الى هذا الجدول

 

 

-- Generated for Oracle 7 on 31/12/2015 13:14:05 by Oracle Database Designer v1.00

/* Source Diagram Details:

 

 * Last modified 31/12/2015 10:28:42

 */


CREATE TABLE ITEMS_TYPE
 (ID  NUMBER
 ,DESCRIB  VARCHAR2(40)
 );

CREATE TABLE BORROWING
 (BOR_SER  NUMBER
 ,BOR_START_DATE  DATE
 ,BOR_END_DATE  DATE
 ,BOR_ITEM_ID  NUMBER
 ,BOR_EMP_ID  NUMBER
 ,BOR_STATUS  NUMBER
 ,BOR_LATE_DATE  NUMBER
 );

CREATE TABLE ITEMS
 (ITEM_ID  NUMBER
 ,ITEM_NAME  VARCHAR2(40)
 ,ITEM_QTY  NUMBER
 ,ITEM_TYPE  NUMBER
 ,ITEM_SHELF_NO  NUMBER
 ,ITEM_DATE_ENTER  DATE
 ,ITEM_DESC  VARCHAR2(40)
 ,ITEM_AUTHOR  VARCHAR2(40)
 ,ITEM_NOTES  VARCHAR2(40)
 ,NO_MANUALS  NUMBER
 ,NO_OF_CDS  NUMBER
 ,ITEM_COPY_ORGINAL  VARCHAR2(40)
 );

CREATE TABLE EMP_REQUEST
 (RE_EMP_ID  NUMBER
 ,RE_ITEM_ID  NUMBER
 ,RE_DATE  NUMBER
 );

CREATE TABLE EMPLOYEE
 (EMP_ID  NUMBER
 ,EMP_NAME  VARCHAR2(40)
 );

ALTER TABLE ITEMS_TYPE
 ADD CONSTRAINT ID_PK PRIMARY KEY
  (ID) ;

ALTER TABLE ITEMS
 ADD CONSTRAINT ITEMID_PK PRIMARY KEY
  (ITEM_ID) ;

ALTER TABLE EMP_REQUEST
 ADD CONSTRAINT REQUEST_PK PRIMARY KEY
  (RE_EMP_ID
  ,RE_ITEM_ID
  ,RE_DATE) ;

ALTER TABLE EMPLOYEE
 ADD CONSTRAINT EMPID_PK PRIMARY KEY
  (EMP_ID) ;
    
ALTER TABLE BORROWING
 ADD CONSTRAINT BR_ITEM_FK
 FOREIGN KEY
  (BOR_ITEM_ID)
 REFERENCES ITEMS
  (ITEM_ID)
 ADD CONSTRAINT BR_EMP_ID_FK
 FOREIGN KEY
  (BOR_EMP_ID)
 REFERENCES EMPLOYEE
  (EMP_ID)
;

ALTER TABLE ITEMS
 ADD CONSTRAINT ITEM_TYPE_FK
 FOREIGN KEY
  (ITEM_TYPE)
 REFERENCES ITEMS_TYPE
  (ID)
;

ALTER TABLE EMP_REQUEST
 ADD CONSTRAINT REQ_ITEM_FK
 FOREIGN KEY
  (RE_ITEM_ID)
 REFERENCES ITEMS
  (ITEM_ID)
 ADD CONSTRAINT RE_EMP_ID_FK
 FOREIGN KEY
  (RE_EMP_ID)
 REFERENCES EMPLOYEE
  (EMP_ID)
;

eslam elbyaly

هذا المشروع المطلوب مني

انا عملت كل الشاشات كيف ما مطلوب مني انا مشكلتي في شاشه الثالثة يبدُ ما فهمت ايه المطلوب مني بتحديد

ولكن كما اخبرتك بان عملت كود الاعارة وشتغل معي تمام ولكن الارجاع ماشتغل نهائيا

نتمى القاء نظره على ملف المشروع وتوضيح ما مطلوب بتفصيل دقيق


 

تم تعديل بواسطة ميسم الكرام
رابط هذا التعليق
شارك

استنى بس يا عم عمر

انا مقلتش كده , انا بقلك اعمل message للقيمة

 

كده

 

declare
x number  EMP_REQUEST
.RE_ITEM_ID%type;
begin

 select Item_qty +1 into x from items
 
where Item_id=:RE_ITEM_ID
 
and Item_qty > 0;
message(x) ;

message(x) ;
 end;

رابط هذا التعليق
شارك


نسخت الكود استاذي اصبح الكود يكرر في قيمة الاعاره وكاني اقوم باعاره مرتين لنفس النسخه زي ما موجود في الاسفل ↓
SQL> SELECT * FROM EMP_REQUEST ;

RE_ITEM_ID RE_DATE RE_EMP_ID
---------- --------- ---------
10 01-JAN-16 2
10 05-JAN-16 2
رابط هذا التعليق
شارك

بارك الله فيك استاذي الفاضل اشتغل الكود اخيراُ

بنفس الكود الاول قمت بحذف بيانات الموجوده في الجدول وقمت بادخال بيانات جديده وشتغل الكود بطريقة صحيحه
 


UPDATE ITEMS
SET Item_qty = Item_qty +1 where Item_id=:RE_ITEM_ID and  Item_qty > 0;


COMMIT;

تم تعديل بواسطة عمر شعيب
رابط هذا التعليق
شارك

  • بعد 3 أسابيع...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية