بتاريخ: 23 مايو 200917 سنة comment_157840 مساء الخيرأرجو المساعده العاجلة جداأنا عندى form و مش عارف اعمل save الفورم من table يسمى support_ticketالزرار اللى مستخدمه هو موافقالكود when_button_pressed declare v_alert number; begin -- :SUPPORT_TICKET.TICKET_NO:=:SYSTEM.CURSOR_RECORD; v_alert := show_alert('alert1'); if v_alert = alert_button1 then message('ÔßÑ Úáì ÊÚÇæäßã ãÚäÇ'); -- go_block('view'); --refresh; end if; select (NVL (Max (ticket_no),0))+1 into :ticket_no from support_ticket; exception when others then :ticket_no :=1; commit_form; exit_form(no_validate); end; فى المرفقات الكود + الفورمالفورم عبارة عن ticket_no field it is a display item علشان لما اليوزر يدوس موافق يطلع له التيكت نمبررقم العداد ده الرقم من 8 هو هيدخلهالشكوى هو هيدخلهاالمشكلة ان هذا الكلام لا يدخل فى الداتا بيزو لا save فى ال supported ticket problem.rar تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157843 اخي الكريمشو رسالة الخطأ اللي بتظهرلكتأكد من ان اسم الفيلد لكل واحد منها بمطابقتها في الجدول الخاص بها تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157845 السلام عليكم اخى العزيز هناك ممكن سببنين .. انا مشفتش الكود لانى بعيد عن جهاز بس ده من خلال تجربتى الصغيرة ... 1- اما ان فى item هو مش مربوط بقاعدة البيانهات .. database = no او العكس هو مربوط و مطلوب فى الحفظ بس انت مش عاطيله قيمه.. فراجع القيم المرسله للجدول من الشاشه 2- ان فى خطأ قبل عمليه commit بحيث انه بيوقف الكود و جرب كدة الحل بانك تحط سطر الماسج بعد ال commit لو ظهرت يبقا كودك سليم و انا للعلم برجح اول مشكله و الله اعلم . و بامر الله حشوف و ربنا يسهل تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157846 وهو بالفعل لايوجد مشكلة في الكود ولكن الاخ الكريم لم يرفق مع الفورم الجدول الخاص بهاولكن ملحوظة بسيطة الكود الخاص الذي يأتي بي بالرقم التسلسلي لايصح وضعه في الزر ولكن يتم وضعه في تريجر pre insert على العموم أرفق أخي الجدول أو ماهي الرسالة التي تظهر لك تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157847 السلام عليكمهو انت عايز لما تضغط على ok وادخلت قيم يعمل save ولا لما بتضغط save من ال menu مبيحفظش حدد لان لو من ال menu الاساسيه يبقى لازم فيه رساله هتظهر فياريت تكتبهاولو انت عايز تعمل حفظ من الزرار بتاعك متهيألى انك حاطط commit في مكان غلظ لانه مش هيروح للجمله دى غير ما يحصل exception تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157848 ولو انت عايز تعمل حفظ من الزرار بتاعك متهيألى انك حاطط commit في مكان غلظ لانه مش هيروح للجمله دى غير ما يحصل exception شيل ال exception هيشتغل معاك تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة كاتب الموضوع comment_157850 اولا شكرا على الردثانيا انا عايز لما اعمل save يزود رقم واحد و يعطى لل user الرقم التذكرة لكن لما ال user لا يعمل save لا ياخذ رقم تذكرةشكرا انا مش عارف اجيب لكم الجدول كيف تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157852 السلام عليكم شوف كدة طيب declare v_alert number; begin -- :SUPPORT_TICKET.TICKET_NO:=:SYSTEM.CURSOR_RECORD; v_alert := show_alert('alert1'); -- if v_alert = alert_button1 then select (NVL (Max (ticket_no),0))+1 into :ticket_no from support_ticket; -- commit_form; -- message('ÔßÑ Úáì ÊÚÇæäßã ãÚäÇ'); end if; exception when others then :ticket_no :=1; exit_form(no_validate); end; و قلى تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157870 السلام عليكماخي جرب هيك: declare v_alert number; begin -- :SUPPORT_TICKET.TICKET_NO:=:SYSTEM.CURSOR_RECORD; v_alert := show_alert('alert1'); if v_alert = alert_button1 then message('ÔßÑ Úáì ÊÚÇæäßã ãÚäÇ'); -- go_block('view'); --refresh; end if; select NVL (Max (ticket_no,0))+1 into :ticket_no from support_ticket; exception when others then :ticket_no :=1; commit_form; exit_form(no_validate); end; أخي وجرب وضع الكود على ترجر PRE-INSERT وبزر اخر اعمل COMMITبالتوفيق.... تم تعديل 23 مايو 200917 سنة بواسطة PALI.ORACLE تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة كاتب الموضوع comment_157874 أشكرك على الردأنا لم أستخدمت طريقة ahmed_samirو أضفت end if;برده كان بيطلع رقم التيكت صح لكن مبيعملش save فى الداتا بيزو طريقة pALI.oracleهيطلع رقم التيكت لليوزر ممكن هو لا يعمل save ويستخدم الرقم للدخول على بيانات شخص اخر انا عايز الرقم يظهر بعد ال save تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة كاتب الموضوع comment_157881 انا حملت لكم صورة من الجدولعلى فكرة ال user id is a primary key not nul but in another table called user_infono error message appear تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة comment_157890 حاول تعمل زي هذه الفورم وأبلغنا هل ده هدفك أم لا create table ticket (tecket_no number, meter_no number, type_problem varchar2(333)); ttt.rar تقديم بلاغ
بتاريخ: 23 مايو 200917 سنة كاتب الموضوع comment_157892 أنا استخدمت طريقة أحمد سميربس كان لازم اضع ال user_id يطلع و يدخلبس مش عارف ليه لازممع انه مش معمول notnullسوال تانى كيف أعمل exit_formبمعنى لو وضعتها قبل end if; لا يظهر رقم ال ticketلو وضعتها بعد end if; برده لا يظهرلكن بدون ال exit لا تعمل مشاكلو أشكر كل من أهتم بمساعدتى تقديم بلاغ
بتاريخ: 24 مايو 200917 سنة comment_157899 أشكرك على الردأنا لم أستخدمت طريقة ahmed_samirو أضفت end if;برده كان بيطلع رقم التيكت صح لكن مبيعملش save فى الداتا بيزو طريقة pALI.oracleهيطلع رقم التيكت لليوزر ممكن هو لا يعمل save ويستخدم الرقم للدخول على بيانات شخص اخر انا عايز الرقم يظهر بعد ال save اخي لم افهم تعقيبك على حلي...ممكن توضح اكتر ؟؟؟ تقديم بلاغ
بتاريخ: 24 مايو 200917 سنة comment_157915 اخي بغض النظر عن الخطأ في الكود .... انا مش عارف المشكلة اتحلت ولا لأ ؟؟؟بس انا عندي شوية تحفظات على طريقة كتابة الكود .... والله من باب النصيحةهفترض معاك ان اليوسر داس crl+s تفتكر البرنامج هيعمل حفظاو لو داس على علامة الديسك فوق في شريط الادوات علامة حفظ يعني ... تفتكر برضه هيحفظ ؟؟نفس القصة في موضوع زرار الخروج ... لو داس f4 يخرج ؟؟؟ مع ان ده المفروض اللي يحصل اسمحللي ... اعدل شوية في طريقة الكود ... لحد ما اعرف هل المشكلة الاساسية اصلا اتحلت ولا لأ ؟؟؟حضرتك المفروض تعمل تريجر key_commit ، وتريجر pre_insert ، وتريجر key_exit1- تريجر pre_insert ----------------------declarev_alert number;begin -- :SUPPORT_TICKET.TICKET_NO:=:SYSTEM.CURSOR_RECORD;v_alert := show_alert('alert1');if v_alert = alert_button1 then message('ÔßÑ Úáì ÊÚÇæäßã ãÚäÇ');else raise form_trigger_failure;end if;select NVL (Max (ticket_no,0))+1into :ticket_no from support_ticketكend;2- key_commit-----------------commit_form(no_validate);if form_success then message('تم الحفظ بنجاح ');message('تم الحفظ بنجاح ')clear_message ;3- تريجر زرار الحفظ----------------do_key('commit_form');============================================================================تريجر key_exit----------------المفروض تعمل alert ليكن اسمه ask_extdeclarev_alert number;begin v_alert := show_alert('ask_ext');if v_alert = alert_button1 then exit_form(no_validate);else raise form_trigger_failure;end if;2- زرار الخروج---------------do_key('exit_form');ده رأي المتواضع .... ولو المشكلة الاساسية لسه ما تحلتش ياريت تقوللي عشان اركز في المشكلة ، عشان مش عارف إذا كان الاعضاء حلوها ولا لأ ؟؟؟ تقديم بلاغ
بتاريخ: 24 مايو 200917 سنة كاتب الموضوع comment_157979 أشكر حضرتك أستاذ عبدومعلش انا مبتدى اوركلهو ال key_commitkey_exitهل دول سيوضعوا trigger on formor where?أشكركم جزيلا تم حل المشكلة الاساسية بواسطتك جميعا الف شكرتوجد مشكلة اخرى صغيرة هى اللغة لما ادخل من الانترنيت اكسبلورر تدخل البيانات الى الداتا بيز ؟؟؟؟؟؟؟؟؟؟؟؟أنا عند تصطيب الاوركل و الديفلوبر كان الجهاز انجليزىحولته عربى و عملت ال NLS_lang عربى فى الاوركل و الديفولبرماذا افعلشكرا جزيلا لكل من اهتم بمساعدتى تقديم بلاغ
بتاريخ: 24 مايو 200917 سنة comment_158004 اخي العزبز انا ممكن تجرب تعمل علي حدث ON COMMIT اكتب(KEY('COMMIT_FORMعلي مستوي الفورم وجرب تقديم بلاغ
بتاريخ: 25 مايو 200917 سنة comment_158035 السلام عليكماخي الحبيب...اعمل هيك:اكتب هذا الكود داخل ترجر PRE-INSERT على مستوى البلوك... begin; select NVL (Max (ticket_no,0))+1 into :ticket_no from support_ticket; exception when others then :ticket_no :=1; end; وداخل زر الخفظ أكتب التالي: DECLARE v_alert NUMBER; BEGIN v_alert := show_alert('alert1'); if v_alert = alert_button1 then message('ÔßÑ Úáì ÊÚÇæäßã ãÚäÇ'); COMMIT; END IF; END; ولعمل خروج من الشاشة اعمل زر اخر واكتب فيه الكود التالي: EXIT_FORM(NO_VALIDATE,NO_COMMIT); بالتوفيق تم تعديل 25 مايو 200917 سنة بواسطة PALI.ORACLE تقديم بلاغ
بتاريخ: 26 مايو 200917 سنة comment_158159 يا اخي لا شكر على واجب ... كلنا اخوات ان شاء الله ، وانا اكيد لاقيت في يوم من الايام اللي يساعدني برضه المهم ... الاجابة نعم تحط KEY_COMMIT,KEY_EXIT على مستوى الفورم وانا من رأي ان مفيش اي داعي للـ EXCPTION لان حضرتك في الكود هتعمل RAISE FORM_TRIGGER_FAILURE;خد بالك التريجرات على مستوى الفورم بيبقى فيها SCOPE يعني الفورم بيشوف التريجر من جوه لبره إلا لو انت لعبت في الخصائص بمعنى انك لو علمت تريجر تاني على اي بلوك وكان KEY_COMMIT مثلا ، كده بقى عندنا في الفورم 2 KEY_COMMIT ، واحد على مستوى البلوك وواحد على مستوى الفورم ، وانت جيت في زرار وقولت DO_KEY('COMMIT_FORM '); ، يبقى هينفذ مين اللي على مستوى الفورم ولا البلوك ، هينفذ اللي على مستوى البلوك إلا بأه لو انت غير في الخصائص ده موضوع تاني انا بس كنت بقول الكلام ده عشان انت سألتني احط التريجر فين بس كده ... ويارب تكون الفكرة وضحت تقديم بلاغ
بتاريخ: 26 مايو 200917 سنة comment_158181 بسم الله والحمد لله والصلاة والسلام على رسول الله[line][/line]اخي الفاضل إليك ملاحظاتي التي اود ان تنفعك بإذن الله1- ان كلمة Commit_form موضوعة في مكان خطأ وهو الاكسبشن يعني انت طالب منه يحفظ في حالة وجود خطأ .. وبما أن الكود اللي كاتبه قبل جزء الاكسبشن مش ممكن يرجع بخطأ ، فلن يقوم الكود بالحفظ. !!!.2- لا داعي لوضع الاكسبشن هنا لإنك عالجت احتمال ان ترجع القيمة بـ NULL باستخدام NVL .3- يجب عليك ان تضع جملة حساب اكبر قيمة واضافة 1 عليها في تريجر pre-insert كما قال لك أحد الزملاء. ولا داعي لباقي الكود.4- تأكد من انك حولت الخاصية REQUIRED لهذا الحقل الى NO حتى يقبل النظام بألا تدخلها انت قبل الانتقال الى السجل الاخر او عند الحفظ بل يقوم هو بادخالها بالتريجير اللي اتفقنا عليه وهو PRE-INSERT 5- يمكنك ايضا ويفضل ان تحمي الحقل هذا من التحديث حتى لا يدخل المستخدم بطريقة خطأ قيمة في الحقل ثم الذي يحدث ان النظام سوف يستبدل هذه القيمة بالقيمة التي ستحتسب اوتوماتيك من التريجر PRE-INSERT وفقنا الله الى ما يحبه ويرضاهاخوك أبو عمر تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.