كيف يمكن إجراء عملية التعديل على بيانات
شرط أن لا يتم تكرار اي من البيانات الموجودة على ال form
كيف يمكن إجراء عملية التعديل على بيانات
شرط أن لا يتم تكرار اي من البيانات الموجودة على ال form
بعد التحية...
تتم عملية التعديل و حفظ البيانات من خلال جملة
Do_Key('Commit_Form');
او
Commit_form;
(g) (g) (g)
لكي تتضح لنا الصورة، ارجو توضيح التالي
1. ماهي الجداول المطلوب إدخال البيانات عليها أو تعديلها
2. نوع العلاقة بينها، وعلى اي أساس يتم تحديد إذا كانت البيانات ستضاف أو تعدل
3. ما هي ال constrants الموجودة على الجداول، فبدون هذه المعلمومات يصعب علينا فهم الأمر، أرجو التوضيح لنفيدك
وآسف للتأخير
الجداول المستخدمة هي:
prompt ملف كتب السوق القادمة من المراكز الجمركية
---------------------------------------
create table soq_book
( center_no number(3),
book_no varchar2(5),
book_date date,
book_type number(1),
user_id varchar2(8),
entry_date date ,
NOTES VARCHAR2(250),
constraint soq_pk primary key(center_no,book_no,book_type,book_date)
);
-------------------------------------------
prompt ملف المعاملات المساقة
--------------------------------------------
create table soq_decs
( center_no number(3) ,
book_no varchar2(5) ,
book_date date ,
book_type number(1) ,
dec_no number(5) ,
dec_type number(2) ,
dec_year number(4) ,
user_id varchar2(8) ,
entry_date date ,
import_name varchar2(100),
constraint soq_decs_Fk FOREIGN key(center_no,book_no,book_type,book_date)
REFERENCES SOQ_BOOK(center_no,book_no,book_type,book_date) );
ملاحظة :... البيانات في هذا الجدول ترحل ترحيل من مراكز اخرى
لذا ليس عليه PK
-----------------------------------------------
العلاقة بينهما هي mster&detail
تتم عملية التعديل على ال detail فقط
بالاخص على الحقول التالية ( رقم البيان ويتكون من 3 خانات (رقم ، نوع ، سنة) )
رقم البيان
1 11 2001
2 11 2001
3 11 2001
4 11 2001
عند عملية التعديل لا يجب تكرار اي رقم من ارقام البيان
استعملت trigger pre_insert وفيه الكود التالي
DECLARE
CURSOR CUR_DEC IS
SELECT BOOK_NO,BOOK_TYPE,BOOK_DATE,CENTER_NO,
DEC_NO,DEC_TYPE,DEC_YEAR
FROM SOQ_DECS
WHERE
CENTER_NO =:SOQ_DECS.CENTER_NO AND
BOOK_NO = :SOQ_DECS.BOOK_NO AND
BOOK_TYPE =:SOQ_DECS.BOOK_TYPE AND
BOOK_DATE =:SOQ_DECS.BOOK_DATE AND
DEC_NO =:SOQ_DECS.DEC_NO AND
DEC_TYPE =:SOQ_DECS.DEC_TYPE AND
DEC_YEAR =:SOQ_DECS.DEC_YEAR ;
DECS_RECORD CUR_DEC%ROWTYPE;
/*-------------------------------------------------------*/
BEGIN
OPEN CUR_DEC ;
FETCH CUR_DEC INTO DECS_RECORD;
IF CUR_DEC%FOUND THEN
MESSAGE('تم تكرار ادخال رقم البيان الجمركي ..');
RAISE FORM_TRIGGER_FAILURE;
END IF;
CLOSE CUR_DEC;
END;
/*-------------------------------------------------------*/
وهو يعمل بشكل صحيح لكن إذا حاولت استعماله في trigger pre_update فلم ينجح ذلك
فما هو الtrigger او الكود الصحيح لعمل ذلك
حاولي عمل loop ليأخذ ال data من ال form ويقوم بمقارنتها
ليقوم بمقارنتها مع القيمة المدخلة
(f) (f) (f) (f) (f)
هذا الموضوع مغلق.