بتاريخ: 26 أغسطس 200916 سنة comment_167864 السلام عليكم ورحمة اللهكل عام وأنتم بخير بمناسبة الشهر الفضيليوجد عندي شاشة تستدعي البيانات من جدول معين وأريد عند عمل تعديل عليها وحفظها أن تحفظ البيانات في جدول اخر وعند فتح الشاشة الأخرى يتم استدعاء البيانات المعدلة من الشاشة الأولى (طبعا أريد حفظ بعض البيانات من الجدول وليس كامل البيانات)فكيف بمكنني عمل ذلكولكم جزيل الشطر تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة comment_167865 وانت بالف خيرالاجراء كالتالي : الجدول الاول في الفورم الاول ما عليه ايا تعديل الجدول التاني سننشأ عليه تريغر في الداتا بيز وهناك طريقتان عن طريق الداتا بيز او عن طريق الفورم وانا افضل الداتا بيز في هذه الحالة حنكتب الكود التالي : create or repalce trigger emp_updateafter update on employees for each rowbegininsert into table2 () values(:old.emp_id )وهكذا end;هذه هي الفكرة اذا اردت التوضيح اكثر ارجو ارفاق الجداول تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة كاتب الموضوع comment_167867 الله يعطيك العافية بس إذا عملتو على مستوى الفورم فاي TRIGGER يمكن استخدامهالجدول الأول : CREATE TABLE DEPT_REQUESTS ( YEAR NUMBER(4), REQUEST_ID NUMBER, REQUEST_DATE DATE NOT NULL, REQUEST_STATUS NUMBER(2) NOT NULL, REQUEST_FROM_DATE DATE, REQUEST_TO_DATE DATE, DEPARTMENT_ID VARCHAR2(12 BYTE), CREATION_USER VARCHAR2(12 BYTE), LUPDATE_USER VARCHAR2(12 BYTE), TRANS_FLAG VARCHAR2(5 BYTE) DEFAULT '00001', LUPDATE_DATE DATE DEFAULT SYSDATE NOT NULL, CREATION_DATE DATE DEFAULT SYSDATE NOT NULL, REQUEST_NOTE VARCHAR2(2000 BYTEt) الجدول الثاني CREATE TABLE DEPT_EXCHANGES ( EXCHANGE_ID NUMBER, YEAR NUMBER(4), REQUEST_ID NUMBER, REQUEST_DATE DATE, REQUEST_STATUS NUMBER(2), REQUEST_FROM_DATE DATE, REQUEST_TO_DATE DATE, DEPARTMENT_ID VARCHAR2(12 BYTE), STORE_ID NUMBER(10), CREATION_USER VARCHAR2(12 BYTE), LUPDATE_USER VARCHAR2(12 BYTE), TRANS_FLAG VARCHAR2(5 BYTE) DEFAULT '00001', LUPDATE_DATE DATE DEFAULT SYSDATE NOT NULL, CREATION_DATE DATE DEFAULT SYSDATE NOT NULL, DEPT_NOTE VARCHAR2(2000 BYTE), EXCHANGE_DATE DATE ) طبعا اريد نسخ بعض الأعمدة من الجدول الأول للثاني وليس الكل تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة comment_167868 create or replace trigger DEPT_REQUESTS_update_triggerafter update on DEPT_REQUESTS for each row begin insert into DEPT_EXCHANGES ( اسماء الاعمدة التي تريدين ان تنسخيها )values (:old.اسم العمود من الجدول الاول اسماء الاعمدة من الجدول الاول (;end;هذه طريقة او يوجد طريقة اخرى بنفس الفكرة وهي تضمين اسماء الاعمدة من الجدول الاول في تعريف التريغر ولكن اعتقد ان هذه الطريقة كافية بالتوفيق تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة كاتب الموضوع comment_167880 الله يعطيك العافية يااخيكتبت الكود التالي create or replace trigger DEPT_REQUESTS_update_trigger after update on DEPT_REQUESTS for each row begin insert into DEPT_EXCHANGES ( YEAR,REQUEST_ID,REQUEST_DATE,DEPARTMENT_ID,REQUEST_STATUS, REQUEST_FROM DATE,REQUEST_TO_DATE ) values ( :OLD.YEAR,:OLD.REQUEST_ID,:OLD.REQUEST_DATE, :OLD.DEPARTMENT_ID,:OLD.REQUEST_STATUS, :OLD.REQUEST_FROM_DATE,:OLD.REQUEST_TO_DATE ); end; / واعطاني هذا الخطأPL/SQL: SQL Statement ignoredPL/SQL: ORA-00917: missing commaفما الحل؟على حد علمي يوجد طريقة أخرى وهي عند استدعاء الشاشة للجدول التاني نعمل جملة SELECT للبيانات من الجدول الأولفهل هذا صحيحوشكرا تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة comment_167902 السلام عليكمممكن تحديد الاعمده التي تريد ان تعمل عليها UPDATE ??او قم بارفاق الفورم !! ..بالتوفيق تقديم بلاغ
بتاريخ: 26 أغسطس 200916 سنة كاتب الموضوع comment_167909 وعليكم السلام هذه الأعمدة التي أريد أخذ قيمتها بعد التعديل عليها وهي نفسها التي أريد نقل البيانات المعدلة إليها بس في جدول اخروشكرا create or replace trigger DEPT_REQUESTS_update_trigger after update on DEPT_REQUESTS for each row begin insert into DEPT_EXCHANGES ( YEAR,REQUEST_ID,REQUEST_DATE,DEPARTMENT_ID,REQUEST_STATUS, REQUEST_FROM DATE,REQUEST_TO_DATE ) values ( :OLD.YEAR,:OLD.REQUEST_ID,:OLD.REQUEST_DATE, :OLD.DEPARTMENT_ID,:OLD.REQUEST_STATUS, :OLD.REQUEST_FROM_DATE,:OLD.REQUEST_TO_DATE ); end; / تقديم بلاغ
بتاريخ: 27 أغسطس 200916 سنة comment_167942 create or replace trigger DEPT_REQUESTS_update_trigger after update of YEAR,REQUEST_ID,REQUEST_DATE,DEPARTMENT_ID,REQUEST_STATUS,REQUEST_FROM_DATE,REQU EST_TO_DATE, on DEPT_REQUESTS for each row when ( new.YEAR<>old.YEAR or new.REQUEST_ID<>old.REQUEST_ID or new.REQUEST_DATE<>old.REQUEST_DATE or new.DEPARTMENT_ID<>old.DEPARTMENT_ID or new.REQUEST_STATUS<>old.REQUEST_STATUS or new.REQUEST_FROM_DATE<>old.REQUEST_FROM_DATE or new.REQUEST_TO_DATE<>old.REQUEST_TO_DATE ) begin insert into DEPT_EXCHANGES ( YEAR,REQUEST_ID,REQUEST_DATE,DEPARTMENT_ID,REQUEST_STATUS,REQUEST_FROM_DATE,REQU EST_TO_DATE, ( values ( old.YEAR,old.REQUEST_ID,old.REQUEST_DATE,old.DEPARTMENT_ID,old.DEPARTMENT_ID,old .REQUEST_STATUS,old.REQUEST_FROM_DATE,old.REQUEST_TO_DATE ); end; اتمنى ان يكون هذا الكود مناسبا ولاتنسا وضع : قبل oldبالتوفيق تقديم بلاغ
بتاريخ: 27 أغسطس 200916 سنة كاتب الموضوع comment_168008 الله يعطيك العافية يا أخي العزيزجربت الكود اللي أعطيتني ياه بالخير ولم ينفع وأعطاني نفس الأخطاء السابقةفهل هناك حل اخر ممكن من خلاله حل المشكلة وشكرامحبكم / من كل بحر قطرة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.