help: running total problem

From: Qi Y. Zeng <qizeng_at_acsu.buffalo.edu>
Date: Thu, 31 Mar 1994 02:46:20 GMT
Message-ID: <CnID19.IDs_at_acsu.buffalo.edu>


Dear Netters:

    I want to calculate the running total.     But when I query it, nothing appears in the running-total field.

    Would you please tell me what is wrong here? The .inp file is as follows.

    Thank you!

                                Sincerely,

                                qizeng     

/* Copyright (c) 1988 by the Oracle Corporation */

SQL*FORMS_VERSION = 03.00.16.12.07
TERSE = ON DEFINE FORM    NAME = CU_BO
   TITLE = cu_bo
   DEFAULT_MENU_APPLICATION = DEFAULT
   VALIDATION_UNIT = FIELD    DEFINE PROCEDURE

      NAME = CAL_TOTAL
      DEFINITION = <<<
      Procedure cal_total IS
      BEGIN
          SELECT NVL(AMOUNT_DUE,0)
          INTO :CU.TOTAL_OUTSTANDING   
          FROM BOOKINGS
          WHERE BOOKINGS.CUST_NO = :CU.CUST_NO
             AND BOOKINGS.PAID != 'Y';
      EXCEPTION
          WHEN no_data_found THEN
          :CU.TOTAL_OUTSTANDING := 0;
      
      END;
      >>>

   ENDDEFINE PROCEDURE    DEFINE PROCEDURE

      NAME = check_package_failure
      DEFINITION = <<<
      procedure check_package_failure is
      begin
          if not form_success then
              raise FORM_TRIGGER_FAILURE;
          end if;
      end;
      >>>

   ENDDEFINE PROCEDURE    DEFINE PROCEDURE

      NAME = clear_cu_details
      DEFINITION = <<<
      procedure clear_cu_details ( checkmaster boolean, opt number ) is
      begin
          if ( not checkmaster or ((:cu.CUST_NO is not null)) ) then
              clear_details('bo', 'cu', opt);
          end if ;
          go_block('cu');
      end;
      >>>

   ENDDEFINE PROCEDURE    DEFINE PROCEDURE

      NAME = clear_details
      DEFINITION = <<<
      procedure clear_details ( detail char, master char, opt number ) is
      begin
          go_block(detail);
          check_package_failure;
          if :system.block_status = 'CHANGED' then
              clear_block(opt);
              if :system.block_status = 'CHANGED' then
                  go_block(master);
                  raise FORM_TRIGGER_FAILURE;
              end if;
          end if;
          clear_block;
      end;
      >>>

   ENDDEFINE PROCEDURE    DEFINE PROCEDURE

      NAME = query_cu_details
      DEFINITION = <<<
      procedure query_cu_details is
      begin
          if ( (:cu.CUST_NO is not null) and :system.record_status != 'NEW' ) then
              query_details('bo');
          end if;
          go_block('cu');
      end;
      >>>

   ENDDEFINE PROCEDURE    DEFINE PROCEDURE

      NAME = query_details
      DEFINITION = <<<
      procedure query_details ( detail char ) is
      begin
          go_block(detail);
          check_package_failure;
          execute_query;
      end;
      >>>

   ENDDEFINE PROCEDURE    DEFINE BLOCK

      NAME = cu
      DESCRIPTION = cu
      TABLE = customers
      ROWS_DISPLAYED = 1
      BASE_LINE = 1
      LINES_PER_ROW = 0
      ARRAY_SIZE = 0

      DEFINE TRIGGER

         NAME = KEY-CLRBLK
         TRIGGER_TYPE = V3
         TEXT = <<<
         clear_cu_details(TRUE, ASK_COMMIT);
         clear_block;
         exception when form_trigger_failure then null;

>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-CLRREC TRIGGER_TYPE = V3 TEXT = <<< clear_record; clear_cu_details(FALSE, ASK_COMMIT); query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-CREREC TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); create_record; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-DELREC TRIGGER_TYPE = V3 TEXT = <<< declare cursor detail_cur is select 'x' from bookings where CUST_NO = :cu.CUST_NO; detail_dummy char(1); begin open detail_cur; fetch detail_cur into detail_dummy; if ( detail_cur%found ) then message ('Cannot delete master record when matching detail records exist.'); close detail_cur; raise form_trigger_failure; end if; close detail_cur; end; begin delete_record; clear_cu_details(FALSE, NO_COMMIT); query_cu_details; exception when form_trigger_failure then null; end;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-DOWN TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); down; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-ENTQRY TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); enter_query; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-EXEQRY TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); execute_query; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-NXTREC TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); next_record; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-NXTSET TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); next_set; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-PRVREC TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); previous_record; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-SCRDOWN TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); scroll_down; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-SCRUP TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); scroll_up; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE TRIGGER NAME = KEY-UP TRIGGER_TYPE = V3 TEXT = <<< clear_cu_details(TRUE, ASK_COMMIT); up; query_cu_details; exception when form_trigger_failure then null;
>>>
ENDDEFINE TRIGGER DEFINE FIELD NAME = CUST_NO DATATYPE = NUMBER LENGTH = 4 DISPLAY_LENGTH = 4 QUERY_LENGTH = 4 MANDATORY = ON PAGE = 1 LINE = 4 COLUMN = 20 HELP = Enter value for : CUST_NO UPDATE = OFF ENDDEFINE FIELD DEFINE FIELD NAME = CUST_NAME DATATYPE = CHAR LENGTH = 8 DISPLAY_LENGTH = 8 QUERY_LENGTH = 8 PAGE = 1 LINE = 4 COLUMN = 60 HELP = Enter value for : CUST_NAME ENDDEFINE FIELD DEFINE FIELD NAME = ADDRESS DATATYPE = CHAR LENGTH = 15 DISPLAY_LENGTH = 15 QUERY_LENGTH = 15 PAGE = 1 LINE = 6 COLUMN = 20 HELP = Enter value for : ADDRESS ENDDEFINE FIELD DEFINE FIELD NAME = CITY DATATYPE = CHAR LENGTH = 10 DISPLAY_LENGTH = 10 QUERY_LENGTH = 10 PAGE = 1 LINE = 6 COLUMN = 60 HELP = Enter value for : CITY ENDDEFINE FIELD DEFINE FIELD NAME = ZIP_CODE DATATYPE = NUMBER LENGTH = 7 DISPLAY_LENGTH = 7 QUERY_LENGTH = 7 PAGE = 1 LINE = 8 COLUMN = 20 HELP = Enter value for : ZIP_CODE ENDDEFINE FIELD DEFINE FIELD NAME = CONTACT DATATYPE = CHAR LENGTH = 5 DISPLAY_LENGTH = 5 QUERY_LENGTH = 5 PAGE = 1 LINE = 8 COLUMN = 60 HELP = Enter value for : CONTACT ENDDEFINE FIELD DEFINE FIELD NAME = PAY_METHOD DATATYPE = CHAR LENGTH = 6 DISPLAY_LENGTH = 6 QUERY_LENGTH = 6 PAGE = 1 LINE = 10 COLUMN = 20 HELP = Enter value for : PAY_METHOD ENDDEFINE FIELD DEFINE FIELD NAME = TOTAL_OUTSTANDING DATATYPE = RMONEY LENGTH = 8 DISPLAY_LENGTH = 8 QUERY_LENGTH = 8 BASE_TABLE = OFF MANDATORY = ON PAGE = 1 LINE = 12 COLUMN = 60 ECHO = OFF INPUT = OFF UPDATE = OFF AUTOHELP = ON ENDDEFINE FIELD

   ENDDEFINE BLOCK    DEFINE BLOCK

      NAME = bo
      DESCRIPTION = bo
      TABLE = bookings
      ROWS_DISPLAYED = 2
      BASE_LINE = 15
      LINES_PER_ROW = 1
      ARRAY_SIZE = 0

      DEFINE TRIGGER

         NAME = PRE-QUERY
         TRIGGER_TYPE = V3
         TEXT = <<<
         cal_total;

>>>
ENDDEFINE TRIGGER DEFINE FIELD NAME = BOOKING_NO DATATYPE = NUMBER LENGTH = 5 DISPLAY_LENGTH = 5 QUERY_LENGTH = 5 MANDATORY = ON PAGE = 1 LINE = 1 COLUMN = 2 HELP = Enter value for : BOOKING_NO ENDDEFINE FIELD DEFINE FIELD NAME = AMOUNT_DUE DATATYPE = NUMBER LENGTH = 8 DISPLAY_LENGTH = 8 QUERY_LENGTH = 8 PAGE = 1 LINE = 1 COLUMN = 15 HELP = Enter value for : AMOUNT_DUE ENDDEFINE FIELD DEFINE FIELD NAME = PAID DATATYPE = CHAR LENGTH = 1 DISPLAY_LENGTH = 1 QUERY_LENGTH = 1 PAGE = 1 LINE = 1 COLUMN = 30 HELP = Enter value for : PAID ENDDEFINE FIELD DEFINE FIELD NAME = CUST_NO DATATYPE = NUMBER LENGTH = 1 DISPLAY_LENGTH = 1 QUERY_LENGTH = 1 MANDATORY = ON DISPLAYED = OFF PAGE = 1 LINE = 1 COLUMN = 79 ENFORCE_KEY_FROM = cu.CUST_NO ECHO = OFF INPUT = OFF UPDATE = OFF QUERY = OFF ENDDEFINE FIELD

   ENDDEFINE BLOCK    DEFINE SCREEN       DEFINE PAGE

         PAGE = 1
         PAGE_XS = 0
         PAGE_YS = 0
         PAGE_PX0 = 0
         PAGE_PY0 = 0
         PAGE_PXS = 0
         PAGE_PYS = 0
         PAGE_SX0 = 0
         PAGE_SY0 = 0
         MODE = TEXT
         LINE = 2
         BOILER = <<<
                                      ========  CU  ========

>>>
LINE = 4 BOILER = <<< CUST_NO CUST_NAME
>>>
LINE = 6 BOILER = <<< ADDRESS CITY
>>>
LINE = 8 BOILER = <<< ZIP_CODE CONTACT
>>>
LINE = 10 BOILER = <<< PAY_METHOD ------------------------------------------------------------------------------- Total Outstanding
>>>
LINE = 14 BOILER = <<< Bookings Cost Paid?
>>>
ENDDEFINE PAGE DEFINE PAGE PAGE = 2 PAGE_XS = 0 PAGE_YS = 0 PAGE_PX0 = 0 PAGE_PY0 = 0 PAGE_PXS = 0 PAGE_PYS = 0 PAGE_SX0 = 0 PAGE_SY0 = 0 MODE = TEXT LINE = 2 BOILER = <<< ======== BO ========
>>>
ENDDEFINE PAGE

   ENDDEFINE SCREEN ENDDEFINE FORM

-- 
qizeng_at_acsu.buffalo.edu
test
Received on Thu Mar 31 1994 - 04:46:20 CEST

Original text of this message