بتاريخ: 1 يناير 200620 سنة comment_56284 لماذا يا شباب لما أنفذ هذه الـ PL/SQL على الـ Tabulareينفذها جميعها على الTabulare ، ماعدى العملية الحسابية التي تطرح تاريخين وتضعه في الحقل الملون يظهرها ماعدى آخر سجل لماذ ؟أرفق لكم صورة من الفورم للتوضيح ........... DECLARE FD DATE; M_D CHAR(10); CURSOR IN_DOCS IS SELECT IN_ID,IN_DATE,IN_FROM,IN_STARTPROCESS,IN_PROCESSTIME,IN_SUBJECT,IMP_NAME FROM IN_DOC,DEPT_MANAGER,IN_IMPORTANT WHERE IN_TO_DEPT4 = DEPT_ID AND IN_IMPORT = IMP_ID AND IN_TO_DEPT4=5 AND IN_STATUSS IN (2,3,6,7,8); BEGIN GO_BLOCK('IN_DOC'); FIRST_RECORD; OPEN IN_DOCS; LOOP FETCH IN_DOCS INTO :IN_DOC.IN_ID,:IN_DOC.IN_DATE,:IN_DOC.IN_FROM,:IN_DOC.IN_STARTPROCESS,:IN_DOC.IN_PROCESSTIME,:IN_DOC.IN_SUBJECT,:IN_DOC.IMP_NAME; FD := :IN_DOC.IN_STARTPROCESS + :IN_DOC.IN_PROCESSTIME; IF to_char(SYSDATE,'dd-mm-yyyy') >= to_char(FD,'dd-mm-yyyy') THEN Set_Item_Instance_Property( 'IN_DOC.DUE', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT1'); ELSE Set_Item_Instance_Property( 'IN_DOC.DUE', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT2'); END IF; M_D:= to_char(FD,'dd')- to_char(sysdate,'dd'); :IN_DOC.DUE := TO_DATE(M_D,'DD'); NEXT_RECORD; EXIT WHEN IN_DOCS%NOTFOUND; END LOOP; CLOSE IN_DOCS; FIRST_RECORD; END; حيث أن العملية الحسابية التي تطرح التاريخين هي : M_D:= to_char(FD,'dd')- to_char(sysdate,'dd'); :IN_DOC.DUE := TO_DATE(M_D,'DD'); ZZF.bmp تقديم بلاغ
بتاريخ: 1 يناير 200620 سنة comment_56289 اليك التعديل اخي الكريم DECLARE FD DATE; M_D CHAR(10); CURSOR IN_DOCS IS SELECT IN_ID,IN_DATE,IN_FROM,IN_STARTPROCESS, IN_PROCESSTIME,IN_SUBJECT,IMP_NAME FROM IN_DOC,DEPT_MANAGER,IN_IMPORTANT WHERE IN_TO_DEPT4 = DEPT_ID AND IN_IMPORT = IMP_ID AND IN_TO_DEPT4=5 AND IN_STATUSS IN (2,3,6,7,8); BEGIN GO_BLOCK('IN_DOC'); FIRST_RECORD; OPEN IN_DOCS; for i in IN_DOCS LOOP :IN_DOC.IN_ID:=i.IN_ID; :IN_DOC.IN_DATE:=i.IN_DATE; :IN_DOC.IN_FROM:=i.IN_FROM; :IN_DOC.IN_STARTPROCESS:=i.IN_STARTPROCESS; :IN_DOC.IN_PROCESSTIME:=i.IN_PROCESSTIME; :IN_DOC.IN_SUBJECT:=i.IN_SUBJECT; :IN_DOC.IMP_NAME :=i.IMP_NAME; FD := :IN_DOC.IN_STARTPROCESS + :IN_DOC.IN_PROCESSTIME; IF to_char(SYSDATE,'dd-mm-yyyy') >= to_char(FD,'dd-mm-yyyy') THEN Set_Item_Instance_Property( 'IN_DOC.DUE', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT1'); ELSE Set_Item_Instance_Property( 'IN_DOC.DUE', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT2'); END IF; M_D:= to_char(FD,'dd')- to_char(sysdate,'dd'); :IN_DOC.DUE := TO_DATE(M_D,'DD'); NEXT_RECORD; END LOOP; CLOSE IN_DOCS; FIRST_RECORD; END; تقديم بلاغ
بتاريخ: 1 يناير 200620 سنة كاتب الموضوع comment_56292 ولكن يا أخي الكريم لم يظهر لي أي نتيجة ..........أي أنه لم يظهر خطأ ، ولكن لم يظهر أي سجل في الـ Tabulareلماذا ؟ تقديم بلاغ
بتاريخ: 1 يناير 200620 سنة comment_56316 هل جربت تعديل الكود قبل سؤالكهو المفروض يعطي النتيجة ثم يطلع من الLOOP واظن عندك انه يصل الى اخر شيء في ال LOOP ويخرج قبل التنفيذ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.