بتاريخ: 7 أبريل 201412 سنة comment_248944 السلام عليكم ورحمة الله وبركاته جميعااشكر الله سبحانه وتعالي ثم اشكركم على المساعدة اقوم بعمل شاشة لانشاء ارقام الجلوس فاقوم بتعبئة بيانات الطالب من الرقم و الاسم والمستوى والتخصص وقمت بعمل تريجر لتعبئة ارقام الجلوس والبيانات السابقة في جدول اخرولكن عند التنفيذ على التود السيكول تخرج كل البيانات تمام ولكن في الشاشة يحضر اول ريكورد فقطفحاولت عمل loopاو ref_cursorولكن يعطي اخطاءوالكود مرفق ادناه declare v_NUMBERS_SIT_ID_DET number(10); v_USER_NUMBERS_SIT_ID_DET number(10); v_STUD_ID number(10); v_USER_STUD_ID number(10); v_SCHOOL_YEAR_ID number(10); v_SCHOOL_ACT_YEAR_ID number(10); v_SCHOOL_ACT_YEAR_DEPTID number(10); cursor c_sn_seq is select NVL(max(NUMBERS_SIT_ID_DET),0)+1,NVL(max(USER_NUMBERS_SIT_ID_DET),0)+1 from STD_NUMBERS_SIT_DETIAL; cursor c_data is SELECT a. stud_id,a.user_stud_id,a.school_year_id,a.school_act_year_id,a.school_act_year_deptid FROM std_study_level_students a where user_stud_id not in (select user_stud_id from std_outgoing) and SCHOOL_YEAR_ID= (select max (SCHOOL_YEAR_ID) from std_study_level_students) ORDER BY a.school_act_year_id,a.school_act_year_deptid desc,to_number(user_stud_id); begin open c_sn_seq; fetch c_sn_seq into v_NUMBERS_SIT_ID_DET,v_USER_NUMBERS_SIT_ID_DET ; -- close c_sn_seq; open c_data; -- message(v_NUMBERS_SIT_ID_DET||'-'||v_USER_NUMBERS_SIT_ID_DET); -- message(v_NUMBERS_SIT_ID_DET||'-'||v_USER_NUMBERS_SIT_ID_DET); FOR employee_rec in c_data LOOP fetch c_data into v_STUD_ID ,v_USER_STUD_ID ,v_SCHOOL_YEAR_ID ,v_SCHOOL_ACT_YEAR_ID ,v_SCHOOL_ACT_YEAR_DEPTID ; -- close c_data; -- message(:STD_NUMBERS_SIT.NUMBERS_SIT_ID); -- message(v_USER_STUD_ID||'-'|| v_STUD_ID); --for i in c_data loop insert into STD_NUMBERS_SIT_DETIAL(NUMBERS_SIT_ID_DET, USER_NUMBERS_SIT_ID_DET, NUMBERS_SIT_ID, USER_STUD_ID, STUD_ID, NUMBER_SIT, SCHOOL_YEAR_ID, UNVERSITY_YEAR, SCHOOL_ACT_YEAR_ID, USER_SCHOOL_ACT_YEAR_DEPTID, SEMESTER_ID ) values (v_NUMBERS_SIT_ID_DET, v_USER_NUMBERS_SIT_ID_DET, :STD_NUMBERS_SIT.NUMBERS_SIT_ID, v_USER_STUD_ID, v_STUD_ID, std_sit_numbers(v_SCHOOL_ACT_YEAR_ID,v_SCHOOL_ACT_YEAR_DEPTID,:STD_NUMBERS_SIT.NUMBERS_SIT_ID), v_SCHOOL_YEAR_ID, :STD_NUMBERS_SIT.UNVERSITY_YEAR, v_SCHOOL_ACT_YEAR_ID, v_SCHOOL_ACT_YEAR_DEPTID, :STD_NUMBERS_SIT.SEMESTER_ID); next_record; end loop; close c_sn_seq; close c_data; commit; execute_query; end; تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248950 ايش رسالة الخطا الي طلعتلك؟؟؟ اشكرك جزيلالالا على الرد هو لا يعطي خطا ولكنة يقوم بتعبئة ريكود واحد فقط وانا اريد ان يقوم بتعبئة كل البيانات ويعمل الــloop تم تعديل 7 أبريل 201412 سنة بواسطة AHMED BASHA تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة comment_248951 PROCEDURE search_rec IS v_day_weak varchar(30); v_from_time number ; v_to_time number ; v_name varchar2(100); CURSOR CUR_EMP IS select t.day_weak , t.from_time,t.to_time , l.lab_code from labs_time t,labs l where l.lab_id = t.lab_id and date_code = :labs.date_Code and day_weak = :labs_time.day_Weak and not EXISTS( select 1 from labs x,labs_time p1 where x.lab_id = p1.lab_id and l.s_Date <> :labs.s_date ); BEGIN GO_BLOCK('search_labs_time'); CLEAR_BLOCK; OPEN CUR_EMP; FETCH CUR_EMP INTO v_day_weak,v_from_time , v_to_time,v_name ; WHILE CUR_EMP%FOUND LOOP CREATE_RECORD; :search_labs_time.day_weak := v_day_weak ; :search_labs_time.from_time := v_from_time ; :search_labs_time.to_time := v_to_time ; :search_labs_time.lab_code := v_name ; FETCH CUR_EMP INTO v_day_weak, v_from_time ,v_to_time,v_name ; END LOOP; CLOSE CUR_EMP; EXCEPTION WHEN OTHERS THEN message('تم'); END; cursor ده انا عملته لتعبئه بيانات لجدول non database .... فممكن طريقته تفيدك تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة comment_248956 السلام عليكم ورحمة الله هو لا يعطي خطاولكنة يقوم بتعبئة ريكود واحد فقط وانا اريد ان يقوم بتعبئة كل البيانات غير مكان ال commit داخل ال loop تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248958 اشكركم جميعا ولكنة يقوم ايضا بتعبئة ريكورد واحد فقط وعند الريكورد الثاني يقوم باعطاء الرسالة Record must be deleted or enterd first تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة comment_248962 السلام عليكم جرب الكود التالي: DECLARE v_numbers_sit_id_det NUMBER (10); v_user_numbers_sit_id_det NUMBER (10); v_stud_id NUMBER (10); v_user_stud_id NUMBER (10); v_school_year_id NUMBER (10); v_school_act_year_id NUMBER (10); v_school_act_year_deptid NUMBER (10); CURSOR c_data IS SELECT a.stud_id, a.user_stud_id, a.school_year_id, a.school_act_year_id, a.school_act_year_deptid FROM std_study_level_students a WHERE user_stud_id NOT IN (SELECT user_stud_id FROM std_outgoing) AND school_year_id = (SELECT MAX (school_year_id) FROM std_study_level_students) ORDER BY a.school_act_year_id, a.school_act_year_deptid DESC, TO_NUMBER (user_stud_id); BEGIN GO_BLOCK ('BLK_2'); FIRST_RECORD; FOR rec IN c LOOP BEGIN SELECT NVL (MAX (numbers_sit_id_det), 0) + 1, NVL (MAX (user_numbers_sit_id_det), 0) + 1 INTO v_numbers_sit_id_det, v_user_numbers_sit_id_det FROM std_numbers_sit_detial; END; INSERT INTO std_numbers_sit_detial (numbers_sit_id_det, user_numbers_sit_id_det, numbers_sit_id, user_stud_id, stud_id, number_sit, school_year_id, unversity_year, school_act_year_id, user_school_act_year_deptid, semester_id ) VALUES (v_numbers_sit_id_det, v_user_numbers_sit_id_det, :std_numbers_sit.numbers_sit_id, v_user_stud_id, v_stud_id, std_sit_numbers (v_school_act_year_id, v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id ), v_school_year_id, :std_numbers_sit.unversity_year, v_school_act_year_id, v_school_act_year_deptid, :std_numbers_sit.semester_id ); NEXT_RECORD; END LOOP; COMMIT; EXECUTE_QUERY; END; تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248963 والله العظيم انا في غاية الشكر ما زالت الرسالة Record must be entered or deleted first الفورم مرفق std_Numbers_sit.rar error.rar تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة comment_248965 جرب تعديل الكود كالتالي: BEGIN SELECT NVL (MAX (numbers_sit_id_det), 0) + 1, NVL (MAX (user_numbers_sit_id_det), 0) + 1 INTO v_numbers_sit_id_det, v_user_numbers_sit_id_det FROM std_numbers_sit_detial WHERE stud_id = rec.stud_id; END; تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248967 ما زالت الرسالة Record must be entered or deleted first ولكن عند ضغط okعلى الرسالة يرمي ريكورد في الجدول جديد ولا يحضر بيانات stud_id user_stud_id, school_act_year_id, user_school_act_year_deptid, تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248971 لماذا لم يتم فتح الكيرسور c_data حتى يقوم باحضار بيانات stud_id, user_stud_id, school_act_year_id, user_school_act_year_deptid واين يتم وضعه في الاسكؤيبت تم تعديل 7 أبريل 201412 سنة بواسطة AHMED BASHA تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248972 اشكركم جميعا وجزاكم الله خيرااا قمت بتعديل الكود للموضح ادناه قام بتعبئة البيانات primary _key بعدد الطلبة الموجودة ولكن بيانات stud_id, user_stud_id, school_act_year_id, user_school_act_year_deptid لم يتم تعبئتها حيث تاتي من الكيرسور c_data واين يتم وضعه c_data في الاسكؤيبت DECLARE v_numbers_sit_id_det NUMBER (10); v_user_numbers_sit_id_det NUMBER (10); v_stud_id NUMBER (10); v_user_stud_id NUMBER (10); v_school_year_id NUMBER (10); v_school_act_year_id NUMBER (10); v_school_act_year_deptid NUMBER (10); CURSOR c_data IS SELECT a.stud_id, a.user_stud_id, a.school_year_id, a.school_act_year_id, a.school_act_year_deptid FROM std_study_level_students a WHERE user_stud_id NOT IN (SELECT user_stud_id FROM std_outgoing) AND school_year_id = (SELECT MAX (school_year_id) FROM std_study_level_students) ORDER BY a.school_act_year_id, a.school_act_year_deptid DESC, TO_NUMBER (user_stud_id); BEGIN GO_BLOCK ('STD_NUMBERS_SIT_DETIAL'); FIRST_RECORD; CLEAR_MESSAGE; --open c_data; -- fetch c_data into v_STUD_ID ,v_USER_STUD_ID ,v_SCHOOL_YEAR_ID ,v_SCHOOL_ACT_YEAR_ID ,v_SCHOOL_ACT_YEAR_DEPTID ; FOR rec IN c_data LOOP BEGIN SELECT NVL (MAX (numbers_sit_id_det), 0) + 1 INTO v_numbers_sit_id_det FROM std_numbers_sit_detial; --WHERE USER_NUMBERS_SIT_ID = rec.USER_NUMBERS_SIT_ID; SELECT NVL (MAX (user_numbers_sit_id_det), 0) + 1 INTO v_user_numbers_sit_id_det FROM std_numbers_sit_detial WHERE NUMBERS_SIT_ID = :STD_NUMBERS_SIT.NUMBERS_SIT_ID; END; /* INSERT INTO std_numbers_sit_detial (numbers_sit_id_det, user_numbers_sit_id_det, numbers_sit_id, user_stud_id, stud_id, number_sit, school_year_id, unversity_year, school_act_year_id, user_school_act_year_deptid, semester_id ) VALUES (v_numbers_sit_id_det, v_user_numbers_sit_id_det, :std_numbers_sit.numbers_sit_id, v_user_stud_id, v_stud_id, std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id ), v_school_year_id, :std_numbers_sit.unversity_year, v_school_act_year_id, v_school_act_year_deptid, :std_numbers_sit.semester_id ); */ :STD_NUMBERS_SIT_DETIAL.numbers_sit_id_det:=v_numbers_sit_id_det; :STD_NUMBERS_SIT_DETIAL.user_numbers_sit_id_det:=v_user_numbers_sit_id_det; :STD_NUMBERS_SIT_DETIAL.numbers_sit_id:=:std_numbers_sit.numbers_sit_id; :STD_NUMBERS_SIT_DETIAL.user_stud_id:=v_user_stud_id; :STD_NUMBERS_SIT_DETIAL.stud_id:=v_stud_id; :STD_NUMBERS_SIT_DETIAL.school_act_year_id:=v_school_act_year_id; :STD_NUMBERS_SIT_DETIAL.user_school_act_year_deptid:=v_school_act_year_deptid; :STD_NUMBERS_SIT_DETIAL.semester_id:=:std_numbers_sit.semester_id; :STD_NUMBERS_SIT_DETIAL.number_sit:=std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id ); :STD_NUMBERS_SIT_DETIAL.school_year_id:=v_school_year_id; :STD_NUMBERS_SIT_DETIAL.unversity_year:=:std_numbers_sit.unversity_year; NEXT_RECORD; --:system.message_level := 25; Commit; :system.message_level := 5; END LOOP; close c_data; EXECUTE_QUERY; END; تم تعديل 7 أبريل 201412 سنة بواسطة ميسم الكرام تقديم بلاغ
بتاريخ: 7 أبريل 201412 سنة كاتب الموضوع comment_248973 ارجو المساعدة تم تعديل 7 أبريل 201412 سنة بواسطة AHMED BASHA تقديم بلاغ
بتاريخ: 8 أبريل 201412 سنة كاتب الموضوع comment_249015 لماذا لم يتم احضار من الكيرسور c_data تقديم بلاغ
بتاريخ: 9 أبريل 201412 سنة كاتب الموضوع comment_249083 السلام عليكم ورحمة الله شكرا للجميع توصلت للحل DECLARE v_numbers_sit_id_det NUMBER (10); v_user_numbers_sit_id_det NUMBER (10); v_stud_id NUMBER (10); v_user_stud_id NUMBER (10); v_school_year_id NUMBER (10); v_school_act_year_id NUMBER (10); v_school_act_year_deptid NUMBER (10); HD NUMBER:=0; CURSOR c_data IS SELECT a.stud_id, a.user_stud_id, a.school_year_id, a.school_act_year_id, a.school_act_year_deptid FROM std_study_level_students a WHERE user_stud_id NOT IN (SELECT user_stud_id FROM std_outgoing) AND school_year_id = (SELECT MAX (school_year_id) FROM std_study_level_students) ORDER BY a.school_act_year_id, a.school_act_year_deptid DESC, TO_NUMBER (user_stud_id); BEGIN GO_BLOCK ('STD_NUMBERS_SIT_DETIAL'); FIRST_RECORD;--CLEAR_MESSAGE;BEGIN SELECT NVL (MAX (numbers_sit_id_det), 0) INTO v_numbers_sit_id_det FROM std_numbers_sit_detial; SELECT NVL (MAX (user_numbers_sit_id_det), 0) INTO v_user_numbers_sit_id_det FROM std_numbers_sit_detial WHERE NUMBERS_SIT_ID = :STD_NUMBERS_SIT.NUMBERS_SIT_ID; END;HD:=0; FOR rec IN c_data LOOP HD:=HD+1; --fetch c_data into v_STUD_ID ,v_USER_STUD_ID ,v_SCHOOL_YEAR_ID ,v_SCHOOL_ACT_YEAR_ID ,v_SCHOOL_ACT_YEAR_DEPTID ;/* INSERT INTO std_numbers_sit_detial (numbers_sit_id_det, user_numbers_sit_id_det, numbers_sit_id, user_stud_id, stud_id, number_sit, school_year_id, unversity_year, school_act_year_id, user_school_act_year_deptid, semester_id ) VALUES (v_numbers_sit_id_det, v_user_numbers_sit_id_det, :std_numbers_sit.numbers_sit_id, v_user_stud_id, v_stud_id, std_sit_numbers (v_school_act_year_id,v_school_act_year_deptid, :std_numbers_sit.numbers_sit_id ), v_school_year_id, :std_numbers_sit.unversity_year, v_school_act_year_id, v_school_act_year_deptid, :std_numbers_sit.semester_id );*/:STD_NUMBERS_SIT_DETIAL.numbers_sit_id_det:=v_numbers_sit_id_det + HD;:STD_NUMBERS_SIT_DETIAL.user_numbers_sit_id_det:=v_user_numbers_sit_id_det + HD;:STD_NUMBERS_SIT_DETIAL.numbers_sit_id:=:std_numbers_sit.numbers_sit_id;:STD_NUMBERS_SIT_DETIAL.user_stud_id:=rec.USER_STUD_ID;:STD_NUMBERS_SIT_DETIAL.stud_id:=rec.stud_id;:STD_NUMBERS_SIT_DETIAL.school_act_year_id:=rec.school_act_year_id;:STD_NUMBERS_SIT_DETIAL.MOSTWA_NAME:=GET_STUD_MOSTWEAA(rec.school_act_year_id);:STD_NUMBERS_SIT_DETIAL.user_school_act_year_deptid:=rec.school_act_year_deptid;:STD_NUMBERS_SIT_DETIAL.DEPT_NAME:=GET_STUD_MOSTWEAA_DEPT(rec.school_act_year_id,rec.school_act_year_deptid);:STD_NUMBERS_SIT_DETIAL.semester_id:=:std_numbers_sit.semester_id;:STD_NUMBERS_SIT_DETIAL.number_sit:=v_user_numbers_sit_id_det + HD||'/'||rec.school_act_year_id||''||rec.school_act_year_deptid;---std_sit_numbers(rec.school_act_year_id,rec.school_act_year_deptid,:std_numbers_sit.numbers_sit_id );:STD_NUMBERS_SIT_DETIAL.school_year_id:=rec.school_year_id;:STD_NUMBERS_SIT_DETIAL.unversity_year:=:std_numbers_sit.unversity_year;:STD_NUMBERS_SIT_DETIAL.STUDENT_NAME:=get_full_name(rec.USER_STUD_ID);SYNCHRONIZE; NEXT_RECORD; --:system.message_level := 25;--:system.message_level := 5; END LOOP;FORMS_DDL('COMMIT');close c_data; EXECUTE_QUERY; END; تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.