بتاريخ: 21 مارس 20196 سنة comment_298080 الأخوة الكرام و الأعزاء ... قمت بإنشاء جدول يحتوي على بيانات الموظفين و استطيع ادخال و تعديل و استرجاع البيانات من هذا الجدول و اليه ... و الآن أحاول القيام بإنشاء جدول يحفظ سجلات حركات و عمليات الموظفين على النظام ... اسم الجدول TRANSACTIONS_LOG و يحتوي على الأعمدة التالية : TRANS_ID NOT NULL NUMBER(20) TRANS_TYPE_ID NUMBER(20) EMP_ID NUMBER(10) TRANS_TIME NOT NULL DATE OLD_DATA VARCHAR2(150) NEW_DATA VARCHAR2(150) EMP_IP VARCHAR2(20) الغرض من هذا الجدول هو تسجيل عمليات اضافة البيانات و تعديلها و حذفها ... فمثلاً عند القيام بتعديل اي معلومة من خلال على الفورم من جدول الموظفين يجب على البرنامج ان يسجل في جدول TRANSACTIONS_LOG العملية التي قام بها المستخدم سواء اضافة او حذف او تعديل (هذه محلولة) ، مشكلتي بالضبط في تسجيل البيانات المعروضة في الفورم قبل التعديل في عامود OLD_DATA و بعد التعديل في NEW_DATA على أن يخزن فقط البيانات التي تم تعديلها و ليس كل البيانات. تسجيل عمليات الدخول و الخروج من البرنامج قمت بحلها تبقى مشكلتي كما قلت هي في تسجيل البيانات قبل التعديل و بعدها في هذا الجدول. لقد بحثت كثيراً عن مشكلة مشابهة في هذا المنتدى و في جوجل و لكن لم أجد فأتيت لاجئاً لكم من خلال هذا المنشور و كلي أمل بأن ألقى منكم الدعم و المساعدة.قاعدة البيانات 11g r2 و الفورم 11gشكراً لكم مقدماً من اعماق القلب تقديم بلاغ
بتاريخ: 21 مارس 20196 سنة comment_298082 بعد التعديل سهلة قيمتها بالحقل على الشاشة بتاعتك قبل التعديل select من الجدول لاحضار القيمة قبل التعديل وتقارن ده بده لو مختلفيين اعمل اضافة بالجدول تقديم بلاغ
بتاريخ: 21 مارس 20196 سنة كاتب الموضوع comment_298083 أشكرك أخي لسرعة ردك ...و لكن أعتقد بأن الحل اللي ذكرته ممكن مع حقل واحد في فورم tabular ... الشاشة اللي عندي FORM تحتوي على حقول كثيرة ممكن ما أكون فهمت الحل اللي طرحته انت او ممكن أكون انا ما قمت بشرح المشكلة بالشكل الصحيح بعدم توضيح ان كانت الشاشة عندي FORM او TABULAR في الحالة اللي عندي مش محتاجة لـ For Loop ما بعرف لكن حاولت في زر "حفظ" اني اكتب الكود التالي : BEGIN IF :EMPLOYEES.EMP_NAME = EMPLOYEES.EMP_NAME THEN NULL; ELSE INSERT INTO TRANSACTIONS_LOG (TRANS_ID,TRANS_TYPE_ID,EMP_ID,TRANS_TIME,OLD_DATA,NEW_DATA,EMP_IP) ;SELECT :CONTROL.SELECT_MAX,'UPDATE',:GLOBAL.P_EMP_ID,SYSDATE,EMP_NAME,:EMP_NAME,:CONTROL.DISPLAY_IP FROM EMPLOYEES WHERE EMPLOYEES.EMP_ID = :EMP_ID COMMIT; END IF; END; و اذا كان هذا هو الحل فهذا يعني راح اكتب نفس الكود لكل FIELD ... لتاريخ الميلاد و مكان الميلاد و ... الخطبعاً هو الكود غلط بكل تأكيد و لكن القصد هو هل هذه فكرة الحل لمشكلتي ؟ أعتقد انه في حلول أخرى أقوى من اللي انا كاتبه ... و بتمنى أخي اذا فهمتك غلط تحكيلي.كل الشكر لك أخي العزيز تقديم بلاغ
بتاريخ: 21 مارس 20196 سنة comment_298087 هو فى حل اسهل من ده كله تعمل اضافة فى جدول جديد اخره مثلا audit بس زياده col (type) له قيمة before or after قبل ده نفس جملة الاضافة اللى انت كتبها باعلى لكن من الجدول مباشرة بعد جملة اضافة with values(:emp_id,:emp_name) لو ده مناسب ليك فى اضافات تانية ممكن تزودها بس ده ابسط كتير تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.