- May 05 Thu 2011 16:44
-
TIPTOP GP 5.x 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [4GL檔] - Part 4
FUNCTION i901_z()
IF g_votea.tc_votea01 IS NULL THEN RETURN END IF
SELECT * INTO g_votea.* FROM tc_votea_file WHERE tc_votea01=g_votea.tc_votea01
IF g_votea.tc_voteaconf='X' THEN CALL cl_err(g_votea.tc_voteaconf,'9024',0) RETURN END IF
IF g_votea.tc_voteaconf='N' THEN RETURN END IF
IF NOT cl_confirm('axm-109') THEN RETURN END IF
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
#--Add exception check during OPEN CURSOR
IF STATUS THEN
CALL cl_err("OPEN i255_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.SQLCODE THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.SQLCODE,0) #資料被他人LOCK
ROLLBACK WORK
RETURN
END IF
LET g_success = 'Y'
LET g_votea.tc_votea03 = 'U'
UPDATE tc_votea_file SET tc_voteaconf='N',tc_votea03 = g_votea.tc_votea03
WHERE tc_votea01 = g_votea.tc_votea01
IF SQLCA.sqlcode OR SQLCA.sqlerrd[3]=0 THEN
CALL cl_err3("upd","tc_votea_file",g_votea.tc_votea01,"","apm-266","","upd tc_votea_file",1) #No.FUN-660129
LET g_success='N'
END IF
IF g_success = 'Y' THEN
LET g_votea.tc_voteaconf='N'
COMMIT WORK
DISPLAY BY NAME g_votea.tc_voteaconf
DISPLAY BY NAME g_votea.tc_votea03
ELSE
LET g_votea.tc_voteaconf='Y'
DISPLAY BY NAME g_votea.tc_voteaconf
DISPLAY BY NAME g_votea.tc_votea03
ROLLBACK WORK
END IF
IF g_votea.tc_voteaconf='X' THEN LET g_chr='Y' ELSE LET g_chr='N' END IF #No.MOD-480339
IF g_votea.tc_votea03='R' THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"","",g_chr,"") #No.MOD-480339
### END No.MOD-4A0344
END FUNCTION
FUNCTION i901_x()
IF s_shut(0) THEN
RETURN
END IF
IF g_votea.tc_votea01 IS NULL THEN
CALL cl_err("",-400,0)
RETURN
END IF
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.sqlcode THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0) #資料被他人LOCK
ROLLBACK WORK
RETURN
END IF
LET g_success = 'Y'
CALL i901_show()
IF cl_exp(0,0,g_votea.tc_voteaacti) THEN #確認一下
LET g_chr=g_votea.tc_voteaacti
IF g_votea.tc_voteaacti = 'Y' THEN
LET g_votea.tc_voteaacti = 'N'
LET g_votea.tc_voteaconf='X'
ELSE
LET g_votea.tc_voteaacti = 'Y'
LET g_votea.tc_voteaconf='N'
END IF
UPDATE tc_votea_file SET tc_voteaacti = g_votea.tc_voteaacti,tc_voteamodu=g_user,tc_voteadate=g_today,tc_voteaconf = g_votea.tc_voteaconf
WHERE tc_votea01 = g_votea.tc_votea01
IF SQLCA.sqlcode OR SQLCA.SQLERRD[3]=0 THEN
CALL cl_err3("upd","t_votea_file",g_votea.tc_votea01,"",SQLCA.sqlcode,"","",1) #No.FUN-660129
LET g_votea.tc_voteaacti = g_chr
LET g_success='N'
END IF
END IF
CLOSE i901_cl
IF g_success = 'Y' THEN
COMMIT WORK
DISPLAY BY NAME g_votea.tc_voteaconf
DISPLAY BY NAME g_votea.tc_votea03
ELSE
LET g_votea.tc_voteaconf = g_votea_t.tc_voteaconf
LET g_votea.tc_votea03 = g_votea_t.tc_votea03
DISPLAY BY NAME g_votea.tc_voteaconf
DISPLAY BY NAME g_votea.tc_votea03
ROLLBACK WORK
END IF
SELECT tc_voteaacti,tc_voteamodu,tc_voteadate,tc_voteaconf
INTO g_votea.tc_voteaacti,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaconf FROM tc_votea_file
WHERE tc_votea01 = g_votea.tc_votea01
DISPLAY BY NAME g_votea.tc_voteaacti,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaconf
IF g_votea.tc_voteaconf ='X' THEN LET g_chr='Y' ELSE LET g_chr='N' END IF
IF g_votea.tc_votea03 ='R' THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"","",g_chr,"") #No.MOD-480339
END FUNCTION
FUNCTION i901_r()
IF s_shut(0) THEN
RETURN
END IF
IF g_votea.tc_votea01 IS NULL THEN
CALL cl_err("",-400,0)
RETURN
END IF
SELECT * INTO g_votea.* FROM tc_votea_file
WHERE tc_votea01 = g_votea.tc_votea01
#FUN-730060 --begin--------
#IF g_votea.tc_voteaacti ='N' THEN #檢查資料是否為無效
# CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
# RETURN
#END IF
#FUN-730060 --end----------
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.sqlcode THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0) #資料被他人LOCK
ROLLBACK WORK
RETURN
END IF
CALL i901_show()
IF cl_delh(0,0) THEN #確認一下
DELETE FROM tc_votea_file WHERE tc_votea01 = g_votea.tc_votea01
DELETE FROM tc_voteb_file WHERE tc_voteb01 = g_votea.tc_votea01
CLEAR FORM
CALL g_voteb.clear()
OPEN i901_count
FETCH i901_count INTO g_row_count
DISPLAY g_row_count TO FORMONLY.cnt
OPEN i901_cs
IF g_curs_index = g_row_count + 1 THEN
LET g_jump = g_row_count
CALL i901_fetch('L')
ELSE
LET g_jump = g_curs_index
LET mi_no_ask = TRUE #No:FUN-6A0067
CALL i901_fetch('/')
END IF
END IF
CLOSE i901_cl
COMMIT WORK
END FUNCTION
#單身
FUNCTION i901_b()
DEFINE
l_ac_t LIKE type_file.num5, #未取消的ARRAY CNT #No.FUN-680136 SMALLINT
l_n LIKE type_file.num5, #檢查重複用 #No.FUN-680136 SMALLINT
l_cnt LIKE type_file.num5, #檢查重複用 #No.FUN-680136 SMALLINT
l_lock_sw LIKE type_file.chr1, #單身鎖住否 #No.FUN-680136 VARCHAR(1)
p_cmd LIKE type_file.chr1, #處理狀態 #No.FUN-680136 VARCHAR(1)
l_misc LIKE gef_file.gef01, #No.FUN-680136 VARCHAR(04)
l_allow_insert LIKE type_file.num5, #可新增否 #No.FUN-680136 SMALLINT
l_allow_delete LIKE type_file.num5 #可刪除否 #No.FUN-680136 SMALLINT
LET g_action_choice = ""
IF s_shut(0) THEN
RETURN
END IF
IF g_votea.tc_votea01 IS NULL THEN
RETURN
END IF
SELECT * INTO g_votea.* FROM tc_votea_file
WHERE tc_votea01=g_votea.tc_votea01
IF g_votea.tc_voteaacti ='N' THEN #檢查資料是否為無效
CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
RETURN
END IF
IF g_votea.tc_voteaconf ='X' THEN #檢查資料是否為作廢
CALL cl_err(g_votea.tc_voteaconf,'9024',0)
RETURN
END IF
CALL cl_opmsg('b')
LET g_forupd_sql = " SELECT tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate",
" FROM tc_voteb_file",
" WHERE tc_voteb01 = ? AND tc_voteb02 = ? FOR UPDATE NOWAIT "
DECLARE i901_bcl CURSOR FROM g_forupd_sql # LOCK CURSOR
LET l_allow_insert = cl_detail_input_auth("insert")
LET l_allow_delete = cl_detail_input_auth("delete")
INPUT ARRAY g_voteb WITHOUT DEFAULTS FROM s_voteb.*
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
DISPLAY "BEFORE INPUT!"
IF g_rec_b != 0 THEN
CALL fgl_set_arr_curr(l_ac)
END IF
BEFORE ROW
DISPLAY "BEFORE ROW!"
LET p_cmd = ''
LET l_ac = ARR_CURR()
LET l_lock_sw = 'N' #DEFAULT
LET l_n = ARR_COUNT()
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.sqlcode THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0) # 資料被他人LOCK
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
IF g_rec_b >= l_ac THEN
LET p_cmd='u'
LET g_voteb_t.* = g_voteb[l_ac].* #BACKUP
LET g_voteb_o.* = g_voteb[l_ac].* #BACKUP
OPEN i901_bcl USING g_votea.tc_votea01,g_voteb_t.tc_voteb02
IF STATUS THEN
CALL cl_err("OPEN i901_bcl:", STATUS, 1)
LET l_lock_sw = "Y"
ELSE
FETCH i901_bcl INTO g_voteb[l_ac].*
IF SQLCA.sqlcode THEN
CALL cl_err(g_voteb_t.tc_voteb02,SQLCA.sqlcode,1)
LET l_lock_sw = "Y"
END IF
END IF
CALL cl_show_fld_cont() #FUN-550037(smin)
CALL i901_set_entry_b(p_cmd) #No.FUN-610018
CALL i901_set_no_entry_b(p_cmd) #No.FUN-610018
END IF
BEFORE INSERT
DISPLAY "BEFORE INSERT!"
LET l_n = ARR_COUNT()
LET p_cmd='a'
INITIALIZE g_voteb[l_ac].* TO NULL
LET g_voteb[l_ac].tc_voteb03 = '' #Body default
LET g_voteb[l_ac].tc_voteb04 = '' #Body default
LET g_voteb[l_ac].tc_votebacti = 'Y' #Body default
LET g_voteb[l_ac].tc_votebuser = g_user #Body default
LET g_voteb[l_ac].tc_votebmodu = g_user #Body default
LET g_voteb[l_ac].tc_votebdate = g_today #Body default
LET g_voteb_t.* = g_voteb[l_ac].* #新輸入資料
LET g_voteb_o.* = g_voteb[l_ac].* #新輸入資料
IF l_ac > 1 THEN # 修改日期初始值
LET g_voteb[l_ac].tc_votebdate = g_voteb[l_ac-1].tc_votebdate
ELSE
LET g_voteb[l_ac].tc_votebdate = g_votea.tc_voteadate
END IF
CALL cl_show_fld_cont() #FUN-550037(smin)
CALL i901_set_entry_b(p_cmd) #No.FUN-610018
CALL i901_set_no_entry_b(p_cmd) #No.FUN-610018
NEXT FIELD tc_voteb02 # 開始進入單身輸入欄位
AFTER INSERT
DISPLAY "AFTER INSERT!"
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
CANCEL INSERT
END IF
#-----No:FUN-670099-----
# IF cl_null(g_voteb[l_ac].voteb03) THEN
# LET g_voteb[l_ac].voteb03 = " "
# END IF
#-----No:FUN-670099 END-----
INSERT INTO tc_voteb_file(tc_voteb01,tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate)
VALUES(g_votea.tc_votea01,g_voteb[l_ac].tc_voteb02,g_voteb[l_ac].tc_voteb03,g_voteb[l_ac].tc_voteb04,
g_voteb[l_ac].tc_votebacti,g_voteb[l_ac].tc_votebuser,g_voteb[l_ac].tc_votebmodu,g_voteb[l_ac].tc_votebdate)
IF SQLCA.sqlcode THEN
CALL cl_err3("ins","tc_voteb_file",g_votea.tc_votea01,g_voteb[l_ac].tc_voteb02,SQLCA.sqlcode,"","",1) #No.FUN-660129
CANCEL INSERT
ELSE
MESSAGE 'INSERT O.K'
COMMIT WORK
LET g_rec_b=g_rec_b+1
DISPLAY g_rec_b TO FORMONLY.cn2
END IF
BEFORE FIELD tc_voteb02 #default 序號
IF g_voteb[l_ac].tc_voteb02 IS NULL OR g_voteb[l_ac].tc_voteb02 = 0 THEN
SELECT MAX(tc_voteb02)+1
INTO g_voteb[l_ac].tc_voteb02
FROM tc_voteb_file
WHERE tc_voteb01 = g_votea.tc_votea01
IF g_voteb[l_ac].tc_voteb02 IS NULL THEN
LET g_voteb[l_ac].tc_voteb02 = 1
END IF
END IF
AFTER FIELD tc_voteb02 #check 序號是否重複
IF NOT cl_null(g_voteb[l_ac].tc_voteb02 ) THEN
IF g_voteb[l_ac].tc_voteb02 != g_voteb_t.tc_voteb02
OR g_voteb_t.tc_voteb02 IS NULL THEN
SELECT count(*)
INTO l_n
FROM tc_voteb_file
WHERE tc_voteb01 = g_votea.tc_votea01
AND tc_voteb02 = g_voteb[l_ac].tc_voteb02
IF l_n > 0 THEN
CALL cl_err('',-239,0)
LET g_voteb[l_ac].tc_voteb02 = g_voteb_t.tc_voteb02
NEXT FIELD tc_voteb02
END IF
END IF
END IF
#FUN-650191 --begin--begin
AFTER FIELD tc_voteb03 #廠商編號
IF cl_null(g_voteb[l_ac].tc_voteb03) THEN
NEXT FIELD tc_voteb03
END IF
LET g_voteb_o.tc_voteb03 = g_voteb[l_ac].tc_voteb03
#FUN-650191 --add--end
BEFORE FIELD tc_voteb04
CALL i901_set_entry_b(p_cmd)
AFTER FIELD tc_voteb04
IF cl_null(g_voteb[l_ac].tc_voteb03) THEN
NEXT FIELD tc_voteb03
END IF
LET g_voteb_o.tc_voteb04 = g_voteb[l_ac].tc_voteb04
AFTER FIELD tc_votebacti #保稅否
IF g_voteb[l_ac].tc_votebacti NOT MATCHES '[YyNn]' THEN
NEXT FIELD tc_votebacti
END IF
LET g_voteb_o.tc_voteb03 = g_voteb[l_ac].tc_votebacti
CALL i901_set_no_entry_b(p_cmd)
BEFORE DELETE #是否取消單身
DISPLAY "BEFORE DELETE"
IF g_voteb_t.tc_voteb02 > 0 AND g_voteb_t.tc_voteb02 IS NOT NULL THEN
IF NOT cl_delb(0,0) THEN
CANCEL DELETE
END IF
IF l_lock_sw = "Y" THEN
CALL cl_err("", -263, 1)
CANCEL DELETE
END IF
DELETE FROM tc_voteb_file
WHERE tc_voteb01 = g_votea.tc_votea01
AND tc_voteb02 = g_voteb_t.tc_voteb02
IF SQLCA.sqlcode THEN
CALL cl_err3("del","tc_voteb_file",g_votea.tc_votea01,g_voteb_t.tc_voteb02,SQLCA.sqlcode,"","",1) #No.FUN-660129
ROLLBACK WORK
CANCEL DELETE
END IF
LET g_rec_b=g_rec_b-1
DISPLAY g_rec_b TO FORMONLY.cn2
END IF
COMMIT WORK
ON ROW CHANGE
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
LET g_voteb[l_ac].* = g_voteb_t.*
CLOSE i901_bcl
ROLLBACK WORK
EXIT INPUT
END IF
IF l_lock_sw = 'Y' THEN
CALL cl_err(g_voteb[l_ac].tc_voteb02,-263,1)
LET g_voteb[l_ac].* = g_voteb_t.*
ELSE
#-----No:FUN-670099-----
# IF cl_null(g_voteb[l_ac].pmx10) THEN
# LET g_voteb[l_ac].pmx10 = " "
# END IF
#-----No:FUN-670099 END-----
UPDATE tc_voteb_file SET
tc_voteb02=g_voteb[l_ac].tc_voteb02,
tc_voteb03=g_voteb[l_ac].tc_voteb03,
tc_voteb04=g_voteb[l_ac].tc_voteb04,
tc_votebacti=g_voteb[l_ac].tc_votebacti,
tc_votebuser=g_voteb[l_ac].tc_votebuser,
tc_votebmodu=g_voteb[l_ac].tc_votebmodu,
tc_votebdate=g_voteb[l_ac].tc_votebdate
WHERE tc_voteb01=g_votea.tc_votea01
AND tc_voteb02=g_voteb_t.tc_voteb02
IF SQLCA.sqlcode OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_voteb_file",g_votea.tc_votea01,g_voteb_t.tc_voteb02,SQLCA.sqlcode,"","",1) #No.FUN-660129
LET g_voteb[l_ac].* = g_voteb_t.*
ELSE
MESSAGE 'UPDATE O.K'
COMMIT WORK
END IF
END IF
AFTER ROW
DISPLAY "AFTER ROW!!"
LET l_ac = ARR_CURR()
LET l_ac_t = l_ac
IF INT_FLAG THEN
CALL cl_err('',9001,0)
LET INT_FLAG = 0
IF p_cmd = 'u' THEN
LET g_voteb[l_ac].* = g_voteb_t.*
END IF
CLOSE i901_bcl
ROLLBACK WORK
EXIT INPUT
END IF
CLOSE i901_bcl
COMMIT WORK
ON ACTION CONTROLO #沿用所有欄位
IF INFIELD(pmx02) AND l_ac > 1 THEN
LET g_voteb[l_ac].* = g_voteb[l_ac-1].*
LET g_voteb[l_ac].tc_voteb02 = g_rec_b + 1
NEXT FIELD tc_voteb02
END IF
ON ACTION CONTROLZ
CALL cl_show_req_fields()
ON ACTION CONTROLG
CALL cl_cmdask()
ON ACTION controlp
{ CASE
#FUN-650191 add--begin
WHEN INFIELD(tc_voteb03)
CALL cl_init_qry_var()
LET g_qryparam.form ="q_voteb" #MOD-530533
LET g_qryparam.default1 = g_voteb[l_ac].tc_voteb03
CALL cl_create_qry() RETURNING g_voteb[l_ac].tc_voteb03
DISPLAY BY NAME g_voteb[l_ac].tc_voteb03
NEXT FIELD tc_voteb03
OTHERWISE EXIT CASE
END CASE
}
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
ON ACTION controls #No.FUN-6B0032
CALL cl_set_head_visible("","AUTO") #No.FUN-6B0032
END INPUT
#start FUN-5B0136
LET g_votea.tc_voteamodu = g_user
LET g_votea.tc_voteadate = g_today
UPDATE tc_votea_file SET tc_voteamodu = g_votea.tc_voteamodu,tc_voteadate = g_votea.tc_voteadate
WHERE tc_votea01 = g_pmw.tc_votea01
DISPLAY BY NAME g_votea.tc_voteamodu,g_votea.tc_voteadate
#end FUN-5B0136
CLOSE i901_bcl
COMMIT WORK
CALL i901_delall()
END FUNCTION
- May 05 Thu 2011 16:44
-
TIPTOP GP 5.x 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [4GL檔] - Part 3
FUNCTION i901_tc_votea01(p_cmd) #單據編號
DEFINE l_smydesc LIKE smy_file.smydesc,
l_smyacti LIKE smy_file.smyacti,
l_t1 LIKE oay_file.oayslip, #No.FUN-680136 VARCHAR(5)
p_cmd LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
LET g_errno = ' '
LET l_t1 = s_get_doc_no(g_votea.tc_votea01) #No:MOD-540182
IF g_votea.tc_votea01 IS NULL THEN
LET g_errno = 'E'
LET l_smydesc=NULL
ELSE
SELECT smydesc,smyacti
INTO l_smydesc,l_smyacti
FROM smy_file WHERE smyslip = l_t1
IF SQLCA.sqlcode THEN
LET g_errno = 'E'
LET l_smydesc = NULL
ELSE
IF l_smyacti matches'[nN]' THEN
LET g_errno = 'E'
END IF
END IF
END IF
IF cl_null(g_errno) OR p_cmd = 'd' THEN
# DISPLAY l_smydesc TO FORMONLY.smydesc
END IF
END FUNCTION
FUNCTION i901_q()
LET g_row_count = 0
LET g_curs_index = 0
CALL cl_navigator_setting( g_curs_index, g_row_count )
MESSAGE ""
CALL cl_opmsg('q')
CLEAR FORM
CALL g_voteb.clear()
DISPLAY ' ' TO FORMONLY.cnt
CALL i901_cs()
IF INT_FLAG THEN
LET INT_FLAG = 0
INITIALIZE g_votea.* TO NULL
RETURN
END IF
OPEN i901_cs # 從DB產生合乎條件TEMP(0-30秒)
IF SQLCA.sqlcode THEN
CALL cl_err('',SQLCA.sqlcode,0)
INITIALIZE g_votea.* TO NULL
ELSE
OPEN i901_count
FETCH i901_count INTO g_row_count
DISPLAY g_row_count TO FORMONLY.cnt
CALL i901_fetch('F') # 讀出TEMP第一筆並顯示
END IF
END FUNCTION
FUNCTION i901_fetch(p_flag)
DEFINE
p_flag LIKE type_file.chr1 #處理方式 #No.FUN-680136 VARCHAR(1)
CASE p_flag
WHEN 'N' FETCH NEXT i901_cs INTO g_votea_rowid,g_votea.tc_votea01
WHEN 'P' FETCH PREVIOUS i901_cs INTO g_votea_rowid,g_votea.tc_votea01
WHEN 'F' FETCH FIRST i901_cs INTO g_votea_rowid,g_votea.tc_votea01
WHEN 'L' FETCH LAST i901_cs INTO g_votea_rowid,g_votea.tc_votea01
WHEN '/'
IF (NOT mi_no_ask) THEN #No:FUN-6A0067
CALL cl_getmsg('fetch',g_lang) RETURNING g_msg
LET INT_FLAG = 0
PROMPT g_msg CLIPPED,': ' FOR g_jump
ON IDLE g_idle_seconds
CALL cl_on_idle()
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
END PROMPT
IF INT_FLAG THEN
LET INT_FLAG = 0
EXIT CASE
END IF
END IF
FETCH ABSOLUTE g_jump i901_cs INTO g_votea_rowid,g_votea.tc_votea01
LET mi_no_ask = FALSE #No:FUN-6A0067
END CASE
IF SQLCA.sqlcode THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.sqlcode,0)
INITIALIZE g_votea.* TO NULL #No.FUN-6A0162
RETURN
ELSE
CASE p_flag
WHEN 'F' LET g_curs_index = 1
WHEN 'P' LET g_curs_index = g_curs_index - 1
WHEN 'N' LET g_curs_index = g_curs_index + 1
WHEN 'L' LET g_curs_index = g_row_count
WHEN '/' LET g_curs_index = g_jump
END CASE
CALL cl_navigator_setting( g_curs_index, g_row_count )
DISPLAY g_curs_index TO FORMONLY.idx #No:FUN-4A0089
END IF
SELECT * INTO g_votea.* FROM tc_votea_file WHERE ROWID = g_votea_rowid
IF SQLCA.sqlcode THEN
CALL cl_err3("sel","tc_votea_file","","",SQLCA.sqlcode,"","",1) #No.FUN-660129
INITIALIZE g_votea.* TO NULL
RETURN
END IF
LET g_data_owner = g_votea.tc_voteauser #FUN-4C0056 add
# LET g_data_group = g_votea.tc_voteagrup #FUN-4C0056 add
CALL i901_show()
END FUNCTION
#將資料顯示在畫面上
FUNCTION i901_show()
LET g_votea_t.* = g_votea.* #保存單頭舊值
LET g_votea_o.* = g_votea.* #保存單頭舊值
DISPLAY BY NAME g_votea.tc_votea01,g_votea.tc_votea02,g_votea.tc_votea03,
g_votea.tc_voteauser,g_votea.tc_voteamodu,
g_votea.tc_voteadate,g_votea.tc_voteaacti,g_votea.tc_voteaconf
CALL i901_tc_votea01('d')
CALL i901_b_fill(g_wc2) #單身
CALL cl_show_fld_cont() #No:FUN-550037 hmf
IF g_votea.tc_voteaconf ='X' THEN LET g_chr='Y' ELSE LET g_chr='N' END IF
IF g_votea.tc_votea03 ='R' THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"","",g_chr,"")
END FUNCTION
#FUN-580120
FUNCTION i901_y_chk()
DEFINE l_cnt LIKE type_file.num5 #No.FUN-680136 SMALLINT
LET g_success = 'Y'
IF s_shut(0) THEN RETURN END IF
SELECT * INTO g_votea.* FROM tc_votea_file WHERE ROWID = g_votea_rowid
IF SQLCA.SQLCODE THEN
CALL cl_err('','mfg-009',1)
LET g_success = 'N'
RETURN
END IF
IF cl_null(g_votea.tc_votea01) THEN
CALL cl_err('',-400,0)
LET g_success = 'N'
RETURN
END IF
IF g_votea.tc_voteaconf='X' THEN
CALL cl_err('','9024',0)
LET g_success = 'N'
RETURN
END IF
IF g_votea.tc_voteaconf='Y' THEN
CALL cl_err('','9023',0)
LET g_success = 'N'
RETURN
END IF
IF g_votea.tc_voteaacti= 'N' THEN
CALL cl_err('','mfg0301',1)
LET g_success = 'N'
RETURN
END IF
LET l_cnt =0
#控管單身未輸入資料
SELECT COUNT(*) INTO l_cnt
FROM tc_voteb_file
WHERE tc_voteb01 = g_votea.tc_votea01
IF SQLCA.SQLCODE THEN
CALL cl_err('','mfg-009',1)
LET g_success = 'N'
RETURN
END IF
IF l_cnt = 0 OR l_cnt IS NULL THEN
CALL cl_err('','mfg-009',1)
LET g_success = 'N'
RETURN
END IF
END FUNCTION
FUNCTION i901_y_upd()
DEFINE l_cnt LIKE type_file.num5 #No.FUN-680136 SMALLINT
LET g_success = 'Y'
IF NOT cl_confirm('axm-108') THEN RETURN END IF
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
LET g_success = 'N'
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 對DB鎖定
IF SQLCA.SQLCODE THEN
LET g_success = 'N'
CALL cl_err(g_votea.tc_votea01,SQLCA.SQLCODE,0)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
UPDATE tc_votea_file SET tc_voteaconf = 'Y' WHERE tc_votea01 = g_votea.tc_votea01
IF SQLCA.SQLCODE OR SQLCA.sqlerrd[3]=0 THEN
CALL cl_err3("upd","tc_votea_file",g_votea.tc_votea01,"","apm-266","","upd tc_votea_file",1) #No.FUN-660129
LET g_success='N'
END IF
IF g_votea.tc_votea03 = 'U' THEN
LET g_votea.tc_votea03 = 'R'
UPDATE tc_votea_file SET tc_votea03 = 'U' WHERE tc_votea01 != g_votea.tc_votea01
IF SQLCA.SQLCODE THEN
CALL cl_err3("upd","tc_votea_file",g_votea.tc_votea01,"","apm-266","","upd tc_votea_file",1) #No.FUN-660129
LET g_success = 'N'
END IF
UPDATE tc_votea_file SET tc_votea03 = g_votea.tc_votea03 WHERE tc_votea01 = g_votea.tc_votea01
IF SQLCA.SQLCODE THEN
CALL cl_err3("upd","tc_votea_file",g_votea.tc_votea01,"","apm-266","","upd tc_votea_file",1) #No.FUN-660129
LET g_success = 'N'
END IF
END IF
IF g_success = 'Y' THEN
SELECT COUNT(*) INTO g_cnt FROM tc_voteb_file
WHERE tc_voteb01 = g_votea.tc_votea01
IF g_cnt = 0 OR SQLCA.SQLCODE THEN
CALL cl_err(' ','aws-065',0)
LET g_success = 'N'
END IF
END IF
IF g_success='Y' THEN
LET g_votea.tc_votea03='R'
LET g_votea.tc_voteaconf='Y'
COMMIT WORK
DISPLAY BY NAME g_votea.tc_votea03
DISPLAY BY NAME g_votea.tc_voteaconf
ELSE
LET g_votea.tc_voteaconf='N'
LET g_success = 'N'
ROLLBACK WORK
END IF
#CKP
SELECT * INTO g_votea.* FROM tc_votea_file WHERE tc_votea01 = g_votea.tc_votea01
IF g_votea.tc_voteaconf ='X' THEN LET g_chr='Y' ELSE LET g_chr='N' END IF
IF g_votea.tc_votea03 ='R' THEN LET g_chr2='Y' ELSE LET g_chr2='N' END IF
CALL cl_set_field_pic(g_votea.tc_voteaconf,g_chr2,"",g_chr3,g_chr,g_votea.tc_voteaacti)
END FUNCTION
- May 05 Thu 2011 16:43
-
TIPTOP GP 5.x 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [4GL檔] - Part 2
#start FUN-640063 add
FUNCTION i901_bp_refresh()
DISPLAY ARRAY g_voteb TO s_voteb.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)
BEFORE DISPLAY
EXIT DISPLAY
ON IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE DISPLAY
END DISPLAY
END FUNCTION
#end FUN-640063 add
FUNCTION i901_a()
DEFINE li_result LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE ls_doc STRING
DEFINE li_inx LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE l_newno LIKE tc_votea_file.tc_votea01
DEFINE l_sql STRING
MESSAGE ""
CLEAR FORM
CALL g_voteb.clear()
LET g_wc = NULL #MOD-530329
LET g_wc2= NULL #MOD-530329
IF s_shut(0) THEN
RETURN
END IF
INITIALIZE g_votea.* LIKE tc_votea_file.* #DEFAULT 設定
LET g_votea01_t = NULL
IF g_ydate IS NULL THEN
LET g_votea.tc_votea01 = NULL
LET g_votea.tc_voteadate = g_today
ELSE #使用上筆資料值
LET g_votea.tc_votea01 = g_sheet #採購詢價單別
LET g_votea.tc_voteadate = g_ydate #收貨日期
END IF
#預設值及將數值類變數清成零
LET g_votea_t.* = g_votea.*
LET g_votea_o.* = g_votea.*
CALL cl_opmsg('a')
WHILE TRUE
LET g_votea.tc_voteauser = g_user
LET g_votea.tc_voteamodu = g_user
LET g_votea.tc_voteadate = g_today
LET g_votea.tc_voteaacti = 'Y' #資料有效
LET g_votea.tc_voteaconf = 'N' #資料有效
CALL i901_i("a") #輸入單頭
IF INT_FLAG THEN #使用者不玩了
INITIALIZE g_votea.* TO NULL
LET INT_FLAG = 0
CALL cl_err('',9001,0)
EXIT WHILE
END IF
IF cl_null(g_votea.tc_votea01) THEN # KEY 不可空白
CONTINUE WHILE
END IF
#輸入後, 若該單據需自動編號, 並且其單號為空白, 則自動賦予單號
BEGIN WORK
#No:MOD-540182 --start--
CALL s_auto_assign_no("cxx",g_votea.tc_votea01,g_votea.tc_voteadate,"","tc_votea_file","tc_votea01","","","") RETURNING li_result,g_votea.tc_votea01
IF (NOT li_result) THEN
CONTINUE WHILE
END IF
MESSAGE g_votea.tc_votea01
LET l_sql =" SELECT CASE WHEN sno < 10 THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'00'||to_char(sno) ",
" WHEN sno > 10 AND sno < 100 THEN substr('",g_votea.tc_votea01 CLIPPED,"',1,12)|| '0'||to_char(sno) ",
" ELSE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||to_char(sno) ",
" END sno ",
" FROM ( ",
" SELECT TO_NUMBER(SUBSTR(NVL(MAX(tc_votea01),'XPUBX-'||to_char(sysdate,'yymmdd')||'000'),-3,3))+1 sno ",
" FROM ds.tc_votea_file WHERE tc_votea01 LIKE substr('",g_votea.tc_votea01 CLIPPED,"',1,12)||'%' )"
#MESSAGE l_sql
PREPARE i901_sno FROM l_sql # RUNTIME 編譯
IF STATUS THEN CALL cl_err('i901_sno',STATUS,0) END IF
#end No:FUN-550019
DECLARE i901_cs_sno # CURSOR
CURSOR FOR i901_sno
FOREACH i901_cs_sno INTO l_newno
IF SQLCA.sqlcode THEN
CALL cl_err('foreach:',SQLCA.sqlcode,1)
EXIT FOREACH
END IF
END FOREACH
MESSAGE l_newno
LET g_votea.tc_votea01 = l_newno
DISPLAY BY NAME g_votea.tc_votea01
INSERT INTO tc_votea_file VALUES (g_votea.*)
LET g_ydate = g_votea.tc_voteadate #備份上一筆日期
#No:MOD-540182 --start--
#備份上一筆單別
CALL s_get_doc_no(g_votea.tc_votea01) RETURNING g_sheet
#No:MOD-540182 ---end---
IF SQLCA.SQLCODE THEN #置入資料庫不成功
ROLLBACK WORK #No:7857
CALL cl_err3("ins","tc_votea_file",g_votea.tc_votea01,"",SQLCA.SQLCODE,"","",1) #No.FUN-660129
CONTINUE WHILE
ELSE
COMMIT WORK #No:7857
END IF
SELECT ROWID INTO g_votea_rowid FROM tc_votea_file
WHERE tc_votea01 = g_votea.tc_votea01
LET g_votea01_t = g_votea.tc_votea01 #保留舊值
LET g_votea_t.* = g_votea.*
LET g_votea_o.* = g_votea.*
CALL g_voteb.clear()
LET g_rec_b = 0 #No:MOD-490280
CALL i901_b() #輸入單身
EXIT WHILE
END WHILE
END FUNCTION
FUNCTION i901_u()
IF s_shut(0) THEN
RETURN
END IF
IF g_votea.tc_votea01 IS NULL THEN # KEY 不可為空白
CALL cl_err('',-400,0)
RETURN
END IF
SELECT * INTO g_votea.* FROM tc_votea_file
WHERE tc_votea01=g_votea.tc_votea01
IF g_votea.tc_voteaacti ='N' THEN #檢查資料是否為無效
CALL cl_err(g_votea.tc_votea01,'mfg1000',0)
RETURN
END IF
MESSAGE ""
CALL cl_opmsg('u')
LET g_votea01_t = g_votea.tc_votea01
BEGIN WORK
OPEN i901_cl USING g_votea_rowid
IF STATUS THEN
CALL cl_err("OPEN i901_cl:", STATUS, 1)
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
FETCH i901_cl INTO g_votea.* # 鎖住將被更改或取消的資料
IF SQLCA.SQLCODE THEN
CALL cl_err(g_votea.tc_votea01,SQLCA.SQLCODE,0) # 資料被他人LOCK
CLOSE i901_cl
ROLLBACK WORK
RETURN
END IF
CALL i901_show()
WHILE TRUE
LET g_votea01_t = g_votea.tc_votea01
LET g_votea_o.* = g_votea.*
LET g_votea.tc_voteamodu = g_user
LET g_votea.tc_voteadate = g_today
CALL i901_i("u") #欄位更改
IF INT_FLAG THEN
LET INT_FLAG = 0
LET g_votea.*=g_votea_t.*
CALL i901_show()
CALL cl_err('','9001',0)
EXIT WHILE
END IF
IF g_votea.tc_votea01 != g_votea01_t THEN # 更改單號
UPDATE tc_voteb_file SET voteb01 = g_votea.tc_votea01 WHERE tc_voteb01 = g_votea01_t
IF SQLCA.SQLCODE OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_voteb_file",g_votea01_t,"",SQLCA.SQLCODE,"","voteb",1) #No.FUN-660129
CONTINUE WHILE
END IF
END IF
UPDATE tc_votea_file SET tc_votea_file.* = g_votea.* WHERE ROWID = g_votea_rowid
IF SQLCA.SQLCODE OR SQLCA.sqlerrd[3] = 0 THEN
CALL cl_err3("upd","tc_votea_file","","",SQLCA.SQLCODE,"","",1) #No.FUN-660129
CONTINUE WHILE
END IF
EXIT WHILE
END WHILE
CLOSE i901_cl
COMMIT WORK
#start FUN-640063 add
CALL i901_b_fill("1=1")
CALL i901_bp_refresh()
#end FUN-640063 add
END FUNCTION
FUNCTION i901_i(p_cmd)
DEFINE
l_n LIKE type_file.num5, #No.FUN-680136 SMALLINT
p_cmd LIKE type_file.chr1 #a:輸入 u:更改 #No.FUN-680136 VARCHAR(1)
DEFINE li_result LIKE type_file.num5 #No.FUN-680136 SMALLINT
IF s_shut(0) THEN
RETURN
END IF
DISPLAY BY NAME g_votea.tc_voteauser,g_votea.tc_voteamodu,g_votea.tc_voteadate,g_votea.tc_voteaacti,g_votea.tc_voteaconf
CALL cl_set_head_visible("","YES") #No.FUN-6B0032
INPUT BY NAME g_votea.tc_votea01,g_votea.tc_votea02,g_votea.tc_votea03 WITHOUT DEFAULTS
BEFORE INPUT
LET g_before_input_done = FALSE
CALL i901_set_entry(p_cmd)
CALL i901_set_no_entry(p_cmd)
LET g_before_input_done = TRUE
#No:MOD-540182 --start--
CALL cl_set_docno_format("tc_votea01")
#No:MOD-540182 ---end---
AFTER FIELD tc_votea01
#單號處理方式:
#在輸入單別後, 至單據性質檔中讀取該單別資料;
#若該單別不需自動編號, 則讓使用者自行輸入單號, 並檢查其是否重複
#若要自動編號, 則單號不用輸入, 直到單頭輸入完成後, 再行自動指定單號
#No:MOD-540182 --start--
IF NOT cl_null(g_votea.tc_votea01) THEN
CALL s_check_no("apm",g_votea.tc_votea01,g_votea01_t,"6","tc_votea_file","tc_votea01","") RETURNING li_result,g_votea.tc_votea01
DISPLAY BY NAME g_votea.tc_votea01
IF (NOT li_result) THEN
LET g_votea.tc_votea01=g_votea_o.tc_votea01
NEXT FIELD tc_votea01
END IF
# DISPLAY g_smy.smydesc TO smydesc
IF g_votea.tc_votea01 != g_votea01_t OR g_votea01_t IS NULL THEN
#進行輸入之單號檢查
#No:MOD-540182 --start-- 暫時先mark,因為此支程式裡面沒有改成動態編碼長度
# CALL s_mfgchno(g_votea.tc_votea01) RETURNING g_i,g_votea.tc_votea01
# DISPLAY BY NAME g_votea.tc_votea01
# IF NOT g_i THEN
# NEXT FIELD tc_votea01
# END IF
#No:MOD-540182 ---end---
# SELECT count(*) INTO l_n FROM tc_votea_file
# WHERE tc_votea01 = g_votea.tc_votea01
# IF l_n > 0 THEN #單據編號重複
# CALL cl_err(g_votea.tc_votea01,-239,0)
# LET g_votea.tc_votea01 = g_votea01_t
# DISPLAY BY NAME g_votea.tc_votea01
# NEXT FIELD tc_votea01
# END IF
END IF
END IF
#No:MOD-540182 ---end---
AFTER FIELD tc_votea02
IF cl_null(g_votea.tc_votea02) THEN
LET g_votea_o.tc_votea02 = g_votea.tc_votea02
NEXT FIELD tc_votea02
END IF
AFTER FIELD tc_votea03
#IF cl_null(g_votea.tc_votea03) THEN
# LET g_votea_o.tc_votea03 = g_votea.tc_votea03
# NEXT FIELD tc_votea03
#END IF
IF NOT cl_null(g_votea.tc_votea03) THEN
IF g_votea.tc_votea03 NOT MATCHES "[UR]" OR g_votea.tc_votea03 IS NULL
THEN CALL cl_err(g_votea.tc_votea03,'cxx1001',0)
LET g_votea_o.tc_votea03 = g_votea.tc_votea03
DISPLAY BY NAME g_votea.tc_votea03
NEXT FIELD tc_votea03
END IF
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 ACTION controlp
CASE
WHEN INFIELD(tc_votea01) #單據編號
LET g_t1 = s_get_doc_no(g_votea.tc_votea01) #No:MOD-540182
CALL q_smycust(FALSE,FALSE,g_t1,'APM','6') RETURNING g_t1 #TQC-670008
LET g_votea.tc_votea01 = g_t1 #No:MOD-540182
DISPLAY BY NAME g_votea.tc_votea01
CALL i901_tc_votea01('d')
NEXT FIELD tc_votea01
OTHERWISE EXIT CASE
END CASE
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
END FUNCTION
- May 05 Thu 2011 16:43
-
TIPTOP GP 5.x 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [4GL檔] - Part 1
# Prog. Version..: '5.00.04-07.12.21(00009)' #
# Pattern name...: cxxi901.4gl
# Descriptions...: ●職工福利委員會公告資料維護作業●
# Date & Author..: 2011/01/05 By Jeffrey
# Modify.........:
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
#模組變數(Module Variables)
DEFINE g_votea RECORD LIKE tc_votea_file.*, # (單頭)
g_votea_t RECORD LIKE tc_votea_file.*, # (舊值)
g_votea_o RECORD LIKE tc_votea_file.*, # (舊值)
g_votea01_t LIKE tc_votea_file.tc_votea01, # (舊值)
g_votea_rowid LIKE type_file.chr18, #ROWID
g_t1 LIKE oay_file.oayslip, #MOD-540182 #No.FUN-680136 VARCHAR(5)
g_sheet LIKE oay_file.oayslip, #No.FUN-680136 VARCHAR(5) #單別 (沿用)
g_ydate LIKE type_file.dat, #No.FUN-680136 DATE #單據日期(沿用)
g_voteb DYNAMIC ARRAY OF RECORD #程式變數(Program Variables)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_voteb_t RECORD #程式變數 (舊值)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_voteb_o RECORD #程式變數 (舊值)
tc_voteb02 LIKE tc_voteb_file.tc_voteb02, #公告項次
tc_voteb03 LIKE tc_voteb_file.tc_voteb03, #公告細項主旨
tc_voteb04 LIKE tc_voteb_file.tc_voteb04, #URL連結網址
tc_votebacti LIKE tc_voteb_file.tc_votebacti, #資料有效碼
tc_votebuser LIKE tc_voteb_file.tc_votebuser, #資料建立者
tc_votebmodu LIKE tc_voteb_file.tc_votebmodu, #最近資料修改者
tc_votebdate LIKE tc_voteb_file.tc_votebdate #最近修改日期
END RECORD,
g_sql STRING, #CURSOR暫存 TQC-5B0183
g_wc STRING, #單頭CONSTRUCT結果
g_wc2 STRING, #單身CONSTRUCT結果
g_rec_b LIKE type_file.num5, #單身筆數 #No.FUN-680136 SMALLINT
l_ac LIKE type_file.num5 #目前處理的ARRAY CNT #No.FUN-680136 SMALLINT
DEFINE p_row,p_col LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE g_gec07 LIKE gec_file.gec07 #FUN-550019
DEFINE g_forupd_sql STRING #SELECT ... FOR UPDATE NOWAIT NOWAIT SQL
DEFINE g_before_input_done LIKE type_file.num5 #No.FUN-680136 SMALLINT
DEFINE g_chr LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
DEFINE g_cnt LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE g_i LIKE type_file.num5 #count/index for any purpose #No.FUN-680136 SMALLINT
DEFINE g_msg LIKE ze_file.ze03 #No.FUN-680136 VARCHAR(72)
DEFINE g_curs_index LIKE type_file.num10 #No.FUN-680136 INTEGER
DEFINE g_row_count LIKE type_file.num10 #總筆數 #No.FUN-680136 INTEGER
DEFINE g_jump LIKE type_file.num10 #查詢指定的筆數 #No.FUN-680136 INTEGER
DEFINE mi_no_ask LIKE type_file.num5 #是否開啟指定筆視窗 #No.FUN-680136 SMALLINT #No:FUN-6A0067
DEFINE g_argv1 LIKE tc_votea_file.tc_votea01 #No.FUN-680136 VARCHAR(16) #單號 #TQC-630074
DEFINE g_argv2 STRING #指定執行的功能 #TQC-630074
DEFINE g_argv3 STRING #No:FUN-670099
#No.FUN-710091 --begin
DEFINE l_table STRING
DEFINE g_str STRING
DEFINE g_chr2 LIKE type_file.chr1 #No.FUN-680136 VARCHAR(1)
DEFINE g_chr3 LIKE type_file.chr1 #FUN-580120 #No.FUN-680136 VARCHAR(1)
#No.FUN-710091 --end
#主程式開始
MAIN
DEFINE l_time LIKE type_file.chr8 #計算被使用時間 #No.FUN-680136 VARCHAR(8)
#No:FUN-710055 --start--
OPTIONS #改變一些系統預設值
FORM LINE FIRST + 2, #畫面開始的位置
MESSAGE LINE LAST, #訊息顯示的位置
PROMPT LINE LAST, #提示訊息的位置
INPUT NO WRAP #輸入的方式: 不打轉
DEFER INTERRUPT #擷取中斷鍵, 由程式處理
#No:FUN-710055 ---end---
IF (NOT cl_user()) THEN
EXIT PROGRAM
END IF
WHENEVER ERROR CALL cl_err_msg_log
IF (NOT cl_setup("CXX")) THEN
EXIT PROGRAM
END IF
LET g_argv1=ARG_VAL(1) #TQC-630074
LET g_argv2=ARG_VAL(2) #TQC-630074
LET g_argv3=ARG_VAL(3) #TQC-630074
#No.FUN-710091 --begin
LET g_sql="tc_votea01.tc_votea_file.tc_votea01,",
"tc_votea02.tc_votea_file.tc_votea02,",
"tc_votea03.tc_votea_file.tc_votea03,",
"tc_voteb02.tc_voteb_file.tc_voteb02,",
"tc_voteb03.tc_voteb_file.tc_voteb03,",
"tc_voteb04.tc_voteb_file.tc_voteb04"
LET l_table = cl_prt_temptable('cxxi901',g_sql) CLIPPED
IF l_table = -1 THEN EXIT PROGRAM END IF
#No.FUN-710091 --end
CALL cl_used(g_prog,l_time,1) #計算使用時間 (進入時間) #MOD-580088
RETURNING l_time
LET g_forupd_sql = "SELECT * FROM tc_votea_file WHERE ROWID = ? FOR UPDATE NOWAIT"
DECLARE i901_cl CURSOR FROM g_forupd_sql
LET p_row = 1 LET p_col = 3
OPEN WINDOW i901_w AT p_row,p_col WITH FORM "cxx/42f/cxxi901"
ATTRIBUTE (STYLE = g_win_style CLIPPED) #No:FUN-580092 HCN
CALL cl_set_locale_frm_name("cxxi901") #No:FUN-670099
LET g_pdate = g_today #No.FUN-710091
CALL cl_ui_init()
LET g_ydate = NULL
CALL i901_menu()
CLOSE WINDOW i901_w #結束畫面
CALL cl_used(g_prog,l_time,2) #計算使用時間 (退出時間) #MOD-580088
RETURNING l_time
END MAIN
#QBE 查詢資料
FUNCTION i901_cs()
DEFINE lc_qbe_sn LIKE gbm_file.gbm01 #No:FUN-580031 HCN
CLEAR FORM
CALL g_voteb.clear()
#TQC-630074
IF NOT cl_null(g_argv1) THEN
LET g_wc = " tc_votea01 = '",g_argv1,"'" #FUN-580120
ELSE
CALL cl_set_head_visible("","YES") #No.FUN-6B0032
INITIALIZE g_votea.* TO NULL #No.FUN-750051
CONSTRUCT BY NAME g_wc ON tc_votea01,tc_votea02,tc_votea03,
tc_voteauser,tc_voteamodu,tc_voteadate,tc_voteaacti,tc_voteaconf
#No:FUN-580031 --start-- HCN
BEFORE CONSTRUCT
CALL cl_qbe_init()
#No:FUN-580031 --end-- HCN
ON ACTION controlp
CASE
WHEN INFIELD(tc_votea01) #詢價單號 #MOD-4A0252
CALL cl_init_qry_var()
LET g_qryparam.state = 'c'
LET g_qryparam.form ="q_votea"
LET g_qryparam.where = " 1=1 "
CALL cl_create_qry() RETURNING g_qryparam.multiret
DISPLAY g_qryparam.multiret TO tc_votea01
NEXT FIELD tc_votea01
OTHERWISE EXIT CASE
END CASE
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_list() RETURNING lc_qbe_sn
CALL cl_qbe_display_condition(lc_qbe_sn)
#No:FUN-580031 --end-- HCN
END CONSTRUCT
IF INT_FLAG THEN
RETURN
END IF
END IF
#END TQC-630074
# 資料權限的檢查
# IF g_priv2='4' THEN #只能使用自己的資料
# LET g_wc = g_wc clipped," AND tc_voteauser = '",g_user,"'"
# END IF
# IF g_priv3='4' THEN #只能使用相同群的資料
# LET g_wc = g_wc clipped," AND tc_voteagrup MATCHES '",g_grup CLIPPED,"*'"
# END IF
# IF g_priv3 MATCHES "[5678]" THEN #TQC-5C0134群組權限
# LET g_wc = g_wc clipped," AND tc_voteagrup IN ",cl_chk_tgrup_list()
# END IF
#start FUN-580035
# IF g_priv3 MATCHES '[567]' THEN #只能使用相同群組的資料
# LET g_wc = g_wc clipped," AND tc_voteagrup IN ",cl_get_grup_str(g_grup)
# END IF
#end FUN-580035
#TQC-630074
IF NOT cl_null(g_argv1) THEN
LET g_wc2 = ' 1=1'
ELSE
CONSTRUCT g_wc2 ON tc_voteb02,tc_voteb03,tc_voteb04,tc_votebacti,tc_votebuser,tc_votebmodu,tc_votebdate #螢幕上取單身條件
FROM s_voteb[1].tc_voteb02,s_voteb[1].tc_voteb03,s_voteb[1].tc_voteb04,
s_voteb[1].tc_votebacti,s_voteb[1].tc_votebuser,s_voteb[1].tc_votebmodu,s_voteb[1].tc_votebdate
#No:FUN-580031 --start-- HCN
BEFORE CONSTRUCT
CALL cl_qbe_display_condition(lc_qbe_sn)
#No:FUN-580031 --end-- HCN
#-----No:FUN-670099-----
ON ACTION CONTROLP
CASE
#FUN-650191--add--begin
WHEN INFIELD(tc_voteb03) #
CALL cl_init_qry_var()
LET g_qryparam.state = 'c'
LET g_qryparam.form ="q_voteb"
CALL cl_create_qry() RETURNING g_qryparam.multiret
DISPLAY g_qryparam.multiret TO tc_voteb03
NEXT FIELD tc_voteb03
OTHERWISE EXIT CASE
#FUN-650191 add--end
END CASE
#-----No:FUN-670099 END-----
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_save
CALL cl_qbe_save()
#No:FUN-580031 --end-- HCN
END CONSTRUCT
IF INT_FLAG THEN
RETURN
END IF
END IF
#END TQC-630074
IF g_wc2 = " 1=1" THEN # 若單身未輸入條件
LET g_sql = "SELECT ROWID, tc_votea01 FROM tc_votea_file ",
" WHERE ", g_wc CLIPPED,
" ORDER BY 2"
ELSE # 若單身有輸入條件
LET g_sql = "SELECT UNIQUE tc_votea_file.ROWID, tc_votea01 ",
" FROM tc_votea_file, tc_voteb_file ",
" WHERE tc_votea01 = tc_voteb01",
" AND ", g_wc CLIPPED, " AND ",g_wc2 CLIPPED,
" ORDER BY 2"
END IF
PREPARE i901_prepare FROM g_sql
DECLARE i901_cs #SCROLL CURSOR
SCROLL CURSOR WITH HOLD FOR i901_prepare
IF g_wc2 = " 1=1" THEN # 取合乎條件筆數
LET g_sql="SELECT COUNT(*) FROM tc_votea_file WHERE ",g_wc CLIPPED
ELSE
LET g_sql="SELECT COUNT(DISTINCT tc_votea01) FROM tc_votea_file,tc_voteb_file WHERE ",
"tc_votea01 = tc_voteb01 AND ",g_wc CLIPPED," AND ",g_wc2 CLIPPED
END IF
PREPARE i901_precount FROM g_sql
DECLARE i901_count CURSOR FOR i901_precount
END FUNCTION
FUNCTION i901_menu()
WHILE TRUE
CALL i901_bp("G")
CASE g_action_choice
WHEN "insert"
IF cl_chk_act_auth() THEN
CALL i901_a()
END IF
WHEN "query"
IF cl_chk_act_auth() THEN
CALL i901_q()
END IF
WHEN "delete"
IF cl_chk_act_auth() THEN
CALL i901_r()
END IF
WHEN "modify"
IF cl_chk_act_auth() THEN
CALL i901_u()
END IF
WHEN "invalid"
IF cl_chk_act_auth() THEN
CALL i901_x()
END IF
WHEN "reproduce"
IF cl_chk_act_auth() THEN
CALL i901_copy()
END IF
WHEN "detail"
IF cl_chk_act_auth() THEN
CALL i901_b()
ELSE
LET g_action_choice = NULL
END IF
WHEN "output"
IF cl_chk_act_auth() THEN
CALL i901_out()
END IF
WHEN "help"
CALL cl_show_help()
WHEN "exit"
EXIT WHILE
WHEN "controlg"
CALL cl_cmdask()
WHEN "confirm" #確認
IF cl_chk_act_auth() THEN
CALL i901_y_chk() #CALL 原確認的 check 段
IF g_success = "Y" THEN
CALL i901_y_upd() #CALL 原確認的 update 段
END IF
END IF
WHEN "undo_confirm"
IF cl_chk_act_auth() THEN
CALL i901_z()
END IF
WHEN "void"
IF cl_chk_act_auth() THEN
CALL i901_x()
END IF
WHEN "exporttoexcel" #FUN-4B0025
IF cl_chk_act_auth() THEN
CALL cl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(g_voteb),'','')
END IF
#No:FUN-6A0162-------add--------str----
WHEN "related_document" #相關文件
IF cl_chk_act_auth() THEN
IF g_votea.tc_votea01 IS NOT NULL THEN
LET g_doc.column1 = "tc_votea01"
LET g_doc.value1 = g_votea.tc_votea01
CALL cl_doc()
END IF
END IF
#No:FUN-6A0162-------add--------end----
END CASE
END WHILE
END FUNCTION
FUNCTION i901_bp(p_ud)
DEFINE p_ud LIKE type_file.chr1 #No.FUN-680136 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_voteb TO s_voteb.* ATTRIBUTE(COUNT=g_rec_b,UNBUFFERED)
BEFORE DISPLAY
CALL cl_navigator_setting( g_curs_index, g_row_count )
BEFORE ROW
LET l_ac = ARR_CURR()
CALL cl_show_fld_cont() #No:FUN-550037 hmf
ON ACTION insert
LET g_action_choice="insert"
EXIT DISPLAY
ON ACTION query
LET g_action_choice="query"
EXIT DISPLAY
ON ACTION delete
LET g_action_choice="delete"
EXIT DISPLAY
ON ACTION modify
LET g_action_choice="modify"
EXIT DISPLAY
ON ACTION first
CALL i901_fetch('F')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION previous
CALL i901_fetch('P')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION jump
CALL i901_fetch('/')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION next
CALL i901_fetch('N')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION last
CALL i901_fetch('L')
CALL cl_navigator_setting(g_curs_index, g_row_count)
CALL fgl_set_arr_curr(1)
ACCEPT DISPLAY #FUN-530067(smin)
ON ACTION invalid
LET g_action_choice="invalid"
EXIT DISPLAY
ON ACTION reproduce
LET g_action_choice="reproduce"
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
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 確認
ON ACTION confirm
LET g_action_choice="confirm"
EXIT DISPLAY
#@ ON ACTION 取消確認
ON ACTION undo_confirm
LET g_action_choice="undo_confirm"
EXIT DISPLAY
#@ ON ACTION 作廢
ON ACTION void
LET g_action_choice="void"
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 IDLE g_idle_seconds
CALL cl_on_idle()
CONTINUE DISPLAY
ON ACTION about #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION exporttoexcel #FUN-4B0025
LET g_action_choice = 'exporttoexcel'
EXIT DISPLAY
# No:FUN-530067 --start--
AFTER DISPLAY
CONTINUE DISPLAY
# No:FUN-530067 ---end---
ON ACTION controls #No.FUN-6B0032
CALL cl_set_head_visible("","AUTO") #No.FUN-6B0032
ON ACTION related_document #No:FUN-6A0162 相關文件
LET g_action_choice="related_document"
EXIT DISPLAY
END DISPLAY
CALL cl_set_act_visible("accept,cancel", TRUE)
END FUNCTION
- May 05 Thu 2011 16:42
-
TIPTOP GP 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [4fd/per檔]
<?xml version="1.0" encoding="UTF-8" ?>
<Form width="288" lstrtoalltitle="false" lstrtoallitem="false" database_name="ds01" CHECKSUM="-1" spacing="normal" posX="0" posY="0" height="19" percommentheader="" percommentinstruction="" percommentattribute="" lstrtoallcomment="false" percommentschema="" name="cxxi901" fourSTFile="" defaultspacing="true" text="cxxi901" gstVersion="11401" lstrtoalltext="false" percommentlayout="GRID
GRID
HBOX
PAGE
GRID
PAGE
FOLDER
TABLE
GRID
VBOX
LAYOUT
" >
<VBox tag="" posX="0" posY="0" hidden="" style="" name="" >
<PageControl width="287" posX="0" height="6" posY="0" lstrcomment="false" name="folder01" >
<Page lstrtext="false" hidden="--------" imagetype="Image as URL" name="page01" fontPitch="default" text="Main" >
<HBox width="108" tag="" posX="0" height="4" posY="0" hidden="" style="" name="" >
<Grid width="107" posX="0" height="4" posY="0" lstrcomment="false" hidden="--------" name="gr1629" fontPitch="default" scroll="false" >
<Text width="4" lstrtext="false" gridWidth="11" posX="1" height="1" posY="0" sizePolicy="initial" name="text5532" text="UUID" />
<FormField sqlDBName="ds" colName="tc_votea01" fieldId="1" sqlTabName="tc_votea_file" name="tc_votea01" fieldtype="TABLE_COLUMN" >
<ButtonEdit width="20" case="NONE" comment="<^P>Query Item " gridWidth="30" invisible="--------" notNull="true" image="zoom" posX="22" action="controlp" formfieldname="formfield0" height="1" posY="0" autoNext="--------" lstrcomment="false" hidden="--------" imagetype="Select File" verify="--------" sizePolicy="initial" tabIndex="1" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" name="tc_votea01" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="true" scroll="--------" />
</FormField>
<Text width="5" lstrtext="false" gridWidth="12" posX="1" height="1" posY="1" hrecindex="-1" sizePolicy="initial" name="text26" text="Title" />
<FormField sqlDBName="ds" colName="tc_votea02" fieldId="2" sqlTabName="tc_votea_file" name="tc_votea02" fieldtype="TABLE_COLUMN" >
<Edit width="20" case="NONE" gridWidth="30" invisible="--------" notNull="--------" posX="22" formfieldname="formfield2" height="1" posY="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="2" zeroFill="--------" lstrtitle="false" name="tc_votea02" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<Text width="6" lstrtext="false" gridWidth="13" posX="1" height="1" posY="2" sizePolicy="initial" name="text5534" text="Status" />
<FormField sqlDBName="ds" colName="tc_votea03" sqlTabName="tc_votea_file" fieldId="3" name="tc_votea03" fieldtype="TABLE_COLUMN" >
<ComboBox width="20" case="NONE" comment="Enter RELEASED/UNDER_REVISION" gridWidth="10" notNull="true" posX="22" formfieldname="formfield3" height="1" posY="2" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="3" data_type="VARCHAR" lstrtitle="false" name="tc_votea03" century="R" color="black" fontPitch="default" noEntry="--------" queryEditable="true" required="true" >
<Item lstrtext="" name="U" text="UNDER_REVISION" />
<Item lstrtext="" name="R" text="RELEASED" />
</ComboBox>
</FormField>
<FormField colName="imgmksg" fieldId="2" sqlTabName="formonly" name="formonly.imgmksg" fieldtype="FORM_ONLY" >
<Image unitHeight="2 CHARACTERS" width="10" gridWidth="7" posX="67" formfieldname="formfieldname" height="3" posY="0" autoScale="true" lstrcomment="false" hidden="--------" imagetype="Image as URL" tabIndex="99" lstrtitle="false" name="imgmksg" unitWidth="7 CHARACTERS" gridHeight="2" noEntry="true" stretch="none" />
</FormField>
<Text width="7" lstrtext="false" gridWidth="7" posX="44" posY="0" height="1" sizePolicy="initial" name="text16320" text="Confirm" />
<FormField sqlDBName="ds" colName="tc_voteaconf" sqlTabName="tc_votea_file" fieldId="30" name="tc_voteaconf" fieldtype="TABLE_COLUMN" >
<ComboBox width="13" case="NONE" gridWidth="10" notNull="--------" posX="52" formfieldname="formfield100" height="1" posY="0" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="100" data_type="VARCHAR" lstrtitle="false" name="tc_voteaconf" century="R" color="black" fontPitch="default" noEntry="true" queryEditable="--------" required="--------" >
<Item lstrtext="" name="N" text="UnConfirmed" />
<Item lstrtext="" name="Y" text="Confirmed" />
<Item lstrtext="" name="X" text="Void" />
</ComboBox>
</FormField>
</Grid>
</HBox>
</Page>
<Page lstrtext="false" hidden="--------" imagetype="Image as URL" name="info" fontPitch="default" text="Info" >
<Grid width="73" posX="0" height="3" posY="0" lstrcomment="false" hidden="--------" name="gr1631" fontPitch="default" scroll="false" >
<Text width="12" lstrtext="false" gridWidth="12" posX="1" height="1" posY="0" sizePolicy="initial" name="text5539" text="Record Owner" />
<FormField sqlDBName="ds" colName="tc_voteauser" fieldId="4" sqlTabName="tc_votea_file" name="tc_voteauser" fieldtype="TABLE_COLUMN" >
<Edit width="10" case="NONE" gridWidth="10" invisible="--------" notNull="--------" posX="22" formfieldname="formfield4" height="1" posY="0" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="4" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" name="tc_voteauser" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<Text width="16" lstrtext="false" gridWidth="16" posX="35" height="1" posY="0" sizePolicy="initial" name="text5540" text="Last Modified by" />
<FormField sqlDBName="ds" colName="tc_voteamodu" fieldId="5" sqlTabName="tc_votea_file" name="tc_voteamodu" fieldtype="TABLE_COLUMN" >
<Edit width="10" case="NONE" gridWidth="10" invisible="--------" notNull="--------" posX="55" formfieldname="formfield5" height="1" posY="0" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="5" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" name="tc_voteamodu" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<Text width="15" lstrtext="false" gridWidth="15" posX="35" height="1" posY="1" sizePolicy="initial" name="text5541" text="Data Valid Code" />
<FormField sqlDBName="ds" colName="tc_voteaacti" fieldId="6" sqlTabName="tc_votea_file" name="tc_voteaacti" fieldtype="TABLE_COLUMN" >
<Edit width="10" case="NONE" gridWidth="10" invisible="--------" notNull="--------" posX="55" formfieldname="formfield6" height="1" posY="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="6" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" name="tc_voteaacti" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<Text width="18" lstrtext="false" gridWidth="18" posX="1" height="1" posY="1" sizePolicy="initial" name="text5543" text="Create/Modify Date" />
<FormField sqlDBName="ds" colName="tc_voteadate" fieldId="7" sqlTabName="tc_votea_file" name="tc_voteadate" fieldtype="TABLE_COLUMN" >
<DateEdit width="12" gridWidth="12" notNull="--------" posX="22" formfieldname="formfield7" height="1" posY="1" autoNext="--------" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="7" data_type="DATE" lstrtitle="false" name="tc_voteadate" century="R" color="black" fontPitch="default" noEntry="true" required="--------" />
</FormField>
</Grid>
</Page>
</PageControl>
<Table width="287" wantFixedPageSize="--------" unhidableColumns="--------" posX="0" height="8" posY="6" lstrcomment="false" unmovableColumns="--------" hidden="--------" unsizableColumns="--------" totalRows="6" name="s_voteb" fontPitch="default" tabName="s_voteb" tabName1="s_voteb" unsortableColumns="--------" >
<TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_voteb02" fieldId="12" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="12" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_voteb02" text="tc_voteb02" fieldtype="TABLE_COLUMN" >
<Edit width="20" case="NONE" comment="tc_voteb02" invisible="--------" notNull="true" height="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" zeroFill="--------" data_type="SMALLINT" lstrtitle="false" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="true" scroll="--------" />
</TableColumn>
<TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_voteb03" fieldId="13" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="13" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_voteb03" text="tc_voteb03" fieldtype="TABLE_COLUMN" >
<Edit width="20" case="NONE" comment="tc_voteb03" invisible="--------" notNull="--------" height="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="--------" scroll="--------" />
</TableColumn>
<TableColumn width="20" lstrtext="false" sqlDBName="ds" height="1" colName="tc_voteb04" fieldId="14" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="14" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_voteb04" text="tc_voteb04" fieldtype="TABLE_COLUMN" >
<Edit width="20" case="NONE" comment="tc_voteb04" invisible="--------" notNull="--------" height="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="--------" scroll="--------" />
</TableColumn>
<TableColumn width="10" lstrtext="false" sqlDBName="ds" height="1" colName="tc_votebacti" fieldId="15" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="15" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_votebacti" text="tc_votebacti" fieldtype="TABLE_COLUMN" >
<CheckBox width="17" lstrtext="false" notNull="true" height="1" lstrcomment="false" hidden="--------" sizePolicy="initial" data_type="VARCHAR" lstrtitle="false" fontPitch="default" valueUnchecked="N" noEntry="--------" required="true" text="" valueChecked="Y" />
</TableColumn>
<TableColumn width="10" lstrtext="false" sqlDBName="ds" height="1" colName="tc_votebuser" fieldId="16" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="16" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_votebuser" text="tc_votebuser" fieldtype="TABLE_COLUMN" >
<Edit width="13" case="NONE" invisible="--------" notNull="--------" height="1" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" zeroFill="--------" data_type="VARCHAR" lstrtitle="false" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="--------" scroll="--------" />
</TableColumn>
<TableColumn width="10" lstrtext="false" sqlDBName="ds" colName="tc_votebmodu" fieldId="17" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="16" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_votebmodu" flag_text_changed="FALSE" text="tc_votebmodu" fieldtype="TABLE_COLUMN" >
<Edit width="17" case="NONE" justify="none" invisible="--------" notNull="--------" autoNext="--------" lstrcomment="false" colorCondition="black" hidden="--------" verify="--------" sizePolicy="initial" data_type="VARCHAR" reverse="--------" century="R" color="black" fontPitch="default" noEntry="--------" required="--------" scroll="--------" />
</TableColumn>
<TableColumn width="15" lstrtext="false" sqlDBName="ds" colName="tc_votebdate" fieldId="18" unsortable="--------" sqlTabName="tc_voteb_file" tabIndex="17" unsizable="--------" unhidable="--------" unmovable="--------" name="tc_votebdate" flag_text_changed="FALSE" text="tc_votebdate" fieldtype="TABLE_COLUMN" >
<DateEdit justify="none" notNull="--------" lstrcomment="false" colorCondition="black" hidden="--------" sizePolicy="initial" data_type="DATE" century="R" color="black" fontPitch="default" noEntry="--------" required="--------" />
</TableColumn>
</Table>
<Grid width="287" posX="0" height="3" posY="14" lstrcomment="false" hidden="--------" name="gr1632" fontPitch="default" scroll="false" >
<HLine width="10" gridWidth="10" posX="2" height="1" posY="2" name="hl444" />
<Text width="4" lstrtext="false" gridWidth="4" posX="13" height="1" posY="2" sizePolicy="initial" name="text5554" text="Rows" />
<FormField colName="cnt" fieldId="19" sqlTabName="formonly" name="formonly.cnt" fieldtype="FORM_ONLY" >
<Edit width="6" case="NONE" gridWidth="6" invisible="--------" notNull="--------" posX="19" formfieldname="formfield19" height="1" posY="2" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="18" zeroFill="--------" data_type="SMALLINT" lstrtitle="false" name="cnt" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<Text width="1" lstrtext="false" gridWidth="1" posX="27" height="1" posY="2" sizePolicy="initial" name="text5555" text="/" />
<FormField colName="cn2" fieldId="37" sqlTabName="formonly" name="formonly.cn2" fieldtype="FORM_ONLY" >
<Edit width="6" case="NONE" gridWidth="6" invisible="--------" notNull="--------" posX="30" formfieldname="formfield20" height="1" posY="2" autoNext="--------" lstrcomment="false" hidden="--------" verify="--------" sizePolicy="initial" tabIndex="19" zeroFill="--------" data_type="SMALLINT" lstrtitle="false" name="cn2" reverse="--------" century="R" color="black" fontPitch="default" noEntry="true" required="--------" scroll="--------" />
</FormField>
<HLine width="10" gridWidth="10" posX="38" height="1" posY="2" name="hl445" />
</Grid>
</VBox>
<RecordView SRType="default" fromTable="true" name="s_voteb" tableKey="tb1" >
<Link colName="tc_voteb02" fromTable="true" colKey="Col2" />
<Link colName="tc_voteb03" fromTable="true" colKey="Col3" />
<Link colName="tc_voteb04" fromTable="true" colKey="Col4" />
<Link colName="tc_votebacti" fromTable="true" colKey="Col5" />
<Link colName="tc_votebuser" fromTable="true" colKey="Col6" />
<Link colName="tc_votebmodu" fromTable="true" colKey="Col7" />
<Link colName="tc_votebdate" fromTable="true" colKey="Col8" />
</RecordView>
</Form>
- May 05 Thu 2011 16:42
-
TIPTOP GP 5.x 雙檔維護作業範例 - 職工福利委員會公告資料維護作業 [執行畫面]
- May 05 Thu 2011 16:42
-
TIPTOP GP 資料處理批次更新作業範例 - 集團料件主檔BOM主檔合併刪除作業 [4GL檔]
# Prog. Version..: '5.00.03-07.09.05(00004)' #
# Pattern name...: cimp901.4gl
# Descriptions...: ???辣銝餅?/BOM銝餅??蔥?芷雿平
# Date & Author..: 10/12/28 By Jeffrey Hu
DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
#TQC-6B0191
DEFINE tm RECORD
wc STRING,
moddate LIKE type_file.dat, #No.FUN-680137 DATE
userid LIKE type_file.chr10,
type LIKE type_file.chr1
END RECORD,
g_change_lang LIKE type_file.chr1 #?臬??隤???
DEFINE g_sql STRING
MAIN
DEFINE l_flag LIKE type_file.num5
OPTIONS
FORM LINE FIRST + 2,
MESSAGE LINE LAST,
PROMPT LINE LAST,
INPUT NO WRAP
DEFER INTERRUPT # Supress DEL key function
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
IF cl_null(g_bgjob) THEN
LET g_bgjob = "N"
END IF
CALL cl_used(g_prog,g_time,1) RETURNING g_time
ERROR ""
LET g_success = 'Y'
WHILE TRUE
IF g_bgjob = "N" THEN
CALL p001_tm() # ?恍璇辣頛詨 ?批
IF cl_sure(18,20) THEN
BEGIN WORK
LET g_success = 'Y'
CALL exec_sp() # 鞈???蝔?
CALL s_showmsg() #No.FUN-710025
IF g_success = 'Y' THEN
COMMIT WORK
MESSAGE('?祆活?瑁?雿平蝯?==> 撌唇???')
CALL cl_end2(1) RETURNING l_flag
ELSE
ROLLBACK WORK
MESSAGE('?祆活?瑁?雿平蝯?==> ?∩遙雿????')
CALL cl_end2(2) RETURNING l_flag
END IF
IF l_flag THEN
CONTINUE WHILE
ELSE
CLOSE WINDOW p001_w
EXIT WHILE
END IF
ELSE
CONTINUE WHILE
END IF
CLOSE WINDOW p001_w
ELSE
BEGIN WORK
LET g_success = 'Y'
CALL exec_sp()
CALL s_showmsg() #No.FUN-710025
IF g_success = "Y" THEN
COMMIT WORK
MESSAGE('?祆活?瑁?雿平蝯?==> 撌唇???')
ELSE
ROLLBACK WORK
MESSAGE('?祆活?瑁?雿平蝯?==> ?∩遙雿????')
END IF
EXIT WHILE
MESSAGE('')
END IF
MESSAGE('')
END WHILE
CALL cl_used(g_prog,g_time,2) RETURNING g_time
END MAIN
FUNCTION p001_tm()
DEFINE p_row,p_col LIKE type_file.num5
DEFINE lc_cmd LIKE type_file.chr1000
IF s_shut(0) THEN RETURN END IF
LET p_row = 3 LET p_col = 15
OPEN WINDOW p001_w AT p_row,p_col WITH FORM "cim/42f/cimp901"
ATTRIBUTE (STYLE = g_win_style CLIPPED)
CALL cl_ui_init()
CALL cl_opmsg('z')
CALL cl_set_comp_entry("userid,moddate",FALSE)
MESSAGE('')
WHILE TRUE
CLEAR FORM
INITIALIZE tm.* TO NULL # Default condition
IF cl_null(tm.type) THEN
LET tm.type = '1'
END IF
IF cl_null(tm.moddate) THEN
LET tm.moddate = TODAY
END IF
IF cl_null(tm.userid) THEN
LET tm.userid = g_user
END IF
CONSTRUCT BY NAME tm.wc ON ima01
BEFORE CONSTRUCT
CALL cl_qbe_init()
ON ACTION controlp
CASE
WHEN INFIELD(ima01) #?辣蝺刻?
CALL cl_init_qry_var()
LET g_qryparam.form = "q_ima"
LET g_qryparam.state = "c"
CALL cl_create_qry() RETURNING g_qryparam.multiret
DISPLAY g_qryparam.multiret TO ima01
NEXT FIELD ima01
END CASE
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
ON ACTION locale #genero
LET g_change_lang = TRUE
EXIT CONSTRUCT
ON ACTION exit #????篇enero
LET INT_FLAG = 1
EXIT CONSTRUCT
ON ACTION qbe_select
CALL cl_qbe_select()
END CONSTRUCT
IF g_change_lang THEN
LET g_change_lang = FALSE
CALL cl_dynamic_locale()
CALL cl_show_fld_cont() #FUN-550037(smin)
CONTINUE WHILE
END IF
IF INT_FLAG THEN
LET INT_FLAG = 0
CLOSE WINDOW p001_w
EXIT PROGRAM
END IF
IF tm.wc = " 1=1" THEN
CALL cl_err('','9046',0)
CONTINUE WHILE
END IF
LET g_bgjob = 'N'
INPUT BY NAME tm.moddate,tm.userid,tm.type WITHOUT DEFAULTS
AFTER FIELD moddate
IF tm.moddate IS NULL THEN NEXT FIELD tm.moddate END IF
AFTER FIELD userid
IF tm.userid IS NULL THEN NEXT FIELD userid 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 #MOD-4C0121
CALL cl_about() #MOD-4C0121
ON ACTION help #MOD-4C0121
CALL cl_show_help() #MOD-4C0121
ON ACTION exit #????篇enero
LET INT_FLAG = 1
EXIT INPUT
ON ACTION qbe_save
CALL cl_qbe_save()
ON ACTION locale
LET g_change_lang = TRUE
EXIT INPUT
END INPUT
EXIT WHILE
END WHILE
END FUNCTION
FUNCTION exec_sp()
DEFINE l_sql STRING
DEFINE l_cnt LIKE type_file.num10
DEFINE l_ima01 LIKE ima_file.ima01
DEFINE l_sp1 STRING
DEFINE l_sp2 STRING
LET l_sp1 = "call DS.DEL_BOM(?)"
LET l_sp2 = "call DS.DEL_ITEM(?)"
PREPARE exec_sp1 FROM l_sp1
IF SQLCA.SQLCODE THEN
CALL cl_err('prepare exec_sp1',SQLCA.SQLCODE,1)
LET g_success = 'N'
RETURN
END IF
PREPARE exec_sp2 FROM l_sp2
IF SQLCA.SQLCODE THEN
CALL cl_err('prepare exec_sp2',SQLCA.SQLCODE,1)
LET g_success = 'N'
RETURN
END IF
LET l_sql=" SELECT DISTINCT ima01 ",
" FROM ima_file",
" WHERE ",tm.wc CLIPPED,
" ORDER BY 1 "
PREPARE item_cs_p FROM l_sql
IF SQLCA.sqlcode THEN
CALL cl_err('prepare item_cs_p',SQLCA.sqlcode,1)
LET g_success = 'N'
RETURN
END IF
DECLARE item_cs CURSOR FOR item_cs_p
CALL s_showmsg_init() #No.FUN-710025
FOREACH item_cs INTO l_ima01
IF SQLCA.SQLCODE THEN
CALL s_errmsg('','','prepare FOREACH',SQLCA.SQLCODE,1)
LET g_success = 'N'
RETURN
END IF
CASE tm.type
WHEN "1"
EXECUTE exec_sp1 USING l_ima01 IN
WHEN "2"
EXECUTE exec_sp2 USING l_ima01 IN
WHEN "3"
EXECUTE exec_sp1 USING l_ima01 IN
EXECUTE exec_sp2 USING l_ima01 IN
OTHERWISE
LET g_success='N'
RETURN
END CASE
IF SQLCA.SQLCODE THEN
CALL s_errmsg('','','exec exec_sp',SQLCA.SQLCODE,1)
LET g_success = 'N'
RETURN
EXIT FOREACH
END IF
END FOREACH
END FUNCTION
- May 05 Thu 2011 16:41
-
TIPTOP GP 資料處理批次更新作業範例 - 集團料件主檔BOM主檔合併刪除作業 [4fd/per檔]
<?xml version="1.0" encoding="UTF-8" ?>
<Form width="49" lstrtoalltitle="false" lstrtoallitem="false" database_name="ds" CHECKSUM="-1" spacing="normal" posX="0" posY="0" height="11" percommentheader="" percommentinstruction="" percommentattribute="" lstrtoallcomment="false" percommentschema="" fourSTFile="" name="cimp901" defaultspacing="true" text="cimp901" gstVersion="11401" percommentlayout="GRID
VBOX
LAYOUT
" lstrtoalltext="false" >
<VBox tag="" posX="0" posY="0" hidden="" style="" name="" >
<Grid width="46" posX="0" posY="0" height="11" lstrcomment="false" hidden="--------" name="gr1" fontPitch="default" scroll="false" >
<Group width="45" lstrtext="false" gridWidth="46" posX="0" posY="0" height="6" lstrcomment="false" hidden="--------" name="group01" fontPitch="default" text="QBE" gridHeight="4" gridChildrenInParent="--------" >
<Text width="5" lstrtext="false" gridWidth="5" posX="1" posY="1" height="1" sizePolicy="initial" name="text1" text="Item#" />
<FormField sqlDBName="ds" colName="ima01" fieldId="0" sqlTabName="ima_file" name="ima01" fieldtype="TABLE_COLUMN" >
<ButtonEdit width="30" comment="Query Item#" case="NONE" gridWidth="30" invisible="--------" notNull="true" posX="14" image="zoom" height="1" posY="1" action="controlp" formfieldname="formfield0" lstrcomment="false" autoNext="--------" imagetype="Select File" hidden="--------" verify="--------" tabIndex="1" sizePolicy="initial" zeroFill="--------" name="ima01" data_type="VARCHAR" lstrtitle="false" reverse="--------" fontPitch="default" color="black" century="R" required="true" noEntry="--------" scroll="--------" />
</FormField>
<Text width="12" lstrtext="false" gridWidth="10" posX="1" posY="2" height="1" sizePolicy="initial" name="text2" text="Modify Date#" />
<FormField colName="moddate" sqlTabName="formonly" fieldtype="FORM_ONLY" >
<DateEdit width="10" justify="none" notNull="--------" posX="14" posY="2" height="1" formfieldname="formfield3" lstrcomment="false" colorCondition="black" hidden="--------" tabIndex="3" sizePolicy="initial" name="moddate" data_type="DATE" fontPitch="default" color="black" century="R" required="--------" noEntry="--------" />
</FormField>
<Text width="7" posX="1" posY="3" height="1" name="text3" text="UserID#" />
<FormField colName="userid" sqlTabName="formonly" fieldtype="FORM_ONLY" >
<Edit width="10" case="NONE" justify="none" invisible="--------" notNull="--------" posX="14" posY="3" height="1" formfieldname="formfield4" autoNext="--------" lstrcomment="false" colorCondition="black" hidden="--------" verify="--------" tabIndex="4" sizePolicy="initial" name="userid" data_type="VARCHAR" reverse="--------" fontPitch="default" color="black" century="R" required="--------" noEntry="--------" scroll="--------" />
</FormField>
</Group>
<Group width="45" lstrtext="false" gridWidth="46" posX="0" posY="7" height="3" lstrcomment="false" hidden="--------" name="group02" fontPitch="default" text="Source" gridHeight="3" gridChildrenInParent="--------" >
<FormField colName="type" fieldId="2" sqlTabName="formonly" name="formonly.type" fieldtype="FORM_ONLY" >
<RadioGroup width="41" gridWidth="12" notNull="true" posX="2" defaultValue="1" height="1" posY="1" formfieldname="formfield2" lstrcomment="false" orientation="horizontal" hidden="--------" tabIndex="2" sizePolicy="initial" name="type" lstrtitle="false" fontPitch="default" century="R" required="true" noEntry="--------" >
<Item lstrtext="" name="1" text="Del BOM" />
<Item lstrtext="" name="2" text="Del Item" />
<Item lstrtext="" name="3" text="Del BOM Item" />
</RadioGroup>
</FormField>
</Group>
</Grid>
</VBox>
</Form>
- May 05 Thu 2011 16:41
-
TIPTOP GP 資料處理批次更新作業範例 - 集團料件主檔BOM主檔合併刪除作業 [執行畫面]
- May 05 Thu 2011 16:40
-
TIPTOP GP 報表列印作業範例 - 集團每月供單超領退料明細表 [執行畫面]
- May 05 Thu 2011 16:40
-
TIPTOP GP 報表列印作業範例 - 集團每月供單超領退料明細表 [4fd/per檔]
<?xml version="1.0" encoding="UTF-8" ?>
<Form width="93" lstrtoalltitle="false" lstrtoallitem="false" database_name="formonly" CHECKSUM="-1" spacing="normal" posX="0" posY="0" height="15" percommentheader="" percommentinstruction="" percommentattribute="" lstrtoallcomment="false" percommentschema="" name="cbmr901" fourSTFile="" defaultspacing="true" text="cxmr661" browserStatus="true" gstVersion="11401" lstrtoalltext="false" percommentlayout="GRID
GRID
VBOX
LAYOUT
" >
<VBox tag="" posX="0" posY="0" hidden="" style="" name="" >
<Grid width="90" posX="0" height="12" posY="0" lstrcomment="false" hidden="--------" name="gr1" fontPitch="default" scroll="false" >
<Group width="88" lstrtext="false" gridWidth="90" posX="1" height="10" posY="0" lstrcomment="false" hidden="--------" name="group02" fontPitch="default" gridHeight="6" text="INPUT" gridChildrenInParent="--------" >
<FormField colName="cb_plant" fieldId="6" sqlTabName="formonly" name="formonly.cb_plant" fieldtype="FORM_ONLY" >
<ComboBox width="20" case="NONE" gridWidth="20" notNull="--------" posX="9" formfieldname="formfield6" height="1" posY="1" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="1" lstrtitle="false" name="cb_plant" century="R" color="black" fontPitch="default" noEntry="--------" queryEditable="true" required="--------" >
<Item lstrtext="false" name="DS01" text="DS01" />
<Item lstrtext="false" name="DS02" text="DS02" />
<Item lstrtext="false" name="DS03" text="DS03" />
<Item lstrtext="false" name="DS04" text="DS04" />
<Item lstrtext="false" name="DS05" text="DS05" />
<Item lstrtext="false" name="DS06" text="DS06" />
<Item lstrtext="false" name="DS07" text="DS07" />
<Item lstrtext="false" name="DS08" text="DS08" />
<Item lstrtext="false" name="DS09" text="DS09" />
<Item lstrtext="false" name="DS14" text="DS14" />
<Item lstrtext="false" name="DS15" text="DS15" />
</ComboBox>
</FormField>
<FormField colName="cb_year" fieldId="7" sqlTabName="formonly" name="formonly.cb_year" fieldtype="FORM_ONLY" >
<ComboBox width="20" case="NONE" gridWidth="21" notNull="--------" posX="9" formfieldname="formfield7" height="1" posY="3" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="2" lstrtitle="false" name="cb_year" century="R" color="black" fontPitch="default" noEntry="--------" queryEditable="true" required="--------" >
<Item lstrtext="false" name="2008" text="2008" />
<Item lstrtext="false" name="2009" text="2009" />
<Item lstrtext="false" name="2010" text="2010" />
<Item lstrtext="false" name="2011" text="2011" />
<Item lstrtext="false" name="2012" text="2012" />
<Item lstrtext="false" name="2013" text="2013" />
</ComboBox>
</FormField>
<FormField colName="cb_month" fieldId="8" sqlTabName="formonly" name="formonly.cb_month" fieldtype="FORM_ONLY" >
<ComboBox width="20" case="NONE" gridWidth="22" notNull="--------" posX="9" formfieldname="formfield8" height="1" posY="5" lstrcomment="false" hidden="--------" sizePolicy="initial" tabIndex="3" lstrtitle="false" name="cb_month" century="R" color="black" fontPitch="default" noEntry="--------" queryEditable="true" required="--------" >
<Item lstrtext="false" name="1" text="1" />
<Item lstrtext="false" name="2" text="2" />
<Item lstrtext="false" name="3" text="3" />
<Item lstrtext="false" name="4" text="4" />
<Item lstrtext="false" name="5" text="5" />
<Item lstrtext="false" name="6" text="6" />
<Item lstrtext="false" name="7" text="7" />
<Item lstrtext="false" name="8" text="8" />
<Item lstrtext="false" name="9" text="9" />
<Item lstrtext="false" name="10" text="10" />
<Item lstrtext="false" name="11" text="11" />
<Item lstrtext="false" name="12" text="12" />
</ComboBox>
</FormField>
<Text width="5" posX="1" posY="1" height="1" name="text1" text="Plant" />
<Text width="4" posX="1" posY="3" height="1" name="text2" text="Year" />
<Text width="5" posX="1" posY="5" height="1" name="text3" text="Month" />
</Group>
</Grid>
<Grid width="90" posX="0" height="1" posY="12" lstrcomment="false" hidden="--------" name="gr2" fontPitch="default" scroll="false" />
</VBox>
</Form>
- May 05 Thu 2011 16:39
-
TIPTOP GP 報表列印作業範例 - 集團每月供單超領退料明細表 [4GL檔]
# 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


