Thursday, 12 September 2013

Issue of display record in oracle form 10g

Issue of display record in oracle form 10g

I'm new to Oracle Form and pl/sql. Here is my problem In my form, I got 3
data blocks that display records that I retrieve from a table named
BOS_M_HOLIDAY. But somehow only the last record displayed in each
datablocks after the loop. The way I retrieve the records is using the
PRE-FORM Trigger and WHEN-TIME-EXPIRED Trigger. Here is my code in
PRE-FORM Trigger:
DECLARE
CURSOR a_aa is SELECT HOL_DATE FROM BOS_M_HOLIDAY WHERE
REGEXP_LIKE(HOL_DATE, '.......12') ORDER BY HOL_DATE;
CURSOR a_bb is SELECT HOL_DATE FROM BOS_M_HOLIDAY WHERE
REGEXP_LIKE(HOL_DATE, '.......13') ORDER BY HOL_DATE ;
CURSOR a_cc is SELECT distinct DESCR FROM BOS_M_HOLIDAY WHERE
REGEXP_LIKE(HOL_DATE, '.......13')ORDER BY 1;
Timer_ID TIMER;
BEGIN
OPEN a_aa;
LOOP
FETCH a_aa INTO :holiday_2012.HOL_DATE;
EXIT WHEN a_aa%notfound;
Timer_ID := FIND_TIMER('CALL_NEXT_RECORD');
IF NOT Id_Null(Timer_ID) THEN
Delete_Timer(Timer_ID);
END IF;
Timer_ID := Create_Timer('CALL_NEXT_RECORD',1,NO_REPEAT);
END LOOP;
CLOSE a_aa;
OPEN a_bb;
LOOP
FETCH a_bb INTO :holiday_2013.HOL_DATE;
EXIT WHEN a_bb%notfound;
Timer_ID := FIND_TIMER('CALL_NEXT_RECORD');
IF NOT Id_Null(Timer_ID) THEN
Delete_Timer(Timer_ID);
END IF;
Timer_ID := Create_Timer('CALL_NEXT_RECORD',1,NO_REPEAT);
END LOOP;
CLOSE a_bb;
OPEN a_cc;
LOOP
FETCH a_cc INTO :description.DESCR;
EXIT WHEN a_cc%notfound;
Timer_ID := FIND_TIMER('CALL_NEXT_RECORD');
IF NOT Id_Null(Timer_ID) THEN
Delete_Timer(Timer_ID);
END IF;
Timer_ID := Create_Timer('CALL_NEXT_RECORD',1,NO_REPEAT);
END LOOP;
CLOSE a_cc;
END;
and here is my code in WHEN-TIME-EXPIRED Trigger:
DECLARE
v_Timer VARCHAR2(30) := Get_Application_Property(TIMER_NAME);
BEGIN
IF (v_Timer = 'CALL_NEXT_RECORD') THEN
NEXT_RECORD;
END IF;
END;
This code works when I use WHEN-BUTTON-PRESSED Trigger without the TIMER
part. Bare with my English and feel free to ask me if any parts that you
do not understand. Thanks!

No comments:

Post a Comment