لماذا يا شباب لما أنفذ هذه الـ 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;
*/
/*
execute_query;
declare
d date;
BEGIN GO_BLOCK('TEST');
FIRST_RECORD;
LOOP
d:=:test.hiredate;
IF to_char(SYSDATE,'dd-mm-yyyy') >= to_char(d,'dd-mm-yyyy') THEN
Set_Item_Instance_Property( 'TEST.DIS', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT1');
ELSE
Set_Item_Instance_Property( 'TEST.DIS', CURRENT_RECORD,VISUAL_ATTRIBUTE,'ATT2');
END IF;
EXIT WHEN :SYSTEM.LAST_RECORD='TRUE';
NEXT_RECORD;
END LOOP;
FIRST_RECORD;
END;حيث أن العملية الحسابية التي تطرح التاريخين هي :
M_D:= to_char(FD,'dd')- to_char(sysdate,'dd'); :IN_DOC.DUE := TO_DATE(M_D,'DD');