




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程大綱課程大綱單檔程序基礎(chǔ)介紹單檔程序基礎(chǔ)介紹單檔程序的概念單檔程序的概念單檔程序的分類單檔程序的分類單檔程序的分類單檔程序的分類單檔程序的分類單檔程序的分類單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的功能單檔程序的結(jié)構(gòu)單檔程序的結(jié)構(gòu)單檔程序的結(jié)構(gòu)單檔程序的結(jié)構(gòu)curs()q()fetch()查詢數(shù)據(jù)瀏覽新增修改刪除有效/無效復(fù)制打印MAINmenu()F/P/N/La()u()r()copy()out()show()fetch()show()i
2、()show()show()show()x()u()rep()i()Global SettingProgram Memo單檔多欄程序的結(jié)構(gòu)單檔多欄程序的結(jié)構(gòu)b_askkey()q()b_fill()查詢單身(錄入,修改,刪除,復(fù)制)匯出EXCEL打印MAINmenu()b()out()bp()fetch()cl_export_to_excel()Global SettingProgram Memo單檔程序的結(jié)構(gòu)單檔程序的結(jié)構(gòu) Program Memo 程序注記 Global Setting 全局參數(shù)設(shè)計 單檔程序的設(shè)計單檔程序的設(shè)計明確需求確定規(guī)格規(guī)劃數(shù)據(jù)表確認(rèn)功能畫面檔設(shè)計程序檔設(shè)計單檔程序
3、的設(shè)計單檔程序的設(shè)計單檔程序的示例單檔程序的示例單檔程序的示例單檔程序的示例 azbmodu varchar2(10), /*資料修改者*/ azbdate date /*最近修改日*/ );單檔程序的示例單檔程序的示例單檔程序的示例單檔程序的示例 單檔程序的示例單檔程序的示例程序解讀程序解讀2# Pattern name.: aooi010.4gl3# Descriptions.: 簽核人員4# Date & Author.: 91/04/11 By Lee5# Modify.: No:MOD-470400 04/07/22 By Nicola 刪除放棄的button8DATABASE ds
4、6 # Note : 本程序為教育訓(xùn)練使用單檔標(biāo)準(zhǔn)程序 10 GLOBALS ././config/top.global程序解讀程序解讀 12DEFINE g_azb RECORD LIKE azb_file.*, 13 g_azb_t RECORD LIKE azb_file.*, #備份舊值 14 g_azb01_t LIKE azb_file.azb01, #Key值備份 15 g_wc STRING, #儲存 user 的查詢條件 16 g_sql STRING, #組 sql 用 17 g_azb_rowid LIKE type_file.chr18 #ROWID使用 19DEFIN
5、E g_forupd_sql STRING #SELECT . FOR UPDATE NOWAIT SQL 20DEFINE g_before_input_done LIKE type_file.num5 #判斷是否已執(zhí)行 Before Input指令 21DEFINE g_chr LIKE type_file.chr1 22DEFINE g_cnt LIKE type_file.num10 23DEFINE g_i LIKE type_file.num5 24DEFINE g_msg LIKE type_file.chr1000 25DEFINE g_curs_index LIKE type
6、_file.num10 26DEFINE g_row_count LIKE type_file.num10 #總筆數(shù) 27DEFINE g_jump LIKE type_file.num10 #查詢指定的筆數(shù) 28DEFINE mi_no_ask LIKE type_file.num5 #是否開啟指定筆窗口程序解讀程序解讀 30MAIN 31 DEFINE p_row,p_col LIKE type_file.num5 33 OPTIONS 34 FORM LINE FIRST + 2, 35 MESSAGE LINE LAST, 36 PROMPT LINE LAST, 37 INPUT N
7、O WRAP #輸入的方式: 不打轉(zhuǎn) 38 DEFER INTERRUPT #擷取中斷鍵 40 IF (NOT cl_user() THEN #預(yù)設(shè)部份參數(shù)(g_prog,g_user,.) 41 EXIT PROGRAM #切換成用戶預(yù)設(shè)的營運中心 42 END IF 44 WHENEVER ERROR CALL cl_err_msg_log #遇錯則記錄log文件 46 IF (NOT cl_setup(AOO) THEN #預(yù)設(shè)模塊參數(shù)(g_aza.*,.)、權(quán)限參數(shù) 47 EXIT PROGRAM #判斷用戶程序執(zhí)行權(quán)限 48 END IF 50 CALL cl_used(g_prog
8、,g_time,1) RETURNING g_time #程序進入時間 51 INITIALIZE g_azb.* TO NULL 53 LET g_forupd_sql = SELECT * FROM azb_file WHERE ROWID = ? FOR UPDATE NOWAIT 54 DECLARE i010_cl CURSOR FROM g_forupd_sql # LOCK CURSOR 56 LET p_row = 5 LET p_col = 10 58 OPEN WINDOW i010_w AT p_row,p_col WITH FORM aoo/42f/aooi010 59
9、 ATTRIBUTE (STYLE = g_win_style CLIPPED) 61 CALL cl_ui_init() #轉(zhuǎn)換接口語言別、匯入ToolBar、Action.等信息 63 LET g_action_choice = 64 CALL i010_menu() 66 CLOSE WINDOW i010_w 67 CALL cl_used(g_prog,g_time,2) RETURNING g_time #程序結(jié)束時間 68END MAIN程序解讀程序解讀 138FUNCTION i010_menu() 139 DEFINE l_cmd LIKE type_file.chr1000
10、 141 MENU 142 BEFORE MENU #預(yù)設(shè)第一筆、上筆、指定筆、下筆、末一筆五個功能關(guān)閉 143 CALL cl_navigator_setting(g_curs_index, g_row_count) 145 ON ACTION insert 146 LET g_action_choice=insert #g_action_choice為全域變數(shù),用于cl_chk_act_auth() 147 IF cl_chk_act_auth() THEN #主要在檢查用戶有沒有執(zhí)行此功能的權(quán)限 148 CALL i010_a() 149 END IF 200 ON IDLE g_idl
11、e_seconds #每一交談指令必須添加閑置控管 201 CALL cl_on_idle() #用戶閑置的時間到達(dá)設(shè)定時 202 CONTINUE MENU #可強制結(jié)束或發(fā)送訊息等 205 COMMAND KEY(INTERRUPT) #設(shè)定窗口右上角X功能為關(guān)閉 206 LET INT_FLAG=FALSE 207 LET g_action_choice = exit 208 EXIT MENU 219 END MENU 220 CLOSE i010_cs 221END FUNCTION程序解讀程序解讀 70FUNCTION i010_curs() 72 CLEAR FORM 73 CO
12、NSTRUCT BY NAME g_wc ON # 屏幕上取條件 74 azb01,azb02,azb06, 75 azbuser,azbgrup,azbmodu,azbdate,azbacti 77 BEFORE CONSTRUCT #預(yù)設(shè)查詢條件 78 CALL cl_qbe_init() 80 ON ACTION controlp #字段開窗 81 CASE 82 WHEN INFIELD(azb01) 83 CALL cl_init_qry_var() #動態(tài)開窗方式,透過p_qry設(shè)定使用 84 LET g_qryparam.form = q_gen 85 LET g_qrypara
13、m.state = c 86 LET g_qryparam.default1 = g_azb.azb01 87 CALL cl_create_qry() RETURNING g_qryparam.multiret 88 DISPLAY g_qryparam.multiret TO azb01 89 NEXT FIELD azb01 91 OTHERWISE 92 EXIT CASE 93 END CASE 95 ON IDLE g_idle_seconds #Idle控管(每一交談指令皆要添加) 96 CALL cl_on_idle() 97 CONTINUE CONSTRUCT 99 ON
14、ACTION about #程序信息(每一交談指令皆要添加) 100 CALL cl_about() 102 ON ACTION help #程序說明(每一交談指令皆要添加) 103 CALL cl_show_help() 105 ON ACTION controlg #開啟其它作業(yè)(每一交談指令皆要添加) 106 CALL cl_cmdask() 108 ON ACTION qbe_select #選擇儲存的查詢條件 109 CALL cl_qbe_select() 111 ON ACTION qbe_save #儲存畫面上字段條件 112 CALL cl_qbe_save() 113 EN
15、D CONSTRUCT程序解讀程序解讀 115 #數(shù)據(jù)權(quán)限的檢查 116 IF g_priv2=4 THEN #只能使用自己的數(shù)據(jù) 117 LET g_wc = g_wc clipped, AND azbuser = ,g_user, 118 END IF 119 IF g_priv3=4 THEN #只能使用相同群的數(shù)據(jù) 120 LET g_wc = g_wc clipped, AND azbgrup MATCHES , 121 g_grup CLIPPED,* 122 END IF 124 IF g_priv3 MATCHES 5678 THEN #cl_chk_tgrup_list傳回相
16、關(guān)部門組合字符串 125 LET g_wc = g_wc clipped, AND azbgrup IN ,cl_chk_tgrup_list() 126 END IF 128 LET g_sql=SELECT ROWID,azb01 FROM azb_file , #組合出 SQL 指令 129 WHERE ,g_wc CLIPPED, ORDER BY azb01 130 PREPARE i010_prepare FROM g_sql 131 DECLARE i010_cs #SCROLL CURSOR 132 SCROLL CURSOR WITH HOLD FOR i010_prepar
17、e 133 LET g_sql=SELECT COUNT(*) FROM azb_file WHERE ,g_wc CLIPPED 134 PREPARE i010_precount FROM g_sql 135 DECLARE i010_count CURSOR FOR i010_precount. 136END FUNCTION程序解讀程序解讀 414FUNCTION i010_q() 415 LET g_row_count = 0 # 查詢前預(yù)設(shè)上下筆按鍵關(guān)閉 416 LET g_curs_index = 0 417 CALL cl_navigator_setting(g_curs_in
18、dex,g_row_count) 418 INITIALIZE g_azb.* TO NULL 419 MESSAGE 420 CALL cl_opmsg(q) 421 DISPLAY TO FORMONLY t 422 CALL i010_curs() # 用戶輸入條件及宣告 SCROLL CURSOR 423 IF INT_FLAG THEN 424 LET INT_FLAG = 0 425 CLEAR FORM 426 RETURN 427 END IF 428 OPEN i010_count # 計算總筆數(shù)顯示于畫面上 429 FETCH i010_count INTO g_row_c
19、ount 430 DISPLAY g_row_count TO FORMONLY t 431 OPEN i010_cs # 從DB產(chǎn)生合乎條件TEMP(0-30秒) 432 IF SQLCA.sqlcode THEN 433 CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0) 434 INITIALIZE g_azb.* TO NULL 435 ELSE 436 CALL i010_fetch(F) # 讀出TEMP第一筆并顯示 437 END IF 438END FUNCTION程序解讀程序解讀 440FUNCTION i010_fetch(p_flazb) 4
20、41 DEFINE p_flazb LIKE type_file.chr1 443 CASE p_flazb 444 WHEN N FETCH NEXT i010_cs INTO g_azb_rowid,g_azb.azb01 445 WHEN P FETCH PREVIOUS i010_cs INTO g_azb_rowid,g_azb.azb01 446 WHEN F FETCH FIRST i010_cs INTO g_azb_rowid,g_azb.azb01 447 WHEN L FETCH LAST i010_cs INTO g_azb_rowid,g_azb.azb01 448
21、WHEN / 449 IF (NOT mi_no_ask) THEN #指定筆開窗選擇 450 CALL cl_getmsg(fetch,g_lang) RETURNING g_msg 451 LET INT_FLAG = 0 452 PROMPT g_msg CLIPPED,: FOR g_jump 453 ON IDLE g_idle_seconds 454 CALL cl_on_idle() 456 ON ACTION about 457 CALL cl_about() 459 ON ACTION help 460 CALL cl_show_help() 462 ON ACTION co
22、ntrolg 463 CALL cl_cmdask() 464 END PROMPT 465 IF INT_FLAG THEN 466 LET INT_FLAG = 0 467 EXIT CASE 468 END IF 469 END IF 470 FETCH ABSOLUTE g_jump i010_cs INTO g_azb_rowid,g_azb.azb01 471 LET mi_no_ask = FALSE #預(yù)設(shè)為開窗詢問指定筆 472 END CASE程序解讀程序解讀 474 IF SQLCA.sqlcode THEN #當(dāng)搜尋錯誤時,則提示訊息 475 CALL cl_err(g
23、_azb.azb01,SQLCA.sqlcode,0) 476 INITIALIZE g_azb.* TO NULL 477 LET g_azb_rowid = NULL 478 RETURN 479 ELSE 480 CASE p_flazb # 指定當(dāng)前筆數(shù)指標(biāo) 481 WHEN F LET g_curs_index = 1 482 WHEN P LET g_curs_index = g_curs_index - 1 483 WHEN N LET g_curs_index = g_curs_index + 1 484 WHEN L LET g_curs_index = g_row_coun
24、t 485 WHEN / LET g_curs_index = g_jump 486 END CASE # 重新設(shè)定上下筆五個功能鍵的開關(guān) 488 CALL cl_navigator_setting(g_curs_index, g_row_count) 489 DISPLAY g_curs_index TO FORMONLY.idx 490 END IF 492 SELECT * INTO g_azb.* FROM azb_file # 重讀DB,因TEMP有不被更新特性 493 WHERE ROWID = g_azb_rowid 494 IF SQLCA.sqlcode THEN # 有關(guān)S
25、QL的錯誤訊息用cl_err3呈現(xiàn) 495 CALL cl_err3(sel,azb_file,g_azb.azb01,SQLCA.sqlcode,0) 496 ELSE 497 LET g_data_owner=g_azb.azbuser # 權(quán)限控管 498 LET g_data_group=g_azb.azbgrup 499 CALL i010_show() # 重新顯示 500 END IF 501END FUNCTION程序解讀程序解讀 503 FUNCTION i010_show() 504 LET g_azb_t.* = g_azb.* 505 DISPLAY BY NAME g
26、_azb.* 506 CALL i010_azb01(d) 507 CALL cl_show_fld_cont() 508 END FUNCTION程序解讀程序解讀 381FUNCTION i010_azb01(p_cmd) 382 DEFINE p_cmd LIKE type_file.chr1, 383 l_gen02 LIKE gen_file.gen02, 384 l_gen03 LIKE gen_file.gen03, 385 l_gen04 LIKE gen_file.gen04, 386 l_genacti LIKE gen_file.genacti, 387 l_gem02 L
27、IKE gem_file.gem02 389 LET g_errno= 390 SELECT gen02,gen03,gen04,genacti 391 INTO l_gen02,l_gen03,l_gen04,l_genacti 392 FROM gen_file 393 WHERE gen01=g_azb.azb01 394 CASE 395 WHEN SQLCA.sqlcode=100 LET g_errno=aoo-070 396 LET l_gen02=NULL 397 LET l_gen03=NULL 398 LET l_gen04=NULL 399 WHEN l_genacti=
28、N LET g_errno=9028 400 OTHERWISE 401 LET g_errno=SQLCA.sqlcode USING - 402 END CASE 403 IF p_cmd=d OR cl_null(g_errno)THEN 404 DISPLAY l_gen02 TO FORMONLY.gen02 405 DISPLAY l_gen03 TO FORMONLY.gen03 406 DISPLAY l_gen04 TO FORMONLY.gen04 407 SELECT gem02 INTO l_gem02 FROM gem_file 408 WHERE gem01=l_g
29、en03 409 IF SQLCA.sqlcode THEN LET l_gem02= END IF 410 DISPLAY l_gem02 TO gem02 411 END IF 412END FUNCTION 程序解讀程序解讀 223FUNCTION i010_a() 224 MESSAGE 225 CLEAR FORM # 清屏幕字段內(nèi)容 226 INITIALIZE g_azb.* LIKE azb_file.* 227 LET g_azb01_t = NULL 228 LET g_wc = NULL 229 CALL cl_opmsg(a) 230 WHILE TRUE 231 LE
30、T g_azb.azbuser = g_user 232 LET g_azb.azbgrup = g_grup #用戶所屬群 233 LET g_azb.azbdate = g_today 234 LET g_azb.azbacti = Y 235 CALL i010_i(a) # 各字段輸入 236 IF INT_FLAG THEN # 若按了DEL鍵 237 INITIALIZE g_azb.* TO NULL 238 LET INT_FLAG = 0 239 CALL cl_err(,9001,0) 240 CLEAR FORM 241 EXIT WHILE 242 END IF 程序解
31、讀程序解讀 243 IF g_azb.azb01 IS NULL THEN # KEY 不可空白 244 CONTINUE WHILE 245 END IF 246 INSERT INTO azb_file VALUES(g_azb.*) # DISK WRITE 247 IF SQLCA.sqlcode THEN #SQL錯誤,利用cl_err3開啟錯誤訊息窗口 248 CALL cl_err3(ins,azb_file,g_azb.azb01,SQLCA.sqlcode,0) 249 CONTINUE WHILE 250 ELSE 251 SELECT ROWID INTO g_azb_r
32、owid FROM azb_file 252 WHERE azb01 = g_azb.azb01 253 END IF 254 EXIT WHILE 255 END WHILE 256 LET g_wc= 257END FUNCTION程序解讀程序解讀 259FUNCTION i010_i(p_cmd) 260 DEFINE p_cmd LIKE type_file.chr1, 261 l_gen02 LIKE gen_file.gen02, 262 l_gen03 LIKE gen_file.gen03, 263 l_gen04 LIKE gen_file.gen04, 264 l_gem0
33、2 LIKE gem_file.gem02, 265 l_input LIKE type_file.chr1, 266 l_n LIKE type_file.num5 269 DISPLAY BY NAME 270 g_azb.azb01,g_azb.azb02,g_azb.azb06, 271 g_azb.azbuser,g_azb.azbgrup,g_azb.azbmodu, 272 g_azb.azbdate,g_azb.azbacti 274 INPUT BY NAME 275 g_azb.azb01,g_azb.azb02,g_azb.azb06, 276 g_azb.azbuser
34、,g_azb.azbgrup,g_azb.azbmodu, 277 g_azb.azbdate,g_azb.azbacti 278 WITHOUT DEFAULTS 280 BEFORE INPUT #新增時,將Key值(azb01)開放輸入 281 LET l_input=N #更改時、視p_zz設(shè)定決定是否不可輸入 282 LET g_before_input_done = FALSE 283 CALL i010_set_entry(p_cmd) 284 CALL i010_set_no_entry(p_cmd) 285 LET g_before_input_done = TRUE程序解讀
35、程序解讀 287 AFTER FIELD azb01 288 DISPLAY AFTER FIELD azb01 289 IF g_azb.azb01 IS NOT NULL THEN # 在數(shù)據(jù)不為空值的情況下才進行檢查 290 IF p_cmd = a OR # 若輸入或更改且改KEY 291 (p_cmd = u AND g_azb.azb01 != g_azb01_t) THEN 292 SELECT count(*) INTO l_n FROM azb_file WHERE azb01 = g_azb.azb01 293 IF l_n 0 THEN # Duplicated 294
36、CALL cl_err(g_azb.azb01,-239,1) 295 LET g_azb.azb01 = g_azb01_t 296 DISPLAY BY NAME g_azb.azb01 297 NEXT FIELD azb01 298 END IF 299 CALL i010_azb01(a) #是否存在基本數(shù)據(jù)文件檢查 300 IF NOT cl_null(g_errno) THEN 301 CALL cl_err(azb01:,g_errno,1) 302 LET g_azb.azb01 = g_azb01_t 303 DISPLAY BY NAME g_azb.azb01 304
37、NEXT FIELD azb01 305 END IF 306 END IF 307 END IF程序解讀程序解讀 309 AFTER INPUT 310 IF INT_FLAG THEN 311 EXIT INPUT 312 END IF 313 IF g_azb.azb01 IS NULL THEN 314 DISPLAY BY NAME g_azb.azb01 315 LET l_input=Y 316 END IF 317 IF l_input=Y THEN 318 NEXT FIELD azb01 319 END IF 328 ON ACTION controlp 329 CASE
38、330 WHEN INFIELD(azb01) #檢查在哪個字段 331 CALL cl_init_qry_var() #預(yù)設(shè)g_qryparam變數(shù)組 332 LET g_qryparam.form = q_gen #指定組別 333 LET g_qryparam.default1 = g_azb.azb01 #指定取消時的回傳值 334 CALL cl_create_qry() RETURNING g_azb.azb01 #動態(tài)查詢開窗 335 DISPLAY BY NAME g_azb.azb01 336 NEXT FIELD azb01 338 OTHERWISE 339 EXIT C
39、ASE 340 END CASE 362 END INPUT 363END FUNCTION程序解讀程序解讀 365FUNCTION i010_set_entry(p_cmd) 366 DEFINE p_cmd LIKE type_file.chr1 368 IF p_cmd = a AND (NOT g_before_input_done) THEN 369 CALL cl_set_comp_entry(azb01,TRUE) 370 END IF 371END FUNCTION 373FUNCTION i010_set_no_entry(p_cmd) 374 DEFINE p_cmd LI
40、KE type_file.chr1 376 IF p_cmd = u AND g_chkey = N THEN 377 CALL cl_set_comp_entry(azb01,FALSE) 378 END IF 379END FUNCTION程序解讀程序解讀 510FUNCTION i010_u() 511 IF g_azb.azb01 IS NULL THEN 512 CALL cl_err(,-400,0) 513 RETURN 514 END IF 515 SELECT * INTO g_azb.* FROM azb_file WHERE azb01=g_azb.azb01 516 I
41、F g_azb.azbacti = N THEN #數(shù)據(jù)為無效時,不提供更改 517 CALL cl_err(,9027,0) 518 RETURN 519 END IF 520 MESSAGE 521 CALL cl_opmsg(u) 522 LET g_azb01_t = g_azb.azb01 524 BEGIN WORK #開啟transaction記錄以下對數(shù)據(jù)庫的動作 #下COMMIT WORK指令后再做處理 526 OPEN i010_cl USING g_azb_rowid 527 IF STATUS THEN 528 CALL cl_err(OPEN i010_cl:, ST
42、ATUS, 1) 529 CLOSE i010_cl 530 ROLLBACK WORK 531 RETURN 532 END IF 533 FETCH i010_cl INTO g_azb.* # 對DB鎖定 534 IF SQLCA.sqlcode THEN 535 CALL cl_err(g_azb.azb01,SQLCA.sqlcode,1) 536 CLOSE i010_cl 537 ROLLBACK WORK 538 RETURN 539 END IF程序解讀程序解讀 540 LET g_azb.azbmodu=g_user # 更改者 541 LET g_azb.azbdate
43、= g_today # 更改日期 542 CALL i010_show() # 顯示最新數(shù)據(jù) 543 WHILE TRUE 544 CALL i010_i(u) # 與新增功能共享函式,處理字段更改 545 IF INT_FLAG THEN 546 LET INT_FLAG = 0 547 LET g_azb.*=g_azb_t.* 548 CALL i010_show() 549 CALL cl_err(,9001,0) 550 EXIT WHILE 551 END IF 552 UPDATE azb_file SET azb_file.* = g_azb.* # 更新DB 553 WHER
44、E ROWID = g_azb_rowid 554 IF SQLCA.sqlcode THEN #SQL錯誤,利用cl_err3開啟錯誤訊息窗口 555 CALL cl_err3(upd,azb_file,g_azb.azb01,SQLCA.sqlcode,0) 556 CONTINUE WHILE 557 END IF 558 EXIT WHILE 559 END WHILE 560 CLOSE i010_cl 561 COMMIT WORK 562END FUNCTION 程序解讀程序解讀 610FUNCTION i010_r() 611 IF g_azb.azb01 IS NULL TH
45、EN 614 END IF 616 BEGIN WORK 618 OPEN i010_cl USING g_azb_rowid 625 FETCH i010_cl INTO g_azb.* 632 CALL i010_show() 633 IF cl_delete() THEN # 詢問是否刪除此筆資料 634 DELETE FROM azb_file WHERE azb01 = g_azb.azb01 635 CLEAR FORM 636 OPEN i010_count # 重新計算總筆數(shù) 637 FETCH i010_count INTO g_row_count 638 DISPLAY g
46、_row_count TO FORMONLY t 639 OPEN i010_cs # refresh查詢出來的數(shù)據(jù)列 640 IF g_curs_index = g_row_count + 1 THEN # 才能清空刪除后的空白位置 641 LET g_jump = g_row_count # 利用指定筆的功能,將指針停留在 642 CALL i010_fetch(L) # 刪除的后一筆 643 ELSE 644 LET g_jump = g_curs_index 645 LET mi_no_ask = TRUE # 利用指定筆時,控制不開窗直接搜尋數(shù)據(jù) 646 CALL i010_fetc
47、h(/) 647 END IF 648 END IF 649 CLOSE i010_cl 650 COMMIT WORK 651END FUNCTION程序解讀程序解讀 564FUNCTION i010_x() 565 IF g_azb.azb01 IS NULL THEN 570 BEGIN WORK 572 OPEN i010_cl USING g_azb_rowid 586 CALL i010_show() 587 IF cl_exp(0,0,g_azb.azbacti) THEN # 開出窗口顯示訊息提示用戶 588 LET g_chr=g_azb.azbacti 589 IF g_a
48、zb.azbacti=Y THEN 590 LET g_azb.azbacti=N 591 ELSE 592 LET g_azb.azbacti=Y 593 END IF 594 UPDATE azb_file SET azbacti=g_azb.azbacti 595 WHERE ROWID=g_azb_rowid 596 IF SQLCA.SQLERRD3=0 THEN # SQLCA.SQLERRD3記錄數(shù)據(jù)庫更動筆數(shù) 597 CALL cl_err(g_azb.azb01,SQLCA.sqlcode,0) 598 LET g_azb.azbacti=g_chr 599 DISPLAY
49、BY NAME g_azb.azbacti 600 CLOSE i010_cl 601 ROLLBACK WORK 602 RETURN 603 END IF 604 DISPLAY BY NAME g_azb.azbacti 605 END IF 606 CLOSE i010_cl 607 COMMIT WORK 608END FUNCTION復(fù)制功能圖示復(fù)制功能圖示程序解讀程序解讀 653FUNCTION i010_copy() 654 DEFINE l_newno LIKE azb_file.azb01, 655 l_oldno LIKE azb_file.azb01, 656 p_cm
50、d LIKE type_file.chr1, 657 l_input LIKE type_file.chr1 659 IF g_azb.azb01 IS NULL THEN 660 CALL cl_err(,-400,0) 661 RETURN 662 END IF 664 LET l_input=N 665 LET g_before_input_done = FALSE 666 CALL i010_set_entry(a) #程序內(nèi)若有可能動態(tài)關(guān)閉key值輸入的話 667 LET g_before_input_done = TRUE #復(fù)制功能要預(yù)設(shè)key值字段可輸入 668 INPUT l
51、_newno FROM azb01 670 AFTER FIELD azb01 #針對輸入字段一樣要檢查 671 IF l_newno IS NOT NULL THEN 672 SELECT count(*) INTO g_cnt FROM azb_file 673 WHERE azb01 = l_newno 674 IF g_cnt 0 THEN 675 CALL cl_err(l_newno,-239,0) 676 NEXT FIELD azb01 677 END IF 678 SELECT gen01 FROM gen_file WHERE gen01= l_newno 679 IF S
52、QLCA.sqlcode THEN 680 DISPLAY BY NAME g_azb.azb01 681 LET l_newno = NULL 682 NEXT FIELD azb01 683 END IF 684 END IF程序解讀程序解讀 686 ON ACTION controlp #字段也可提供開窗查詢 687 IF INFIELD(azb01) THEN 688 CALL cl_init_qry_var() 689 LET g_qryparam.form = q_gen 690 LET g_qryparam.default1 = g_azb.azb01 691 CALL cl_c
53、reate_qry() RETURNING l_newno 692 DISPLAY l_newno TO azb01 693 SELECT gen01 FROM gen_file WHERE gen01= l_newno 694 IF SQLCA.sqlcode THEN 695 DISPLAY BY NAME g_azb.azb01 696 LET l_newno = NULL 697 NEXT FIELD azb01 698 END IF 699 NEXT FIELD azb01 700 END IF 702 ON IDLE g_idle_seconds 703 CALL cl_on_idle() 704 CONTINUE INPUT 705 ON ACTION about
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省上饒市2024-2025學(xué)年高一上學(xué)期1月期末英語試題【含答案】
- 江蘇省常州市2024-2025學(xué)年高三(上)期末生物試卷(含解析)
- 青貯池施工方案
- 排澇水系改造施工方案
- 生物觀察池施工方案
- co2加氫制甲醇總反應(yīng)
- 4年級數(shù)學(xué)手抄報內(nèi)容
- 地平關(guān)環(huán)機理
- 青海墻面防水施工方案
- 2025年廣西農(nóng)業(yè)職業(yè)技術(shù)大學(xué)單招職業(yè)技能測試題庫匯編
- 2025口腔科年度工作計劃
- 商業(yè)辦公樓網(wǎng)絡(luò)改造施工方案
- 2024年中國主題公園競爭力評價報告-中國主題公園研究院
- 2023年湖北省生態(tài)環(huán)保有限公司招聘考試真題
- 化療藥物外滲的預(yù)防及處理-2
- DB35T 1933-2020 熔融沉積3D打印品幾何精度評價規(guī)范
- 《大氣污染物控制工程》-揮發(fā)性有機物污染控制
- 2024-2030年冷凍面團產(chǎn)品行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- LED基礎(chǔ)知識題庫100道及答案(完整版)
- 新版高中物理必做實驗?zāi)夸浖捌鞑?(電子版)
- 涉密項目保密工作方案
評論
0/150
提交評論