# Prog. Version..: '5.00.06-08.07.09(00005)'     #
# Pattern name...: cbmr901.4gl
# Descriptions...: ?????極?株??€€??蝝啗」??
# Modify ........: 
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
DEFINE tm          RECORD
    wc         LIKE type_file.chr1000,     # Where condition
cb_plant   LIKE type_file.chr10,       #??銝剖? ??? [TEXTINPUT] DS01,DS02...
        cb_year    LIKE type_file.num5,        #撟游漲 銝??詨? [COMBOBOX]      2008 - 2014
        cb_month   LIKE type_file.num5         #?遢 銝??詨? [COMBOBOX]      1-12
END RECORD
DEFINE l_flag     LIKE type_file.num5    #SMALLINT,
DEFINE g_level_end ARRAY[20] OF LIKE type_file.num5 #SMALLINT
DEFINE   g_argv1         LIKE type_file.chr1
DEFINE   g_i             LIKE type_file.num5   #SMALLINT   #count/index for any purpose
                                                                                                         
DEFINE l_table    STRING                                                                                                            
DEFINE g_str      STRING                                                                                                   
DEFINE g_sql      STRING                                                                                                            
MAIN
   OPTIONS
       FORM LINE     FIRST + 2,
       MESSAGE LINE  LAST,
       PROMPT LINE   LAST,
       INPUT NO WRAP
   DEFER INTERRUPT # Supress DEL key function
   
   LET g_argv1 = ARG_VAL(1)
   LET g_towhom = ARG_VAL(2)
   LET g_rlang  = ARG_VAL(3)
   LET g_bgjob  = ARG_VAL(4)
   LET g_prtway = ARG_VAL(5)
   LET g_copies = ARG_VAL(6)
   LET tm.wc  = ARG_VAL(7)
   LET tm.cb_plant  = ARG_VAL(8)
   LET tm.cb_year  = ARG_VAL(9)
   LET tm.cb_month      = ARG_VAL(10)
   LET g_prog ="cbmr901"
   IF (NOT cl_user()) THEN
      EXIT PROGRAM
   END IF
  
   WHENEVER ERROR CALL cl_err_msg_log
  
   IF (NOT cl_setup("CBM")) THEN  
      EXIT PROGRAM
   END IF                                                                                                    
   ## BEGIN: ??Crystal Reports 銝脰畾?- <<<< ?Y?Temp Table >>>> 2010/12/27 Jeffrey Hu *** ##
   LET g_sql  = "x1.type_file.chr10,",
                "x2.type_file.chr18,",
                "x3.type_file.chr10,",
                "x4.type_file.chr50,",
                "x5.type_file.chr50,",   
                "x6.type_file.chr50,",                
                "x7.type_file.chr1000,",
"x8.type_file.chr1000,",
"x9.type_file.num20,",
"x10.type_file.chr50"
   ## END: ??Crystal Reports 銝脰畾?- <<<< ?Y?Temp Table >>>> 2010/12/27 Jeffrey Hu *** ##   
                            
   LET l_table = cl_prt_temptable('cbmr901',g_sql) CLIPPED
   IF l_table = -1 THEN EXIT PROGRAM END IF           
   LET g_sql = "INSERT INTO ",g_cr_db_str CLIPPED,l_table CLIPPED," VALUES(?,?,?,?,?, ?,?,?,?,? ) "                                                                                                     
   PREPARE insert_prep FROM g_sql                                                                                                   
   IF STATUS THEN                                                                                                                   
      CALL cl_err('insert_prep:',status,1) EXIT PROGRAM                                                                             
   END IF                                                                                         
 
   IF cl_null(g_bgjob) OR g_bgjob = 'N' # If background job sw is off
      THEN CALL r002_tm(0,0)          # Input print condition
      ELSE CALL cbmr901() # Read data and create out-file
   END IF
END MAIN
FUNCTION r002_tm(p_row,p_col)
   DEFINE  p_row,p_col LIKE type_file.num5,   #SMALLINT,
                l_flag LIKE type_file.num5,   #SMALLINT,
                l_one         LIKE type_file.chr1,    #CHAR(01)
                l_cmd         LIKE type_file.chr1000  #CHAR(1000)
   IF p_row = 0 THEN LET p_row = 4 LET p_col =14 END IF
   #UI
   IF g_gui_type MATCHES "[13]" AND fgl_getenv('GUI_VER') = '6' THEN
       LET p_row = 7 LET p_col = 20
   ELSE
       LET p_row = 4 LET p_col = 14
   END IF
   OPEN WINDOW r002_w AT p_row,p_col
        WITH FORM "cbm/42f/cbmr901" 
   ATTRIBUTE (STYLE = g_win_style  CLIPPED)
    
   CALL cl_ui_init()
   CALL cl_opmsg('p')
   
   INITIALIZE tm.* TO NULL # Default condition
   #### BEGIN: INPUT 霈 FOR SQL 璇辣撘?
   LET tm.cb_plant = 'DS01'
   LET tm.cb_year  = YEAR(TODAY)
   LET tm.cb_month = MONTH(TODAY)
   #### END:   INPUT 霈 FOR SQL 璇辣撘?
   LET g_pdate = g_today
   LET g_rlang = g_lang
   LET g_bgjob = 'N'
   LET g_copies = '1'
   WHILE TRUE
   INPUT BY NAME tm.cb_plant,tm.cb_year,tm.cb_month
   WITHOUT DEFAULTS
    AFTER FIELD cb_plant
            IF cl_null(tm.cb_plant) THEN
               NEXT FIELD cb_year
            END IF 
    AFTER FIELD cb_year
            IF cl_null(tm.cb_year) THEN
               NEXT FIELD cb_month
            END IF 
      ON ACTION CONTROLZ
            CALL cl_show_req_fields()
 
      ON ACTION CONTROLG
            CALL cl_cmdask() 
      ON IDLE g_idle_seconds
         CALL cl_on_idle()
         CONTINUE INPUT
      ON ACTION about
         CALL cl_about()
      ON ACTION help
         CALL cl_show_help()
      ON ACTION exit
         LET INT_FLAG = 1
         EXIT INPUT
   END INPUT
       IF g_action_choice = "locale" THEN
          LET g_action_choice = ""
          CALL cl_dynamic_locale()
          CONTINUE WHILE
       END IF
   IF INT_FLAG THEN
      LET INT_FLAG = 0 
      CLOSE WINDOW r002_w 
      EXIT PROGRAM
   END IF
   IF g_bgjob = 'Y' THEN
      SELECT zz08 INTO l_cmd FROM zz_file #get exec cmd (fglgo xxxx)
             WHERE zz01='cbmr901'
      IF SQLCA.sqlcode OR cl_null(l_cmd) THEN
         CALL cl_err('cbmr901','9031',1)
      ELSE
         LET tm.wc =cl_replace_str(tm.wc, "'", "\"")
         LET l_cmd = l_cmd CLIPPED, #(at time fglgo xxxx p1 p2 p3)
                         " '",g_pdate CLIPPED,"'",
                         " '",g_towhom CLIPPED,"'",
                         " '",g_lang CLIPPED,"'",
                         " '",g_bgjob CLIPPED,"'",
                         " '",g_prtway CLIPPED,"'",
                         " '",g_copies CLIPPED,"'",
                         " '",tm.wc CLIPPED,"'",
                         " '",tm.cb_plant CLIPPED,"'",
 " '",tm.cb_year CLIPPED,"'",
 " '",tm.cb_month CLIPPED,"'"
         CALL cl_cmdat('cbmr901',g_time,l_cmd) # Execute cmd at later time
      END IF
      CLOSE WINDOW r002_w 
EXIT PROGRAM
   END IF
   CALL cl_wait()
   CALL cbmr901()
   ERROR ""
END WHILE
   CLOSE WINDOW r002_w
END FUNCTION
   
FUNCTION cbmr901()
DEFINE   l_sql STRING
DEFINE   l_prog LIKE type_file.chr10
DEFINE sr RECORD
          x1  LIKE type_file.chr10,
          x2  LIKE type_file.chr18,
          x3  LIKE type_file.chr10,
          x4  LIKE type_file.chr50,
          x5  LIKE type_file.chr50,   
          x6  LIKE type_file.chr50,                
          x7  LIKE type_file.chr1000,
  x8  LIKE type_file.chr1000,
  x9  LIKE type_file.num20,
  x10 LIKE type_file.chr50
        END RECORD
      CALL cl_del_data(l_table)     
      LET l_prog = g_prog
     ## BEGIN: SQL COMMAND WRITE HERE
      LET l_sql = " select '",tm.cb_plant CLIPPED,"' X1,tlf905 X2,to_char(tlf06,'yyyy/mm/dd') X3,to_char(tlf906) X4,tlf62 X5,tlf01 X6,ima02 X7,ima021 X8,(tlf10*tlf907*(-1)) X9, USERNAME X10 ",
              " from ",
              tm.cb_plant CLIPPED,".ima_file,",
              tm.cb_plant CLIPPED,".tlf_file,",
              tm.cb_plant CLIPPED,".sfp_file,",
              " DS.STAFF_file ",
              " where ima01 = tlf01 and tlf13 in ('asfi512','asfi527') and tlf907 <> 0 ",
              " AND year(tlf06) = '",tm.cb_year CLIPPED,"' AND month(tlf06) = '",tm.cb_month CLIPPED,"' ",
              " and tlf905 = sfp01 and sfpuser = USERID(+) order by 2,3 "
     ## END: SQL COMMAND WRITE HERE
     PREPARE r002_prepare1 FROM l_sql
     IF SQLCA.sqlcode != 0 THEN 
        CALL cl_err('prepare:',SQLCA.sqlcode,1) EXIT PROGRAM 
     END IF
     DECLARE r002_curs1 CURSOR FOR r002_prepare1
     INITIALIZE sr.* TO NULL
   #BEGIN: 頛詨鞈?
   FOREACH r002_curs1 INTO sr.*
      
      IF SQLCA.sqlcode != 0 THEN
         CALL cl_err('foreach:',SQLCA.sqlcode,1)
         EXIT FOREACH
      END IF
      
      EXECUTE insert_prep USING sr.x1,sr.x2,sr.x3,sr.x4,sr.x5,
              sr.x6,sr.x7,sr.x8,sr.x9,sr.x10
   END FOREACH
   #END: 頛詨鞈?
   LET g_prog = 'cbmr901'    
   LET g_str= tm.wc,";",l_prog                                                                           
   LET l_sql = "SELECT * FROM ", g_cr_db_str CLIPPED, l_table CLIPPED       
                          
   CALL cl_prt_cs3('cbmr901','cbmr901',l_sql,g_str)
   
   LET g_prog = l_prog    
   
END FUNCTION

jeffreyhu 發表在 痞客邦 留言(0) 人氣()


 
 
 

jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
# Prog. Version..: '5.00.05-08.04.29(00009)'     #
# Pattern name...: cimi200.4gl
# Descriptions...: ?CBA CHARGE?桀蝬剛風雿平??
# Date & Author..: 10/12/20 By Jeffrey Hu
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
DEFINE 
    g_pcb           DYNAMIC ARRAY OF RECORD    #蝔?霈(Program Variables)
        tc_pcb01       LIKE tc_pcb_file.tc_pcb01,   
        tc_pcb02       LIKE tc_pcb_file.tc_pcb02,   
        tc_pcb03       LIKE tc_pcb_file.tc_pcb03,   
        tc_pcb04       LIKE tc_pcb_file.tc_pcb04,  
        tc_pcbacti     LIKE tc_pcb_file.tc_pcbacti
                     END RECORD,
    g_pcb_t         RECORD                 #蝔?霈 (?€?
    tc_pcb01       LIKE tc_pcb_file.tc_pcb01,   
        tc_pcb02       LIKE tc_pcb_file.tc_pcb02,   
        tc_pcb03       LIKE tc_pcb_file.tc_pcb03,   
        tc_pcb04       LIKE tc_pcb_file.tc_pcb04,  
        tc_pcbacti     LIKE tc_pcb_file.tc_pcbacti
                    END RECORD,
    g_sql           string,  #No:FUN-580092 HCN
    g_wc2           STRING,  #TQC-630166 
    g_rec_b         LIKE type_file.num5,   #?株澈蝑  #No.FUN-690026 SMALLINT
    l_ac            LIKE type_file.num5,   #?桀????RRAY CNT  #No.FUN-690026 SMALLINT
    g_account       LIKE type_file.num5    #??蝬剛風 #FUN-670032  #No.FUN-690026 SMALLINT
DEFINE p_row,p_col            LIKE type_file.num5    #No.FUN-690026 SMALLINT
DEFINE g_forupd_sql           STRING                 #SELECT ... FOR UPDATE NOWAIT SQL
DEFINE g_chr                  LIKE type_file.chr1    #No.FUN-690026 VARCHAR(1)
DEFINE g_cnt                  LIKE type_file.num10   #No.FUN-690026 INTEGER
DEFINE g_i                    LIKE type_file.num5    #count/index for any purpose  #No.FUN-690026 SMALLINT
DEFINE g_msg                  LIKE type_file.chr1000 #No.FUN-690026 VARCHAR(72)
DEFINE g_before_input_done    LIKE type_file.num5    #No.FUN-570110     #No.FUN-690026 SMALLINT
DEFINE g_cmd                  LIKE type_file.chr1000 #FUN-680048 #No.FUN-690026 VARCHAR(70)
DEFINE g_flag                 LIKE type_file.chr1    #FUN-680048 #No.FUN-690026 VARCHAR(1)
MAIN
    OPTIONS                                #?寡?銝€鈭頂蝯梢?閮剖€?
        FORM LINE       FIRST + 2,         #?恍????蝵?
        MESSAGE LINE    LAST,              #閮憿舐內??蝵?
        PROMPT LINE     LAST,              #?內閮??蝵?
        INPUT NO WRAP                      #頛詨?撘? 銝?頧?
    DEFER INTERRUPT                        #?瑕?銝剜?? ?梁?撘???
   IF (NOT cl_user()) THEN
      EXIT PROGRAM
   END IF
  
   WHENEVER ERROR CALL cl_err_msg_log
  
   IF (NOT cl_setup("CIM")) THEN
      EXIT PROGRAM
   END IF
   CALL  cl_used(g_prog,g_time,1)       #閮?雿輻?? (?唇??) #No:MOD-580088  HCN 20050818  #No.FUN-6A0074
         RETURNING g_time    #No.FUN-6A0074
   LET p_row = 3 LET p_col = 6
   OPEN WINDOW i200_w AT p_row,p_col WITH FORM "cim/42f/cimi200"
      ATTRIBUTE (STYLE = g_win_style CLIPPED) #No:FUN-580092 HCN
   
   CALL cl_ui_init()
   #FUN-670032................begin
    #CALL cl_set_comp_visible("imd16,gem02",g_aaz.aaz90='Y')
    CALL cl_set_act_visible("account",g_aaz.aaz90='Y')
   #FUN-670032................end
   LET g_wc2 = '1=1' 
   CALL i200_b_fill(g_wc2)
   LET g_flag = 'N'        #FUN-680048
   CALL i200_menu()
   CLOSE WINDOW i200_w                    #蝯??恍
   CALL  cl_used(g_prog,g_time,2)          #閮?雿輻?? (?€?箔蝙?? #No:MOD-580088  HCN 20050818  #No.FUN-6A0074
         RETURNING g_time    #No.FUN-6A0074
END MAIN
FUNCTION i200_menu()
   WHILE TRUE
      CALL i200_bp("G")
      CASE g_action_choice
         WHEN "query" 
            IF cl_chk_act_auth() THEN
               CALL i200_q()
            END IF
         WHEN "detail" 
            IF cl_chk_act_auth() THEN
               LET g_account=FALSE #FUN-670032
               CALL i200_b()
            ELSE
               LET g_action_choice = NULL
            END IF
         WHEN "output"  
            IF cl_chk_act_auth() THEN
              CALL i200_out()
            END IF
         WHEN "help" 
            CALL cl_show_help()
         WHEN "exit" 
            EXIT WHILE
         WHEN "controlg"   
            CALL cl_cmdask()
         WHEN "exporttoexcel"      #FUN-4B0002
            IF cl_chk_act_auth() THEN
              CALL cl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(g_pcb),'','')
            END IF
      END CASE
   END WHILE
END FUNCTION
FUNCTION i200_q()
   CALL i200_b_askkey()
END FUNCTION
FUNCTION i200_b()
DEFINE
    l_ac_t          LIKE type_file.num5,    #?芸?瘨?ARRAY CNT  #No.FUN-690026 SMALLINT
    l_n             LIKE type_file.num5,    #瑼X???? #No.FUN-690026 SMALLINT
    l_lock_sw       LIKE type_file.chr1,    #?株澈???? #No.FUN-690026 VARCHAR(1)
    p_cmd           LIKE type_file.chr1,    #???€?? #No.FUN-690026 VARCHAR(1)
    l_possible      LIKE type_file.num5,    #?其?閮剖??斗????賣€? #No.FUN-690026 SMALLINT
    l_dir1          LIKE type_file.chr1,    #No.FUN-690026 VARCHAR(1)
    l_recal_ima1    LIKE type_file.chr1,    #No:TQC-690046 add
    l_recal_ima2    LIKE type_file.chr1,    #No:TQC-690046 add
    l_buf           LIKE ze_file.ze03,      #No.FUN-690026 VARCHAR(80)
    l_allow_insert  LIKE type_file.chr1,    #?舀憓  #No.FUN-690026 VARCHAR(1)
    l_allow_delete  LIKE type_file.chr1,    #?臬?文  #No.FUN-690026 VARCHAR(1)
    l_cnt           LIKE type_file.num10,   #FUN-670032  #No.FUN-690026 INTEGER
    l_pcb           RECORD LIKE tc_pcb_file.*, #FUN-670035 add
    l_change        LIKE type_file.chr1     #FUN-670035 add  #No.FUN-690026 VARCHAR(1)
    IF s_shut(0) THEN RETURN END IF
    LET l_allow_insert = cl_detail_input_auth('insert')
    LET l_allow_delete = cl_detail_input_auth('delete')
    CALL cl_opmsg('b')
    LET g_action_choice = ""
    LET g_forupd_sql = " SELECT tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti ", #FUN-670032 + #MOD-101220
                       " FROM tc_pcb_file ",
                       " WHERE tc_pcb01 = ? AND tc_pcb02 = ? AND tc_pcb03 = ? AND tc_pcb04 = ? FOR UPDATE NOWAIT "
    DECLARE i200_bcl CURSOR FROM g_forupd_sql      # LOCK CURSOR
    INPUT ARRAY g_pcb WITHOUT DEFAULTS FROM s_pcb.*
      ATTRIBUTE (COUNT=g_rec_b,MAXCOUNT=g_max_rec,UNBUFFERED,
                INSERT ROW=l_allow_insert,DELETE ROW=l_allow_delete,APPEND ROW=l_allow_insert)
        BEFORE INPUT
           IF g_rec_b != 0 THEN
              CALL fgl_set_arr_curr(l_ac)
           END IF
        BEFORE ROW
           LET p_cmd=''
           LET l_ac = ARR_CURR()
           LET l_lock_sw = 'N'            #DEFAULT
           LET l_n  = ARR_COUNT()
           IF g_rec_b>=l_ac THEN
              #No.FUN-570110 --start--         
              CALL i200_set_entry_b() #FUN-670032
              LET p_cmd = 'u'
              LET g_before_input_done = FALSE
              CALL i200_set_entry(p_cmd)                                                                             
              CALL i200_set_no_entry(p_cmd)                                                                                        
              LET g_before_input_done = TRUE                                                                                       
              #No.FUN-570110 --end--   
              BEGIN WORK
              LET p_cmd='u'
              LET g_pcb_t.* = g_pcb[l_ac].*  # BACKUP ?€?
              OPEN i200_bcl USING g_pcb_t.tc_pcb01,g_pcb_t.tc_pcb02,g_pcb_t.tc_pcb03,g_pcb_t.tc_pcb04
              
     IF STATUS THEN
                 CALL cl_err("OPEN i200_bcl:", STATUS, 1)
                 LET l_lock_sw = 'Y' 
              ELSE  
                 FETCH i200_bcl INTO g_pcb[l_ac].* 
                 IF SQLCA.sqlcode THEN
                    CALL cl_err(g_pcb_t.tc_pcb01,SQLCA.sqlcode,1)
                    LET l_lock_sw = "Y"
                 END IF
# LET g_imd[l_ac].gem02=s_costcenter_desc(g_imd[l_ac].imd16) #FUN-670063
              END IF
              CALL cl_show_fld_cont()     #FUN-550037(smin)
           END IF
        BEFORE INSERT
           LET l_n = ARR_COUNT()
           LET p_cmd='a'
           #No.FUN-570110 --start--                                                                                                            
           LET g_before_input_done = FALSE                                                                                      
           CALL i200_set_entry(p_cmd)                                                                                           
           CALL i200_set_no_entry(p_cmd)                                                                                        
           LET g_before_input_done = TRUE                                                                                       
           #No.FUN-570110 --end--   
           INITIALIZE g_pcb[l_ac].* TO NULL      #皜?怠?鞈?霈
           LET g_pcb[l_ac].tc_pcb01=''             #閮剖?????
           LET g_pcb[l_ac].tc_pcb02=''             #BugNo:6825
           LET g_pcb[l_ac].tc_pcb03=''             #BugNo:6825
   LET g_pcb[l_ac].tc_pcb04=''             #BugNo:6825
           LET g_pcb[l_ac].tc_pcbacti='Y'
           LET g_pcb_t.* = g_pcb[l_ac].*         #?啗撓?亥???
           CALL cl_show_fld_cont()     #FUN-550037(smin)
          
NEXT FIELD tc_pcb01
  AFTER FIELD tc_pcb01  #銝蝛箇
           IF cl_null(g_pcb[l_ac].tc_pcb01) THEN
              NEXT FIELD tc_pcb01
           END IF
  BEFORE FIELD tc_pcb02
           
   IF cl_null(g_pcb[l_ac].tc_pcb01) THEN
             CALL cl_set_comp_entry("tc_pcb02",FALSE) 
           END IF
           LET g_pcb_t.tc_pcb02 = g_pcb[l_ac].tc_pcb02
        AFTER FIELD tc_pcb02  #銝蝛箇
           IF cl_null(g_pcb[l_ac].tc_pcb02) THEN
               NEXT FIELD tc_pcb02
           END IF
BEFORE FIELD tc_pcb03
  IF cl_null(g_pcb[l_ac].tc_pcb02) THEN
             CALL cl_set_comp_entry("tc_pcb03",FALSE) 
           END IF
           LET g_pcb_t.tc_pcb03 = g_pcb[l_ac].tc_pcb03
        AFTER FIELD tc_pcb03  #銝蝛箇
           IF cl_null(g_pcb[l_ac].tc_pcb03) THEN
               NEXT FIELD tc_pcb03
           END IF
BEFORE FIELD tc_pcb04
  IF cl_null(g_pcb[l_ac].tc_pcb03) THEN
             CALL cl_set_comp_entry("tc_pcb04",FALSE) 
           END IF
           LET g_pcb_t.tc_pcb04 = g_pcb[l_ac].tc_pcb04
        AFTER FIELD tc_pcb04  #銝蝛箇
           IF cl_null(g_pcb[l_ac].tc_pcb04) THEN
               NEXT FIELD tc_pcb04
           END IF
        AFTER FIELD tc_pcbacti
           IF g_pcb[l_ac].tc_pcbacti NOT MATCHES '[YN]' THEN
               NEXT FIELD tc_pcbacti
           END IF
          #FUN-650128 add--start
           IF g_pcb[l_ac].tc_pcbacti = 'N' THEN
            #  CALL i200_check() RETURNING l_buf
    LET l_buf =''
              IF g_chr = 'E' THEN  #銝?寧?⊥?
                 CALL cl_err('','aim-125',0)
                 LET g_pcb[l_ac].tc_pcbacti = g_pcb_t.tc_pcbacti
                 DISPLAY BY NAME g_pcb[l_ac].tc_pcbacti
                 NEXT FIELD tc_pcbacti
              END IF
           END IF
          #FUN-650128 add--end
        BEFORE DELETE                            #?臬???株澈
           IF g_pcb_t.tc_pcb01 IS NOT NULL THEN
              IF NOT cl_delete() THEN
                 CANCEL DELETE
              END IF
             #瑼X甇斤?鞈?銋?皜豢?獢mf_file,img_file?臬撠雿輻銝?
              LET l_buf=''
              #CALL i200_check() RETURNING l_buf
              IF g_chr = 'E' THEN  #銵函內?⊥??芷甇斤?鞈?
                 ERROR l_buf
                 CANCEL DELETE
              END IF
              IF l_lock_sw = "Y" THEN 
                 CALL cl_err("", -263, 1) 
                 CANCEL DELETE 
              END IF 
              DELETE FROM tc_pcb_file 
               WHERE tc_pcb01 = g_pcb_t.tc_pcb01 AND tc_pcb02 = g_pcb_t.tc_pcb02 AND tc_pcb03 = g_pcb_t.tc_pcb03 AND tc_pcb04 = g_pcb_t.tc_pcb04
              IF SQLCA.sqlcode THEN
#                CALL cl_err(g_pcb_t.imd01,SQLCA.sqlcode,0)  #No.FUN-660156 MARK
                 CALL cl_err3("del","tc_pcb_file",g_pcb_t.tc_pcb01,"",SQLCA.sqlcode,"","",1)  #No:FUN-660156
                 ROLLBACK WORK
                 CANCEL DELETE
              END IF
             
              LET g_rec_b=g_rec_b-1
              DISPLAY g_rec_b TO FORMONLY.cn2  
              COMMIT WORK
           END IF
        #AFTER DELETE
        #  LET l_n = ARR_COUNT()
        #  INITIALIZE g_pcb[l_n+1].* TO NULL
        #  LET l_jump = 1
        ON ROW CHANGE
           IF INT_FLAG THEN                 #900423
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              LET g_pcb[l_ac].* = g_pcb_t.*
              CLOSE i200_bcl
              ROLLBACK WORK
              EXIT INPUT
           END IF
           IF l_lock_sw = 'Y' THEN
              CALL cl_err(g_pcb[l_ac].tc_pcb01,-263,1)
              LET g_pcb[l_ac].* = g_pcb_t.*
           ELSE
              UPDATE tc_pcb_file 
                   SET tc_pcb01   = g_pcb[l_ac].tc_pcb01,
                       tc_pcb02   = g_pcb[l_ac].tc_pcb02,
                       tc_pcb03   = g_pcb[l_ac].tc_pcb03,
                       tc_pcb04   = g_pcb[l_ac].tc_pcb04,                     
                       tc_pcbacti = g_pcb[l_ac].tc_pcbacti,
                       tc_pcbuser = g_user,
                       tc_pcbdate = g_today
               WHERE tc_pcb01 = g_pcb_t.tc_pcb01 AND tc_pcb02 = g_pcb_t.tc_pcb02
AND  tc_pcb03 = g_pcb_t.tc_pcb03 AND tc_pcb04 = g_pcb_t.tc_pcb04
              IF SQLCA.sqlcode THEN
#                 CALL cl_err(g_pcb[l_ac].tc_pcb01,SQLCA.sqlcode,0) #No.FUN-660156 MARK
                  CALL cl_err3("upd","tc_pcb_file",g_pcb_t.tc_pcb01,"",SQLCA.sqlcode,"","",1)  #No:FUN-660156
                  LET g_pcb[l_ac].* = g_pcb_t.*
                  ROLLBACK WORK
              ELSE
                  MESSAGE 'UPDATE O.K'
                  COMMIT WORK
      
              END IF
           END IF
        AFTER ROW
           LET l_ac = ARR_CURR()
           IF INT_FLAG THEN                 #900423
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              IF p_cmd='u' THEN
                 LET g_pcb[l_ac].* = g_pcb_t.*
              END IF
              CLOSE i200_bcl
              ROLLBACK WORK
              EXIT INPUT
           END IF
           LET l_ac_t = l_ac
           CLOSE i200_bcl
           COMMIT WORK
        AFTER INSERT
           IF INT_FLAG THEN                 #900423
              CALL cl_err('',9001,0)
              LET INT_FLAG = 0
              CLOSE i200_bcl
              CANCEL INSERT
           END IF
           INSERT INTO tc_pcb_file(tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti,tc_pcbuser,tc_pcbdate) #FUN-670032 #MOD-101220
             VALUES(g_pcb[l_ac].tc_pcb01,g_pcb[l_ac].tc_pcb02,g_pcb[l_ac].tc_pcb03,
                    g_pcb[l_ac].tc_pcb04,g_pcb[l_ac].tc_pcbacti,g_user,g_today) #MOD-101220
           IF SQLCA.sqlcode THEN
              CALL cl_err3("ins","tc_pcb_file",g_pcb[l_ac].tc_pcb01,"",SQLCA.sqlcode,"","",1)  #No:FUN-660156
              CANCEL INSERT
           ELSE
              MESSAGE 'INSERT O.K'
              #CALL i200_ins()
              LET g_rec_b = g_rec_b + 1
              DISPLAY g_rec_b TO FORMONLY.cn2  
           END IF
        ON ACTION CONTROLO                        #瘝輻?€??雿?
           IF INFIELD(tc_pcb01) AND l_ac > 1 THEN
              LET g_pcb[l_ac].* = g_pcb[l_ac-1].*
              NEXT FIELD tc_pcb01
           END IF
            
        ON ACTION CONTROLZ
           CALL cl_show_req_fields()
        ON ACTION CONTROLG
           CALL cl_cmdask()
        ON ACTION CONTROLF
           CALL cl_set_focus_form(ui.Interface.getRootNode()) RETURNING g_fld_name,g_frm_name #Add on 040913
           CALL cl_fldhelp(g_frm_name,g_fld_name,g_lang) #Add on 040913
          
        ON IDLE g_idle_seconds
           CALL cl_on_idle()
           CONTINUE INPUT
 
        ON ACTION about         #MOD-4C0121
           CALL cl_about()      #MOD-4C0121
 
        ON ACTION help          #MOD-4C0121
           CALL cl_show_help()  #MOD-4C0121
 
    END INPUT
    CLOSE i200_bcl
    COMMIT WORK
    
     OPTIONS
        INSERT KEY F1,
        DELETE KEY F2
END FUNCTION
FUNCTION i200_b_askkey()
    CLEAR FORM
    CALL g_pcb.clear()
    CONSTRUCT g_wc2 ON tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti  #FUN-670032 #MOD-101220
            FROM s_pcb[1].tc_pcb01,s_pcb[1].tc_pcb02,
                 s_pcb[1].tc_pcb03,s_pcb[1].tc_pcb04,
 s_pcb[1].tc_pcbacti   #FUN-670032 #MOD-101220
              #No:FUN-580031 --start--     HCN
              BEFORE CONSTRUCT
                 CALL cl_qbe_init()
              #No:FUN-580031 --end--       HCN
    
       ON IDLE g_idle_seconds
          CALL cl_on_idle()
          CONTINUE CONSTRUCT
 
      ON ACTION about         #MOD-4C0121
         CALL cl_about()      #MOD-4C0121
 
      ON ACTION help          #MOD-4C0121
         CALL cl_show_help()  #MOD-4C0121
 
      ON ACTION controlg      #MOD-4C0121
         CALL cl_cmdask()     #MOD-4C0121
 
    
#No:FUN-580031 --start--     HCN
                 ON ACTION qbe_select
             CALL cl_qbe_select() 
                 ON ACTION qbe_save
   CALL cl_qbe_save()
#No:FUN-580031 --end--       HCN
    END CONSTRUCT
#No.TQC-710076 -- begin --
#    IF INT_FLAG THEN LET INT_FLAG = 0 RETURN END IF
   IF INT_FLAG THEN
      LET INT_FLAG = 0
      LET g_wc2 = NULL
      RETURN
   END IF
#No.TQC-710076 -- end --
    CALL i200_b_fill(g_wc2)
END FUNCTION
FUNCTION i200_b_fill(p_wc2)              #BODY FILL UP
DEFINE
    p_wc2           LIKE type_file.chr1000 #No.FUN-690026 VARCHAR(200)
    LET g_sql = " SELECT tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti ",  #FUN-670032
                " FROM tc_pcb_file",
                " WHERE ", p_wc2 CLIPPED,                     #?株澈
                " ORDER BY 1"
    
    PREPARE i200_pb FROM g_sql
    DECLARE pcb_curs CURSOR FOR i200_pb
    CALL g_pcb.clear()
    
    LET g_cnt = 1
    
    MESSAGE "Searching!"
    
    FOREACH pcb_curs INTO g_pcb[g_cnt].*   #?株澈 ARRAY 憛怠?
       IF STATUS THEN CALL cl_err('foreach:',STATUS,1) EXIT FOREACH END IF
       #CALL i200_get_gem02(g_pcb[g_cnt].imd16)
       #   RETURNING g_pcb[g_cnt].gem02  #FUN-670032
       LET g_cnt = g_cnt + 1
       IF g_cnt > g_max_rec THEN
          CALL cl_err( '', 9035, 0 )
          EXIT FOREACH
       END IF
    END FOREACH
    MESSAGE ""
    CALL g_pcb.deleteElement(g_cnt)
    LET g_rec_b = g_cnt-1
    DISPLAY g_rec_b TO FORMONLY.cn2  
    LET g_cnt = 0
END FUNCTION
FUNCTION i200_bp(p_ud)
   DEFINE   p_ud   LIKE type_file.chr1    #No.FUN-690026 VARCHAR(1)
   IF p_ud <> "G" OR g_action_choice = "detail" THEN
      RETURN
   END IF
   LET g_action_choice = " "
   CALL cl_set_act_visible("accept,cancel", FALSE)
   DISPLAY ARRAY g_pcb TO s_pcb.* ATTRIBUTE(COUNT=g_rec_b)
      #FUN-680048
      BEFORE DISPLAY
        #IF g_sma.sma901!='Y' THEN
        #   CALL cl_set_act_visible("aps_related_data",FALSE)
        #END IF
        IF g_flag = 'Y' THEN
           CALL fgl_set_arr_curr(l_ac)
           LET g_flag = 'N'
        END IF
      #FUN-680048
      BEFORE ROW
         LET l_ac = ARR_CURR()
         CALL cl_show_fld_cont()                   #No:FUN-550037 hmf
      ON ACTION query
         LET g_action_choice="query"
         EXIT DISPLAY
      ON ACTION detail
         LET g_action_choice="detail"
         LET l_ac = 1
         EXIT DISPLAY
      ON ACTION output
         LET g_action_choice="output"
         EXIT DISPLAY
      #FUN-670032...............begin
      ON ACTION account
         LET g_action_choice="account"
         EXIT DISPLAY
      #FUN-670032...............end
   
      ON ACTION help
         LET g_action_choice="help"
         EXIT DISPLAY
      ON ACTION locale
         CALL cl_dynamic_locale()
          CALL cl_show_fld_cont()                   #No:FUN-550037 hmf
      ON ACTION exit
         LET g_action_choice="exit"
         EXIT DISPLAY
      ON ACTION controlg
         LET g_action_choice="controlg"
         EXIT DISPLAY
      ON ACTION accept
         LET g_action_choice="detail"
         LET l_ac = ARR_CURR()
         EXIT DISPLAY
      ON ACTION cancel
         LET INT_FLAG=FALSE  #MOD-570244 mars
         LET g_action_choice="exit"
         EXIT DISPLAY
      ON ACTION exporttoexcel #FUN-4B0002
         LET g_action_choice = 'exporttoexcel'
         EXIT DISPLAY
      ON IDLE g_idle_seconds
         CALL cl_on_idle()
         CONTINUE DISPLAY
 
      ON ACTION about         #MOD-4C0121
         CALL cl_about()      #MOD-4C0121
      # No:FUN-530067 --start--
      AFTER DISPLAY
         CONTINUE DISPLAY
      # No:FUN-530067 ---end---
 
      #FUN-680048
     # ON ACTION aps_related_data
     #    LET g_action_choice="aps_related_data"
     #    LET g_flag = 'Y'
     #    EXIT DISPLAY
      #FUN-680048
   END DISPLAY
   CALL cl_set_act_visible("accept,cancel", TRUE)
END FUNCTION
FUNCTION i200_out()
    DEFINE
        sr              RECORD
                        tc_pcb01   LIKE  tc_pcb_file.tc_pcb01,
                        tc_pcb02   LIKE  tc_pcb_file.tc_pcb02,
                        tc_pcb03   LIKE  tc_pcb_file.tc_pcb03,
                        tc_pcb04   LIKE  tc_pcb_file.tc_pcb04,
                        tc_pcbacti  LIKE tc_pcb_file.tc_pcbacti
                        END RECORD,
        l_i             LIKE type_file.num5,          #No.FUN-690026 SMALLINT
        l_name          LIKE type_file.chr20,         # External(Disk) file name  #No.FUN-690026 VARCHAR(20)
        l_za05          LIKE za_file.za05,            #No.FUN-690026 VARCHAR(40)
        l_chr           LIKE type_file.chr1           #No.FUN-690026 VARCHAR(1)
  DEFINE    l_cmd       LIKE type_file.chr1000        #NO.FUN-810099
    IF cl_null(g_wc2) THEN
       CALL cl_err("","9057",0)
       RETURN
    END IF
    LET l_cmd = ' p_query "cimi200" "',g_wc2 CLIPPED,'"'                                   
    CALL cl_cmdrun(l_cmd)                                                                  
    RETURN
END FUNCTION
#No.FUN-570110 --start--                                                                                                            
FUNCTION i200_set_entry(p_cmd)                                                                                                      
  DEFINE p_cmd   LIKE type_file.chr1                                                                                                               
   IF p_cmd = 'a' AND ( NOT g_before_input_done ) THEN                                                                              
     CALL cl_set_comp_entry("tc_pcb01",TRUE)                                                                                           
   END IF                                                                                                                           
END FUNCTION                                                                                                                        
                                                                                                                                    
FUNCTION i200_set_no_entry(p_cmd)                                                                                                   
  DEFINE p_cmd   LIKE type_file.chr1                                                                                                               
   IF p_cmd = 'u' AND ( NOT g_before_input_done ) AND g_chkey='N' THEN                                                              
     CALL cl_set_comp_entry("tc_pcb01",FALSE)                                                                                          
   END IF                                                                                                                           
END FUNCTION                                                                                                                        
FUNCTION i200_acc()
   LET g_account=TRUE
   CALL i200_b()
   LET g_account=FALSE
END FUNCTION
FUNCTION i200_set_entry_b()
   CASE g_account
      WHEN TRUE
         CALL cl_set_comp_entry("tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti",FALSE)
         #CALL cl_set_comp_entry("imd16",TRUE)
      OTHERWISE
         CALL cl_set_comp_entry("tc_pcb01,tc_pcb02,tc_pcb03,tc_pcb04,tc_pcbacti",TRUE)
        # CALL cl_set_comp_entry("imd16",FALSE)
   END CASE
END FUNCTION

jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
<?xml version="1.0" encoding="UTF-8" ?>
<Form width="165" lstrtoalltitle="false" lstrtoallitem="false" database_name="ds" CHECKSUM="14427" spacing="normal" posX="0" percommentheader="" height="18" posY="0" percommentinstruction="" percommentattribute="" lstrtoallcomment="false" percommentschema="" name="cimi200" defaultspacing="true" text="cimi200" gstVersion="11401" percommentlayout="TABLE
VBOX
PAGE
FOLDER
GRID
VBOX
LAYOUT
" lstrtoalltext="false" >
 <VBox tag="" posX="0" posY="0" hidden="" style="" name="" >
  <PageControl width="162" posX="0" posY="0" height="15" lstrcomment="false" name="pc555" >
   <Page lstrtext="false" hidden="--------" imagetype="Image as URL" name="page01" fontPitch="default" text="Main" >
    <VBox width="160" tag="" posX="0" posY="0" height="12" hidden="" style="" name="" >
     <Table width="159" wantFixedPageSize="--------" unhidableColumns="--------" posX="0" posY="0" height="12" lstrcomment="false" unmovableColumns="--------" unsizableColumns="--------" hidden="--------" totalRows="10" name="s_pcb" fontPitch="default" tabName="s_pcb" unsortableColumns="--------" tabName1="s_pcb" >
      <TableColumn width="10" lstrtext="false" sqlDBName="ds" height="1" colName="tc_pcb01" unsortable="--------" fieldId="0" sqlTabName="tc_pcb_file" tabIndex="1" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_pcb01" fieldtype="TABLE_COLUMN" text="Item Type" >
       <Edit width="10" case="NONE" comment="Assign" invisible="--------" notNull="true" height="1" autoNext="--------" lstrcomment="false" verify="--------" hidden="--------" sizePolicy="initial" zeroFill="--------" reverse="--------" lstrtitle="false" data_type="VARCHAR" century="R" color="black" fontPitch="default" scroll="--------" noEntry="--------" required="true" />
      </TableColumn>
      <TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_pcb02" unsortable="--------" fieldId="1" sqlTabName="tc_pcb_file" tabIndex="2" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_pcb02" fieldtype="TABLE_COLUMN" text="Item No" >
       <Edit width="20" case="NONE" invisible="--------" notNull="true" height="1" autoNext="--------" lstrcomment="false" verify="--------" hidden="--------" sizePolicy="initial" zeroFill="--------" reverse="--------" lstrtitle="false" data_type="VARCHAR" century="R" color="black" fontPitch="default" scroll="--------" noEntry="--------" required="true" />
      </TableColumn>
            <TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_pcb03" unsortable="--------" fieldId="2" sqlTabName="tc_pcb_file" tabIndex="3" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_pcb03" fieldtype="TABLE_COLUMN" text="Price" >
       <Edit width="20" case="NONE" invisible="--------" notNull="true" height="1" autoNext="--------" lstrcomment="false" verify="--------" hidden="--------" sizePolicy="initial" zeroFill="--------" reverse="--------" lstrtitle="false" data_type="DECIMAL" century="R" color="black" fontPitch="default" scroll="--------" noEntry="--------" required="true" />
      </TableColumn>
                  <TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_pcb04" unsortable="--------" fieldId="3" sqlTabName="tc_pcb_file" tabIndex="3" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_pcb04" fieldtype="TABLE_COLUMN" text="Modify Note" >
       <Edit width="20" case="NONE" invisible="--------" notNull="true" height="1" autoNext="--------" lstrcomment="false" verify="--------" hidden="--------" sizePolicy="initial" zeroFill="--------" reverse="--------" lstrtitle="false" data_type="VARCHAR" century="R" color="black" fontPitch="default" scroll="--------" noEntry="--------" required="true" />
      </TableColumn>
    
      <TableColumn width="7" lstrtext="false" sqlDBName="ds" height="1" colName="tc_pcbacti" unsortable="--------" fieldId="4" sqlTabName="tc_pcb_file" tabIndex="12" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_pcbacti" fieldtype="TABLE_COLUMN" text="Valid" >
       <CheckBox width="7" lstrtext="false" notNull="true" height="1" lstrcomment="false" hidden="--------" sizePolicy="initial" lstrtitle="false" data_type="VARCHAR" fontPitch="default" valueUnchecked="N" noEntry="--------" required="true" text="" valueChecked="Y" />
      </TableColumn>
     </Table>
    </VBox>
   </Page>
  </PageControl>
  <Grid width="162" posX="0" posY="15" height="1" lstrcomment="false" hidden="--------" name="gr3040" fontPitch="default" scroll="false" >
   <HLine width="10" gridWidth="10" posX="1" posY="0" height="1" name="hl889" />
   <Text width="4" lstrtext="false" gridWidth="4" posX="11" posY="0" height="1" sizePolicy="initial" name="text10586" text="Rows" />
   <FormField colName="cn2" fieldId="12" sqlTabName="formonly" name="formonly.cn2" fieldtype="FORM_ONLY" >
    <Edit width="6" case="NONE" invisible="--------" gridWidth="6" notNull="--------" posX="17" formfieldname="formfield0" posY="0" height="1" autoNext="--------" lstrcomment="false" verify="--------" hidden="--------" sizePolicy="initial" tabIndex="13" zeroFill="--------" reverse="--------" lstrtitle="false" data_type="SMALLINT" name="cn2" century="R" color="black" fontPitch="default" scroll="--------" required="--------" noEntry="true" />
   </FormField>
   <HLine width="10" gridWidth="10" posX="25" posY="0" height="1" name="hl890" />
  </Grid>
 </VBox>
 <RecordView SRType="default" name="s_pcb" fromTable="true" tableKey="tb368" >
  <Link colName="tc_pcb_file.tc_pcb01"   fromTable="true" colKey="Col3298" />
  <Link colName="tc_pcb_file.tc_pcb02"   fromTable="true" colKey="Col3299" />
  <Link colName="tc_pcb_file.tc_pcb03"   fromTable="true" colKey="Col3300" />
  <Link colName="tc_pcb_file.tc_pcb04"   fromTable="true" colKey="Col3301" />
  <Link colName="tc_pcb_file.tc_pcbacti"  fromTable="true" colKey="Col3302" />
 </RecordView>
</Form>

jeffreyhu 發表在 痞客邦 留言(0) 人氣()



 

jeffreyhu 發表在 痞客邦 留言(0) 人氣()

以簡易的企業流程為例做探討:
業務端(接單中心) --> 採購 / MRP物料供需 (呆料處理) --> 製造生產派工  --> 成品驗收入庫 --> 出貨 --> 應收應付 --> 票據 沖帳 作業 -->切傳票拋總帳 -->企業經營合併報表中心 
 1.業務端 : 報價作業 銷售訂單作業 多角貿易拋單作業 出貨 應收立帳
 2.請採購 / 物控 : 集團最佳供應商與價格分析(核價議價) / MRP 物料供需(配合生產排程/機器稼動/直接人工) / 呆料處理 (庫齡分析)    

jeffreyhu 發表在 痞客邦 留言(0) 人氣()


 Business intelligence 客製化企業集團戰情中心
 通用於業界代表之ERP系統 包括( 鼎新 TIPTOP / 甲骨文 Oracle ERP / SAP ERP )
本人至今在BI商業智慧領域(應用開發導入)已有近五年的經驗 提供您優化的解決方案

重點在於開發與建置系統之費用 : 完全免費

經驗分享:



隨著各大企業陸續導入集團全球化運籌管理中心,著眼在開發與整合企業資訊系統 (ERP/WorkFlow/SCM/CRM/EIP/EDI)Global Data Center 利用許多軟件技術配合應用開發工具達成異質數據庫同步整合,提供 Realtime 的決策分析數據與異常警示分析 Drill down / Rollup 由上而下,由小而大 的上下垂直整合平台,提供經營管理決策的最佳解決方案

BI 的價值在於精確分析有效的數據(數字化/圖形化) 並應著重於提供未來(也可說預測)資訊,才能準確有效定出如 (商品定價策略 / 最佳成本CD / 供應商協同 / 利潤分析)的企業經營決策



開發建置方面,經由 ETL / OLAP 過程轉化為 企業戰情中心 (資料倉儲系統) 

-- 實務上應為導入E-LT為更加快速有效

 

WorkFlow 導入方面 一般普遍使用 RACI 模型定義來做標準導入方式 

-- 實務上應用則可隨著企業組織來做優化修正... 
business intelligence
business intelligence business intelligence

jeffreyhu 發表在 痞客邦 留言(1) 人氣()


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="black" fontSize="12"

     verticalAlign="middle" horizontalAlign="center" color="#000506" creationComplete="init()">

    

    <mx:RemoteObject id="lo" destination="ObjectDAO" result="handleResult(event)" fault="handleFault(event)">

        <mx:channelSet>

            <mx:ChannelSet>

                <mx:channels>

                    <mx:AMFChannel 

                        uri="http://127.0.0.1:8400/spring/messagebroker/amf"/>

                </mx:channels>

            </mx:ChannelSet>

        </mx:channelSet>

    </mx:RemoteObject>

    <mx:RemoteObject id="remoteObjectUpload" destination="fileUploadService"   fault="Alert.show(event.fault.message);">

        <mx:channelSet>

            <mx:ChannelSet>

                <mx:channels>

                    <mx:AMFChannel 

                        uri="http://127.0.0.1:8400/spring/messagebroker/amf"/>

                </mx:channels>

            </mx:ChannelSet>

        </mx:channelSet>

    </mx:RemoteObject>

    

    <mx:Script>

        <![CDATA[

            import mx.rpc.events.ResultEvent;

            import mx.rpc.events.FaultEvent;

            import mx.controls.Alert;

            import mx.collections.ArrayCollection;

            import mx.utils.ObjectProxy;

            import mx.utils.ArrayUtil;

            

           

            [Bindable]public var sql:String;

            [Bindable]public var dp:ArrayCollection = new ArrayCollection();

   [Bindable]

private var selectedFiles:Array = new Array();


private var selectedFileReferences:Array = new Array();


private var fileRefList:FileReferenceList;


private function browseFiles(event:MouseEvent):void

{

fileRefList = new FileReferenceList();

fileRefList.addEventListener(Event.SELECT, selectFiles);

fileRefList.browse();



}


private function selectFiles(e:Event):void

{

for each(var fileRef : FileReference in fileRefList.fileList)

{

selectedFiles.push(fileRef.name);

selectedFileReferences.push(fileRef);

fileRef.load();

}

dataGrid.dataProvider = selectedFiles;

}


private function uploadFiles(e:MouseEvent):void

{

for each(var fileRef : FileReference in selectedFileReferences)

{

remoteObjectUpload.doUpload(fileRef.name, fileRef.data);

}

}


            private function init():void{

            }



            private function handleResult(event:ResultEvent):void{

                dp = ArrayCollection(event.result);

     trace(event.result);

                trace("回傳資料");

            }

    private function handleFault(event:FaultEvent):void

    {

                Alert.show(event.fault.message, "錯誤警示");

            }

    

      private function serviceDAO():void

    {

             sql =" CALL DS.update_items_status('DS01') ";

             lo.callProcBySQL(sql);


var batchSQL:Array = new Array();


batchSQL[0] = " delete from xx.testdata  where groupname='1' ";

             batchSQL[1] = " update xx.testdata set member1 = '測試更新1' where groupname='1' ";

             batchSQL[2] = " update xx.testdata set member1 = '測試更新2' where groupname='2' ";

             batchSQL[3] = " update xx.testdata set member1 = '測試更新3' where groupname='3'";

            

             lo.updateBatch(batchSQL);

            

            

            }

        ]]>

    </mx:Script>

    <mx:Panel height="364" width="592" title="測試視窗" horizontalAlign="center" verticalAlign="middle">

        <mx:VBox>

            <mx:ApplicationControlBar dock="true" width="551">

                <mx:Button label="CALL !!" click="serviceDAO()"/>

            </mx:ApplicationControlBar>

            <mx:DataGrid height="255" width="551" dataProvider="{dp}" id="dg">

                <mx:columns>

                    <mx:DataGridColumn headerText="資料成員一" dataField="MEMBER1"/>

                    <mx:DataGridColumn headerText="資料成員二" dataField="MEMBER2"/>

                    <mx:DataGridColumn headerText="資料成員三" dataField="MEMBER3"/>

                    <mx:DataGridColumn headerText="資料成員四" dataField="MEMBER4"/>

                    <mx:DataGridColumn headerText="資料成員五" dataField="MEMBER5"/>

                </mx:columns>

            </mx:DataGrid>

        </mx:VBox>

         <mx:Button label="Browse Files" click="browseFiles(event)" />

<mx:DataGrid id="dataGrid" width="200">

<mx:columns>

<mx:DataGridColumn headerText="Selected files"/>

</mx:columns>

</mx:DataGrid>

<mx:Button label="Upload Files" click="uploadFiles(event)"/>

    </mx:Panel>

</mx:Application>

jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
 
ObjectDAOImpl.java 
 

package com.vo;

import java.io.ByteArrayInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.List;  

import org.springframework.dao.DataAccessException;

import org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCallback; 

import org.springframework.jdbc.support.lob.LobCreator; 

import org.springframework.jdbc.support.lob.LobHandler; 

import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class ObjectDAOImpl extends JdbcDaoSupport  {


private LobHandler lobHandler;


public LobHandler getLobHandler() {

   return lobHandler;

}


public void setLobHandler(LobHandler lobHandler ) {

this.lobHandler = lobHandler;

}

@SuppressWarnings("unchecked")

    public boolean deleteBySQL(String sql) {

        //Display SQL command

        System.out.println("正在執行 刪除SQL命令...start");  

        System.out.println(sql); 

        try

           {

        int i = this.getJdbcTemplate().update(sql); 

        System.out.println("影響記錄筆數:"+i); 

           } 

           catch (Exception e) 

        {

           e.printStackTrace();

           System.out.println("執行 刪除SQL命令...failed"); 

           return false;

     }

            System.out.println("執行 刪除SQL命令...done"); 

            return true;

    }

    

    @SuppressWarnings("unchecked")

    public boolean  updateBySQL(String sql){    

           //Display SQL command

           System.out.println("正在執行 更新SQL命令...start"); 

        System.out.println(sql); 

        try

           {

        int i = this.getJdbcTemplate().update(sql); 

        System.out.println("影響記錄筆數:"+i); 

           } 

           catch (Exception e) 

        {

           e.printStackTrace();

           System.out.println("執行 更新SQL命令...failed"); 

           return false;

     }

            System.out.println("執行 更新SQL命令...done"); 

            return true;

      }

    

    @SuppressWarnings("unchecked")

    public boolean insertBySQL(String sql)

    {

        //Display SQL command

        System.out.println("正在執行 新增SQL命令...start"); 

        System.out.println(sql); 

        try

           {

        int i = this.getJdbcTemplate().update(sql); 

        System.out.println("影響記錄筆數:"+i); 

           } 

           catch (Exception e) 

        {

           e.printStackTrace();

           System.out.println("執行 新增SQL命令...failed"); 

           return false;

     }

            System.out.println("執行 新增SQL命令...done"); 

            return true;

   }

    

@SuppressWarnings("unchecked")

public List<?> getAll(String sql){

        //Display SQL command

System.out.println("正在執行 查詢SQL命令...start");

System.out.println(sql);

        //Jdbc Template

System.out.println("執行 查詢SQL命令...done");

        return this.getJdbcTemplate().queryForList(sql);

    }


/** 

  * 事務處理,批量更新String[] String是SQL語句 

  */  

public boolean updateBatch(final List<String> sqlList){

 //Display SQL command

   System.out.println("正在執行 批次更新SQL命令...start");

   try

       {

        for (String sql:sqlList) {

         this.getJdbcTemplate().update(sql);

         System.out.println(sql);

           }

       } 

       catch (Exception e) 

   {

       e.printStackTrace();

       System.out.println("執行 批次更新SQL命令...failed");

       return false;

}

        System.out.println("執行 批次更新SQL命令...done");

        return true;

}

@SuppressWarnings("unchecked")

    public boolean  callProcBySQL(String sql) {

         //Display SQL command

        System.out.println("正在執行 內儲程序 CALL PROCEDURE...start"); 

         System.out.println(sql); 

         try

         {

        this.getJdbcTemplate().execute(sql);

         

     } 

         catch (Exception e) 

     {

         e.printStackTrace();

         System.out.println("執行 內儲程序 CALL PROCEDURE...failed"); 

         return false;

  }

        System.out.println("執行 內儲程序 CALL PROCEDURE...done"); 

  return true;

    }


@SuppressWarnings("unchecked")

    public boolean  updateLobBySQL(String sql,String fileName,final byte[] data) throws IOException {

         //Display SQL command

try{

   final InputStream blobIs = new ByteArrayInputStream(data);

        System.out.println("正在執行 新增/更新 BLOB/CLOB 欄位...start"); 

         System.out.println(sql); 

        

        this.getJdbcTemplate().execute(sql, new AbstractLobCreatingPreparedStatementCallback(this.lobHandler)

        { 

       protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException

       {

      lobCreator.setBlobAsBinaryStream(ps, 1, blobIs, (int) data.length);            

       } 

        });

         

          blobIs.close();

          

  }

  catch (Exception e) 

    {

        e.printStackTrace();

        System.out.println("執行 新增/更新 BLOB/CLOB 欄位完成...failed"); 

        return false;

  }

  System.out.println("執行 新增/更新 BLOB/CLOB 欄位完成...done"); 

        return true;

    }

}


jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
applicationContext.xml
 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" 

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

       xmlns:flex="http://www.springframework.org/schema/flex" 

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xmlns:p="http://www.springframework.org/schema/p" 

       xmlns:aop="http://www.springframework.org/schema/aop"

       xmlns:jee="http://www.springframework.org/schema/jee"

       xmlns:task="http://www.springframework.org/schema/task"       

       xsi:schemaLocation=" 

   http://www.springframework.org/schema/beans 

   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 

   http://www.springframework.org/schema/flex 

   http://www.springframework.org/schema/flex/spring-flex-1.0.xsd

   http://www.springframework.org/schema/context

   http://www.springframework.org/schema/context/spring-context-3.0.xsd

   http://www.springframework.org/schema/task 

   http://www.springframework.org/schema/task/spring-task-3.0.xsd

   http://www.springframework.org/schema/aop 

   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

   http://www.springframework.org/schema/tx 

   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

     http://www.springframework.org/schema/jee

       http://www.springframework.org/schema/jee/spring-jee-3.0.xsd

   ">

<!-- dataSource for Oracle JDBC 驅動 -->  

<bean id="dataSource" destroy-method="close">

<!-- 設定 JDBC DB DRIVER 驅動介面 --> 

        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

        <!-- 設定 JDBC DB URL 遠端主機連接路徑  --> 

        <property name="url" value="jdbc:oracle:thin:@192.168.2.21:1521:topprod"/>

        <!-- 設定 DB LOGIN USERNAME  --> 

        <property name="username" value="ds"/>

        <!-- 設定 DB LOGIN PASSWORD  --> 

        <property name="password" value="ds"/>

        <!-- DBCP 連接池啟動時的初始值 -->  

        <property name="initialSize" value="1"/>  

        <!-- DBCP 連接池的最大值 -->  

        <property name="maxActive" value="100"/>  

        <!--  最小空閒值.當空閒的連接數少於閥值時,連接池就會預申請去一些連接,以免來不及申請 -->  

        <property name="minIdle" value="1"/>  

        <!-- 最大空閒值.當經過一個高峰時間後,連接池可以慢慢將已經用不到的連接慢慢釋放一部分,一直減少到maxIdle為止 -->  

        <property name="maxIdle" value="10"/>  

</bean>

<!-- 交易管理模式 注入   JDBC --> 

<bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager">   

<property name = "dataSource" ref="dataSource"/>   

</bean>   

<!-- 交易管理模式 注入   JDBC --> 

<bean id="transactionTemplate"> 

    <property name="transactionManager" ref="transactionManager"/>

</bean> 

<!-- 配置一個JdbcTemplate實例,並將這個「共享的」,「安全的」實例注入到不同的DAO類中去 -->  

<bean id = "jdbcTemplate"  class = "org.springframework.jdbc.core.JdbcTemplate">   

     <property name = "dataSource" ref="dataSource"/>   

</bean>

<!-- Flex Message Broker -->

<flex:message-broker services-config-path="/WEB-INF/flex/services-config.xml"/>



<bean/>



<bean id="_messageBroker " />   



<bean> 

<property name="mappings" value="/messagebroker/*=_messageBroker" /> 

</bean>

<!-- BLOB/CLOB 操作類  注入   JDBC --> 

<bean id="defaultLobHandler" lazy-init="true" />

   

<context:annotation-config />

<context:component-scan  base-package="com" />

<!--  

<tx:annotation-driven transaction-manager="transactionManager" /> 

-->

  

<bean id="DAOTarget">

  <property name="dataSource" ref="dataSource"/>

   <property name="lobHandler" ref="defaultLobHandler" />   

</bean>

<bean id="ObjectDAO">

    <property name="transactionManager" ref="transactionManager"/>

    <property name="target" ref="DAOTarget"/>

    <property name="proxyTargetClass" value="true"/> 

    <property name="transactionAttributes">    

      <props>

        <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>

        <prop key="get*">PROPAGATION_SUPPORTS</prop>

      </props>

    </property>

      <flex:remoting-destination/>

  </bean>

  

</beans>


jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
 
crossdomain.xml
 
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 

<cross-domain-policy>

<site-control permitted-cross-domain-policies="all" />

<allow-access-from domain="*" />

<allow-http-request-headers-from domain="*" headers="*" />

</cross-domain-policy>



jeffreyhu 發表在 痞客邦 留言(0) 人氣()

 
web.xml
 
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->

    <servlet>

        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/applicationContext.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <!-- Map all /messagbroker requests to the DispatcherServlet for handling -->

    <servlet-mapping>

        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

        <url-pattern>/messagebroker/*</url-pattern>

    </servlet-mapping>   

</web-app>

jeffreyhu 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。