




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、#tiptop新手開發神器單檔多欄開發模板#單檔模板-多欄維護檔#Alfa 精心制作 made in china 296066606DATABASE ds GLOBALS "././config/top.global" DEFINE g_tc_omg DYNAMIC ARRAY OF RECORD #程式變數(Program Variables) tc_omg01 LIKE tc_omg_file.tc_omg01, tc_omg02 LIKE tc_omg_file.tc_omg02, tc_omg03 LIKE tc_omg_file.tc_omg03, tc_omg0
2、4 LIKE tc_omg_file.tc_omg04, tc_omg05 LIKE tc_omg_file.tc_omg05, tc_omg06 LIKE tc_omg_file.tc_omg06, tc_omg07 LIKE tc_omg_file.tc_omg07, tc_omg08 LIKE tc_omg_file.tc_omg08, tc_omg09 LIKE tc_omg_file.tc_omg09, tc_omg10 LIKE tc_omg_file.tc_omg10, tc_omgacti LIKE tc_omg_file.tc_omgacti END RECORD, g_tc
3、_omg_t DYNAMIC ARRAY OF RECORD #程式變數(Program Variables) tc_omg01 LIKE tc_omg_file.tc_omg01, tc_omg02 LIKE tc_omg_file.tc_omg02, tc_omg03 LIKE tc_omg_file.tc_omg03, tc_omg04 LIKE tc_omg_file.tc_omg04, tc_omg05 LIKE tc_omg_file.tc_omg05, tc_omg06 LIKE tc_omg_file.tc_omg06, tc_omg07 LIKE tc_omg_file.tc
4、_omg07, tc_omg08 LIKE tc_omg_file.tc_omg08, tc_omg09 LIKE tc_omg_file.tc_omg09, tc_omg10 LIKE tc_omg_file.tc_omg10, tc_omgacti LIKE tc_omg_file.tc_omgacti END RECORD, b_tc_omg RECORD LIKE tc_omg_file.*, g_wc2,g_sql LIKE type_file.chr1000, #No.FUN-680102CHAR(300), g_rec_b LIKE type_file.num5, #單身筆數 #
5、No.FUN-680102 SMALLINT l_ac LIKE type_file.num5 #目前處理的ARRAY CNT #No.FUN-680102 SMALLINT DEFINE g_forupd_sql STRING #SELECT . FOR UPDATE SQL DEFINE g_cnt LIKE t ype_file.num10 #No.FUN-680102 INTEGERDEFINE g_i LIKE type_file.num5 #count/index for any purpose #No.FUN-680102 SMALLINTDEFINE g_before_inpu
6、t_done LIKE type_file.num5 #FUN-570110 #No.FUN-680102 SMALLINT#主程式開始MAINDEFINE p_row,p_col LIKE type_file.num5 #No.FUN-680102 SMALLINT OPTIONS #改變一些系統預設值 INPUT NO WRAP #輸入的方式: 不打轉 DEFER INTERRUPT #擷取中斷鍵, 由程式處理 IF (NOT cl_user() THEN EXIT PROGRAM END IF WHENEVER ERROR CALL cl_err_msg_log #紀錄錯誤訊息 IF (
7、NOT cl_setup("CSF") THEN #程序執行的基本設定 EXIT PROGRAM #如果模組不對,程序仍然可以執行,但是action則不能顯示系統設定的中文描述 END IF CALL cl_used(g_prog,g_time,1) RETURNING g_time #計算使用時間 (進入時間) #No.MOD-580088 HCN 20050818 #No.FUN-6A0081 LET p_row = 4 LET p_col = 15 #界面的大小 方位 OPEN WINDOW i535_w AT p_row,p_col WITH FORM "
8、csf/42f/csfi535" ATTRIBUTE (STYLE = g_win_style CLIPPED) #No.FUN-580092 HCN CALL cl_ui_init() #用途:程序設定初始化 語言! #LET g_wc2 = '1=1' #讓程序進入就查詢出所有的資料 #CALL i527_b_fill(g_wc2) CALL i535_menu() #呼叫菜單 CLOSE WINDOW i535_w #結束畫面 CALL cl_used(g_prog,g_time,2) RETURNING g_time #計算使用時間 (退出使間) #No.MO
9、D-580088 HCN 20050818 #No.FUN-6A0081 END MAIN FUNCTION i535_menu() #主程序驅動DEFINE l_cmd LIKE type_file.chr1000 #No.FUN-780056 WHILE TRUE CALL i535_bp("G") #GP 按鈕驅動 CASE g_action_choice #按鈕 WHEN "query" IF cl_chk_act_auth() THEN CALL i535_q() #呼叫查詢 END IF WHEN "detail" IF
10、cl_chk_act_auth() THEN CALL i535_b() #呼叫單身 ELSE LET g_action_choice = NULL END IF WHEN "help" CALL cl_show_help() #呼叫幫助 WHEN "exit" EXIT WHILE #退出程序 WHEN "controlg" CALL cl_cmdask() #Ctlr + G WHEN "related_document" #相關文件 IF cl_chk_act_auth() THEN IF g_tc_xga.
11、tc_xga01 IS NOT NULL THEN LET g_doc.column1 = "tc_xga01" LET g_doc.value1 = g_tc_xga.tc_xga01 CALL cl_doc() END IF END IF WHEN "exporttoexcel" #匯出excel IF cl_chk_act_auth() THEN CALL cl_export_to_excel(ui.Interface.getRootNode(),base.TypeInfo.create(g_tc_omg),'',''
12、;) END IF END CASE END WHILEEND FUNCTION FUNCTION i535_q() #查詢函數 CALL i535_b_askkey()END FUNCTIONFUNCTION i535_b_askkey() #查詢函數 CLEAR FORM CALL g_tc_omg.clear() CONSTRUCT g_wc2 ON tc_omg01,tc_omg02,tc_omg03,tc_omg04,tc_omg05,tc_omg07,tc_omg10,tc_omgacti #允許在查詢時輸入作為查詢條件的欄位 FROM s_tc_omg1.tc_omg01,s_t
13、c_omg1.tc_omg02,s_tc_omg1.tc_omg03,s_tc_omg1.tc_omg04, s_tc_omg1.tc_omg05,s_tc_omg1.tc_omg07,s_tc_omg1.tc_omg10,s_tc_omg1.tc_omgacti #對應畫面黨的欄位 BEFORE CONSTRUCT CALL cl_qbe_init() #預設QBE 及g_qbe_code 的值 ON ACTION CONTROLP #程序開窗-CONSTRUCT模式 CASE WHEN INFIELD(tc_obk01) CALL cl_init_qry_var() LET g_qrypa
14、ram.form = "q_occ" LET g_qryparam.state = "c" #多選 CALL cl_create_qry() RETURNING g_qryparam.multiret DISPLAY g_qryparam.multiret TO tc_obk01 NEXT FIELD tc_obk01 END CASE ON IDLE g_idle_seconds CALL cl_on_idle() #在ON IDLE 時的處理 CONTINUE CONSTRUCT ON ACTION about #MOD-4C0121 CALL cl
15、_about() #程序信息 ON ACTION help #MOD-4C0121 CALL cl_show_help() #顯示程序的說明檔案 ON ACTION controlg #MOD-4C0121 CALL cl_cmdask() #詢問用戶欲執行的程序,并執行之 ON ACTION qbe_select #條件查詢 CALL cl_qbe_select() ON ACTION qbe_save #條件存儲 CALL cl_qbe_save() #No.FUN-580031 -end- HCN END CONSTRUCT #LET g_wc2 = g_wc2 CLIPPED,cl_g
16、et_extra_cond('tc_omguser','tc_omggrup') #權限的檢查 IF INT_FLAG THEN LET INT_FLAG = 0 LET g_wc2 = NULL RETURN END IF CALL i535_b_fill(g_wc2) END FUNCTIONFUNCTION i535_b_fill(p_wc2) #BODY FILL UP欄位 查詢DEFINE p_wc2 LIKE type_file.chr1000 LET g_sql = "SELECT tc_omg01,tc_omg02,tc_omg03,t
17、c_omg04,tc_omg05,tc_omg07,tc_omg10,tc_omgacti", #FUN-4B0060 " FROM tc_omg_file ", " WHERE ", p_wc2 CLIPPED, #單身 " ORDER BY 1" PREPARE i535_pb FROM g_sql DECLARE tc_omg_curs CURSOR FOR i535_pb CALL g_tc_omg.clear() LET g_cnt = 1 MESSAGE "Searching!" FOREAC
18、H tc_omg_curs INTO g_tc_omgg_cnt.* #單身 ARRAY 填充 IF SQLCA.SQLCODE THEN CALL CL_ERR('FOREACH:',SQLCA.SQLCODE,1) EXIT FOREACH END IF LET g_cnt = g_cnt + 1 #筆數+1 循環 IF g_cnt > g_max_rec THEN #超過系統參數設定最大值則停止循環,并顯示當前 CALL cl_err( '', 9035, 0 ) EXIT FOREACH END IF END FOREACH CALL g_tc_o
19、mg.deleteElement(g_cnt) MESSAGE "" LET g_rec_b = g_cnt-1 DISPLAY g_rec_b TO FORMONLY.cn2 #顯示 LET g_cnt = 0 END FUNCTION FUNCTION i535_b() #維護單身的資料DEFINE l_ac_t LIKE type_file.num5, #未取消的ARRAY CNT l_n LIKE type_file.num5, #檢查重複用 l_lock_sw LIKE type_file.chr1, #單身鎖住否 p_cmd LIKE type_file.chr
20、1, #處理狀態 l_allow_insert LIKE type_file.chr1, #可新增否 l_allow_delete LIKE type_file.chr1 #可刪除否 IF s_shut(0) THEN RETURN END IF CALL cl_opmsg('b') #宣告這是B LET g_action_choice = "" #讓按鈕等與 LET l_allow_insert = cl_detail_input_auth('insert') LET l_allow_delete = cl_detail_input_aut
21、h('delete') LET g_forupd_sql = "SELECT tc_omg01,tc_omg02,tc_omg03,tc_omg04,tc_omg05,tc_omg07,tc_omg10,tc_omgacti", #FUN-4B0060 " FROM tc_omg_file WHERE tc_omg01= ? FOR UPDATE" LET g_forupd_sql = cl_forupd_sql(g_forupd_sql) DECLARE i535_bcl CURSOR FROM g_forupd_sql # LOCK
22、CURSOR INPUT ARRAY g_tc_omg WITHOUT DEFAULTS FROM s_tc_omg.* #輸入數組 在s_tc_xgb里邊傳去畫面黨(畫面黨那邊對應的數組也必須是s_tc_omg) 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 C
23、ALL 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 BEGIN WORK # 開始作業 LET p_cmd='u' LET g_before_input_done = FALSE CALL i535_set_entry(p_cmd) #設置允許輸入
24、欄位 CALL i535_set_no_entry(p_cmd) #設置不允許輸入欄位 LET g_before_input_done = TRUE LET g_tc_omg_t.* = g_tc_omgl_ac.* #備份當前值 OPEN i535_bcl USING g_tc_omg_t.tc_omg01 #鎖表(根據表的屬性,把表主鍵放這里) IF STATUS THEN CALL cl_err("OPEN i535_bcl:", STATUS, 1) LET l_lock_sw = "Y" ELSE FETCH i535_bcl INTO g_t
25、c_omgl_ac.* IF SQLCA.sqlcode THEN CALL cl_err(g_tc_omg_t.tc_omg01,SQLCA.sqlcode,1) LET l_lock_sw = "Y" END IF END IF CALL cl_show_fld_cont() #設定p_per內有特殊格式設定的欄位 END IF BEFORE INSERT #INSERT之前 LET l_n = ARR_COUNT() #返回程序陣列個數 LET p_cmd='a' LET g_before_input_done = FALSE CALL i535_se
26、t_entry(p_cmd) #設置允許輸入欄位 CALL i535_set_no_entry(p_cmd) #設置不允許輸入欄位 LET g_before_input_done = TRUE INITIALIZE g_tc_omgl_ac.* TO NULL #錄入新資料之前格式化數組 LET g_tc_omgl_ac.tc_omgacti = 'Y' #設置新資料默認值 LET g_tc_omg_t.* = g_tc_omgl_ac.* #新輸入資料 CALL cl_show_fld_cont() #設定p_per內有特殊格式設定的欄位 NEXT FIELD tc_omg0
27、1 #首個輸入值 AFTER INSERT #離開 INSERT之后 IF INT_FLAG THEN CALL cl_err('',9001,0) LET INT_FLAG = 0 CLOSE i535_bcl CANCEL INSERT END IF CALL i535_move_back() INSERT INTO tc_omg_file VALUES (b_tc_omg.*) IF SQLCA.SQLCODE THEN CALL cl_err3("ins","tc_omg_file",g_tc_omgl_ac.tc_omg01,&
28、quot;",SQLCA.sqlcode,"","",1) #No.FUN-660131 CANCEL INSERT ELSE MESSAGE 'INSERT O.K' LET g_rec_b=g_rec_b+1 DISPLAY g_rec_b TO FORMONLY.cn2 COMMIT WORK END IF AFTER FIELD tc_omg01 #check 編號是否重複 IF NOT cl_null(g_tc_omgl_ac.tc_omg01) THEN IF g_tc_omgl_ac.tc_omg01 != g_t
29、c_omg_t.tc_omg01 OR g_tc_omg_t.tc_omg01 IS NULL THEN SELECT count(*) INTO l_n FROM tc_omg_file WHERE tc_omg01 = g_tc_omgl_ac.tc_omg01 IF l_n > 0 THEN CALL cl_err('',-239,0) LET g_tc_omgl_ac.tc_omg01 = g_tc_omg_t.tc_omg01 NEXT FIELD tc_omg01 END IF END IF END IF BEFORE DELETE #是否取消單身 IF g_
30、tc_omg_t.tc_omg01 IS NOT NULL THEN IF NOT cl_delete() THEN CANCEL DELETE END IF INITIALIZE g_doc.* TO NULL #No.FUN-9B0098 10/02/24 LET g_doc.column1 = "tc_omg01" #No.FUN-9B0098 10/02/24 LET g_doc.value1 = g_tc_omgl_ac.tc_omg01 #No.FUN-9B0098 10/02/24 CALL cl_del_doc() #No.FUN-9B0098 10/02/
31、24 IF l_lock_sw = "Y" THEN CALL cl_err("", -263, 1) CANCEL DELETE END IF DELETE FROM tc_omg_file WHERE tc_omg01 = g_tc_omg_t.tc_omg01 IF SQLCA.SQLCODE THEN CALL cl_err3("del","tc_omg_file",g_tc_omg_t.tc_omg01,"",SQLCA.SQLCODE,"",""
32、;,1) EXIT INPUT END IF LET g_rec_b=g_rec_b-1 DISPLAY g_rec_b TO FORMONLY.cn2 COMMIT WORK END IF ON ROW CHANGE IF INT_FLAG THEN #新增程式段 CALL cl_err('',9001,0) LET INT_FLAG = 0 LET g_tc_omgl_ac.* = g_tc_omg_t.* CLOSE i535_bcl ROLLBACK WORK EXIT INPUT END IF IF l_lock_sw="Y" THEN CALL
33、cl_err(g_tc_omgl_ac.tc_omg01,-263,0) LET g_tc_omgl_ac.* = g_tc_omg_t.* ELSE CALL i535_move_back() UPDATE tc_omg_file SET * = b_tc_omg.* WHERE tc_omg01 = g_tc_omg_t.tc_omg01 IF SQLCA.sqlcode THEN CALL cl_err3("upd","tc_omg_file",g_tc_omg_t.tc_omg01,"",SQLCA.sqlcode,"
34、;","",1) #No.FUN-660131 LET g_tc_omgl_ac.* = g_tc_omg_t.* ELSE MESSAGE 'UPDATE O.K' COMMIT WORK END IF END IF AFTER ROW #離開這些行列之后 LET l_ac = ARR_CURR() IF INT_FLAG THEN CALL cl_err('',9001,0) LET INT_FLAG = 0 IF p_cmd='u' THEN LET g_tc_omgl_ac.* = g_tc_omg_t.*
35、ELSE CALL g_tc_obk.deleteElement(l_ac) IF g_rec_b != 0 THEN LET g_action_choice = "detail" LET l_ac = l_ac_t END IF END IF CLOSE i535_bcl ROLLBACK WORK EXIT INPUT END IF LET l_ac_t = l_ac CLOSE i535_bcl COMMIT WORK ON ACTION CONTROLP #程序開窗-INPUT模式 CASE WHEN INFIELD(tc_obk01) CALL cl_init_q
36、ry_var() LET g_qryparam.form ="q_occ" CALL cl_create_qry() RETURNING g_tc_obkl_ac.tc_obk01 DISPLAY BY NAME g_tc_obkl_ac.tc_obk01 NEXT FIELD tc_obk01 END CASE ON ACTION CONTROLO #沿用所有欄位 IF INFIELD(tc_omg01) AND l_ac > 1 THEN LET g_tc_omgl_ac.* = g_tc_omgl_ac-1.* NEXT FIELD tc_omg01 END I
37、F ON ACTION CONTROLZ CALL cl_show_req_fields() #顯現畫面上需要輸入卻未輸入的所有字段 ON ACTION CONTROLG CALL cl_cmdask() #詢問用戶欲執行的程序,并執行之 Ctlr + G 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()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銀行從業資格證考試考試技巧試題及答案
- 2025年注冊會計師考試的整體布局分析與試題及答案
- 寧夏石嘴山市本年度(2025)小學一年級數學統編版專題練習(下學期)試卷及答案
- 考生訪談2025年證券從業資格證考試試題及答案
- 編輯教授教你證券從業資格證試題及答案
- 項目延誤的原因及對策試題及答案
- 2025年財務戰略評估試題及答案
- 2025年注冊會計師考試考場技巧試題及答案
- 有效提高微生物檢驗效率的措施試題及答案
- 項目管理考試的案例分析分享試題及答案
- 消防重點單位檔案十八張表格doc-消防安全重點單位檔案
- YY 9706.240-2021醫用電氣設備第2-40部分:肌電及誘發反應設備的基本安全和基本性能專用要求
- GB/T 1094.7-2008電力變壓器第7部分:油浸式電力變壓器負載導則
- GB 12048-1989數字網內時鐘和同步設備的進網要求
- 2022餐桌禮儀培訓PPT餐桌禮儀培訓課件模板
- 小學四年級地方課程安全教育教案泰山出版社
- 化學性及藥物性頜骨骨髓炎
- 神奇的植物王國課件
- 員工崗位技能考核評定表
- 項目部安全生產事故應急預案
- 垂體瘤-PPT課件
評論
0/150
提交評論