بتاريخ: 29 ديسمبر 201312 سنة comment_244802 السلام عليكم ورحمة الله وبركاته انا عندي شاشة فيها ادخال بيانات مثل sno,name اريد ان انشئ شاشة اخرى اسميها transaction بمعنى اريد اذا عدلت في شاشة ادخال البيانات او حذفت تنتقل الى شاشة transaction بمعنى اذا كان مثلا 1 محمد وقمت بتعديل 1 علي يظهر في جدول transaction قمت بالتعديل من محمد الى علي بتاريخ كذا كيف اسطيع ان افعل ذلك ارجووووكم المساعدة تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244817 وعليكم السلام ورحمة الله وبركاته هذا يسمى التتبع مدخلات النظام . وهنا توجد طريقيتن وكلامها تعمل بقووة الأولى : يوجد تريقر جاهز على مستوى قاعدة البيانات ويعمل هذا الشي ... والطريقة الثانية من خلال الفورمة وهي التي أريد أن أرفق لك فيها الكود بإذن الله.. طبعا توجد شروحات جيده وأكواااد وفورم جاهزة في هذا المنتدى ولكن تفضل هذا الكود: 1- يتم إنشا جدول جديد على قاعدة البيانات ويكون مثلا محتواه : NO VARCHAR2(6), -- التسلسل DATE1 DATE, -- تاريخ العمليه ويكون فيها التاريخ مع الوقت USERNAME VARCHAR2(50), -- اسم المستخدم TABLE_NAME VARCHAR2(100), -- اسم الجدول وهو يكون اسم الفورمة OP_TYPE VARCHAR2(100), -- نوع العمليه ويكون اما حذف او تعديل EmpName VARCHAR2(100),-- اسم الحقل المراد تتبعه EmpName_Old VARCHAR2(100), اسم الحقل بعد التعديل SAl Numbre, -- اسم الحقل المراد تتبعه Sal_OLd Number); -- اسم الحقل بعد التعديل وهنا تم إنشا الجدول طبعا ال5 الحقول الأولى أساسية وأما الحقلين هذا مثلا فقط لكي يتم تتبع العميلات على حقلين فقط وهما اسم الموظف والراتب طبعا لو نريد حقول ثانيه نكتبها ولكل اسم حقل مراد تتبعه يكون لها حقلين هنا بمعنى أردنا أن نتتبع حقل اسم القسم الموجود في جدول ألأقسام يتم كتابه اسم القسم DName في هذا الجدول مرتين DName والحقل الثاني DName_Old وهكذا..... يب الأن تم إنشا هذا الجدول الآن نأتي على جزء التتبع يوجد عدنا تريقرين على مستوى البلوك المراد تتبع البيانات فيه . نذهذب إلى بلك الوظفين EMP ونشي تريقر جديد على Pre_Update وهذا للتبع إي عمليه تعديل على هذا الجدول ويكون فيه الكود التالي: /* åÐÇ ÇáßæÏ áÚãá ãÊÇÈÚÉ áßá Úãáíå ÊÚÏíá Úáì ÌÏæá ÇáãæÙÝíä ÈÍíË äÓÊÚÑÖ ÇáÈíÇäÇÊ ÇáãæÌæÏå Ýí ÇáÌÏæá ÞÈá ÇáÊÚÏíá æäÖÚåÇ Ýí ãÊÛíÑÇÊ ãÄÞÊÉ ÞÈ ãÇ ÊÊã Úãáíå ÇáÊÚÏíá æÈÚÏ Ðáß íÊã ÍÝÙ ÇáÈíÇäÇÊ ÇáãÚÏáå Ýí ÇáÝæÑãÉ æÍÝÙåÇ ßáåÇ Ýí ÌÏæá ÇáãÊÇÈÚÉ ßãÇ åæ ãæÖÍ Ýí ÇáÃÓÝá..¿¿¿ */ declare v_empName emp.ename%TYPE; -- ÇáãÊÛíÑÇÊ ÇáÊí äÑíÏ Ãä äÚãá áåÇ ÊÊÈÚ Ýí Úãáíå ÇáÊÚÏíá v_sal emp.SAl%TYPE; begin select ename,sal -- äÌíÈ ÇáÈíÇäÇÊ ÇáÞÏíãå áÇÓã ÇáãæÙÝ æÇáÑÇÊÈ ááÍÞá ÇáãÑÇÏ ÊÚÏíáå into v_empname,v_sal from emp where rowid=:emp.rowid; -- æåÐÇ ÇáÌãáÉ ÊÌíÈ áäÇ ÇáÍÞá ÇáãÑÇÏ If V_EmpName=:emp.ename AND v_sal=:emp.sal Then Null; Else insert into Table_Track (no,DATE1,table_name,op_type,username, empname_OLd,empname,SAl_Old,sal) -- äØÚ ÝíåÇ ÇáãÊÛíÑÇÊ ÇáÊí Êã ÃÎÐåÇ ãä ÇáÓáßíÊ ÇáÃÚáì + ÞíãÉ ÇáÍÞá ÌÏíÏÉ ã ä ÇáÝæãÑÉ values ( table_Track1.nextval,sysdate,' ÃáãæÙÝíä','ÊÚÏíá',:Global.un, v_empName, :emp.eName,v_sal,:Emp.SAl ); End If; END; وكذا تم عمل تتبع للحقل أثنا التعديل ولو أردنا تتبع العمليه وأخذ البيانات المحذوفه لكي نخزنها في الجدول قبل الحفظ. نعمل الكود التالي في نفس البلوك تحت تريقر Post_Delete ويكون فيه الكود التالي: -- طبعا هنا ماعندنا قيم قديمة وجديدة هنا فقط القيم القديمة ولهذا يتم أخذها مباشرة من الفوم ووضعها في حقل Empname_OLD وأيضا Sal_OLD Begin insert into Table_Track (no,DATE1,table_name,op_type,username, EmpName_OLD,SAl_OLd) values ( table_Track1.nextval,sysdate,' ÃáãæÙÝíÜÜä','ÍÐÝ',:Global.un, :emp.ename,:emp.sal ); END; وكدى تم عمل تتبع للحذف .. وهنا نظيف السكوينس لكي يتم ترقيم العمليات على جدول التتبع مع كل عمليه .. create sequence TABLE_TRACK1 minvalue 1 maxvalue 999999 start with 65150 increment by 1 nocache; وكدى يكون اظفنا ترقيم للعمليه للحقل NO الموجود في جدول Table_Track للحقل NO ..... - - - - - - - - - - - - هذا ما أعلم والله تعالى أعلم.. مووفقين.. تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244819 وهذا الفورمة مرفقه فيها جميع الأكواااد>> تم تعديل على الفورمة يرجى تحميل الجديدة. وشكرا emp.rar تم تعديل 1 يناير 201412 سنة بواسطة المبرمج الصاعد تم تعديل على المرفق تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة كاتب الموضوع comment_244827 شكرا على الرد بس عندي استفسار عندما اقوم بالتعديل على حقل PRE_UPDATE تريقر قبل التعديل ماذا عن بعد التعيل هل هو نفس التريقر ام ماذا وكيف يقوم بحفظ اسم الفورمة واسم الجدول ونوع العملية واسم اليوزر انا اريد مثلا اسم اليوزر يأخذه من حقل معين هل استطيع ام لا تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244828 هلا فيك نعم هو نفسه. جرب وتشوف الطريقة... اسم الفورمة أو اسم الجدول أنت تحطها يدوي مع كل تريقر تحط فيها اسم الجدول أو اسم الفورمة ونوع العمليه اما اسم المستخدم هو ياخذها من متغير مثل ماهو موجود ف الكود Globlael.UN وهو ياخذ القيمة من متغير .. ولو عندك اسم المستخدم موجود ع الفورمة خليها يساوي اسم الحقل. ونسيت أظيف أنه رقم العمليه هو عبارة عن سكويسن موجود على قاعدة البياات لكي يقوم بترقيم العمليات المدخله على جدول التتبع table_Track1.nextval وهذا اسم السكوينس.. وتم التعديل على المشاركة ووضع السكوينس.. تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة كاتب الموضوع comment_244829 اسف على ازعاجك ولكن في اول خمسة حقول هل استطيع تغيير الاسم مثلا بدل NO اضع SNO و DATE1 و T_DATE شكرا تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244830 لا لا تفض يا غاالي مافي إزعاج.. نعم أكيد تغير ما تريد من اسم الجدول Table_Track أو تغير الحقول ولكن تغيرها أيضا مع كل تريقر .. اوك. مووفق تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة كاتب الموضوع comment_244831 يا اخي بالنسبة لل op_type و table_name كيف يأخذها لانها ليست واضحة في الشرح تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة كاتب الموضوع comment_244832 تقصد اضع مثلا table_name " جدول كذا" op_type "تحديث" تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244833 أفتح الفورمة المرفقه وفيها الأكواااد مع الشرح أنت تحط فيها القيمة إلي هي اسم الواجهة أو تحط لو تبغ أسم الجدول وo_type تكتب فيها نوع العمليه هو تعديل أو حذف طبعا في تريقر per_update تخليها أكيد تعديل ,وفي تريقر post_delete تخليه طبعا حذف ... مووفق؟؟ تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة كاتب الموضوع comment_244858 استفسار اخير هل استطيع ان احدد اذا تم التغيير في القيم يرسلها الى جدول track واذا حدث في حقول اخرى لا ترسلها ارجووو ان تكون الصورة وضحت تقديم بلاغ
بتاريخ: 30 ديسمبر 201312 سنة comment_244859 ايو أكيد يا غاالي لأنك أنت تحدد الحقول المراد تتبعها مع كل بلوك وتعمل حقل بإسمه لكي تعرف اسم الحقل ويكون بنفس اسمه ف الجدول الأساسي. حيث ف المثال تم فقط على حقل اسم الموظف والراتب ولو تم تعديل ع تاريخ التعيين أو رقم الموظف لا يتم تتبعه ولا إظهارة في جدول التتبع.. موووفق.. هل حملت الفورمة وشاهدت كيف تعمل..؟ تقديم بلاغ
بتاريخ: 31 ديسمبر 201312 سنة كاتب الموضوع comment_244876 نعم يا اخي جربت ممكن مافهمتني انا الان خلصت الفورمة التي تخصني ولكن اذا قمت بالتعديل في الفورمة عمموما يرسلها الى جدول track بمعنى انه اذا قمت بالتعديل في حقول غير الحقول التي اريد عمل تتبع لها يحفظ ويرسلها الى جدول track وانا لا اريد ذلك اريد فقط اذا عمل تغييرات في الحقول التي وضعتها في الكود اما اذا عدلت في الحقول الاخرى لايرسلها ارجووو ان تكون الصوره وضحت تقديم بلاغ
بتاريخ: 31 ديسمبر 201312 سنة comment_244877 طيب هذا المفروض يا غاالي. ممكن أعرف الكود التي كتبته في تريقر per_update >>? وماهي الحقول المراد تتبعها وماهي الحقول التي لا تريد أن تتبعها..؟ منتظرك.. مووفق تقديم بلاغ
بتاريخ: 1 يناير 201412 سنة كاتب الموضوع comment_244921 السلام عليكم انا عندي جدول فيه no,name,job,mobile,action,rekarks انا اتتبع حقلين فقط هما action,remarks اريد عند التعديل في احدهما او كلاهما يرسلها الى جدول track مايحدث الان عندي حتى ادا لم اقم بالتعديل فيهم وقمت بالتعديل في الاسم او الوظيفة يقوم الكود بارسال الحقلين الى جدول track ارجوووو ان تكون الصورة قد وضحت شكرا تقديم بلاغ
بتاريخ: 1 يناير 201412 سنة comment_244922 السلام عليكم. نعم الصورة وااضحه. وصح كلامك ممكن يرسل إلى الجدول إي عمليه تعديل صارت على البلوك. نعم إستفسارك في محلة.. أبشر أشوفها وأرد عليك. موووفق. تقديم بلاغ
بتاريخ: 1 يناير 201412 سنة comment_244924 هلا يا غاالي تم التعديل ع الكود بس إنك تظيف شرط التحقق هل البيانات المستعرضه من جدول الموظفين تساوي البيانات الموجوده على البلوك لو كان نعم يعمل التريقر وإذا لا لا يعمل شي.. مثل:: If V_EmpName=:emp.ename AND v_sal=:emp.sal Then Null; Else وعملت لك فورمة على scott.emp شوفها ورد عليا مووووفق وأسف على عدم فمهك من أول مرررة. emp.rar تقديم بلاغ
بتاريخ: 1 يناير 201412 سنة كاتب الموضوع comment_244931 قمت بإضافة الشرط ولكن مازال يرسل الى track حتى اذا لم اعدل في الحقلين تقديم بلاغ
بتاريخ: 1 يناير 201412 سنة comment_244946 هلا اخي مستحيل انا مجربها في الفورمة المرفقه.. ياليت تجربها من الواجة وترد عليا.. لأني جربتها ولم تتأثر بالحقووووووول الأخرى..؟؟؟؟ تقديم بلاغ
بتاريخ: 8 يناير 201412 سنة comment_245265 بشرني هل تم التعامل معها بنجاح ام لا زال المشكله قائمة.. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.