INPUT指令
說明:
1. 當程序執行到INPUT指令時,會將控制權交給用戶,讓用戶輸入數據。
2. 用戶輸入完字段的數據,會將數據回傳給程序中的變量接收。
3. 只要執行到INPUT的指令,程序會將每個字段Default為NULL。
反之不需要將每個字段的值都變為NULL的話,需添加(WITHOUT DEFAULTS)
范例(cxrq005):
1、首先在MAIN函數前定義客制變量,用來接收用戶數據;
#add-point:自定義模組變數-客製(Module Variable) name="global.variable_customerization" TYPE type_g_input RECORD xrsduc010 STRING, xrsduc010_desc STRING, xrsduc010_desc_1 STRING END RECORD DEFINE g_input type_g_input #end add-point
以上這些變量,均對應規格上的控件代號進行定義;
2、在cxrq005 _ui_dialog()函數中的DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)領域下自定義INPUT;
DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM) #add-point:input段落 name="ui_dialog.input" INPUT g_input.xrsduc010 FROM xrsduc010 ATTRIBUTES(WITHOUT DEFAULTS) ON ACTION controlp INFIELD xrsduc010 INITIALIZE g_qryparam.* TO NULL LET g_qryparam.state = 'c' #c-多選,i-單選 LET g_qryparam.reqry = FALSE LET g_qryparam.default1 = g_input.xrsduc010 #給予default值 LET g_qryparam.arg1 = g_site CALL cq_pmab001_2() #呼叫開窗 DISPLAY g_qryparam.return1 TO xrsduc010 #將開窗取得的值回傳到變數 #DISPLAY g_qryparam.return2 TO xrsduc010_desc #DISPLAY g_qryparam.return3 TO xrsduc010_desc_1 END INPUT #end add-point
如有多個控件的輸入控制權需要交給用戶來輸入,依次在INPUT指令中輸入接收數據的變量和控件代號即可。
CONSTRUCT指令
此指令可讓用戶在畫面上輸入查詢條件(通稱Query By Example;QBE),以取得用戶的查詢范圍數據。用戶的查詢數據會組成一串WHERE指令(參下頁批注),並置入設定好的變量中。若使用者未輸入任何條件,即按下『確定』離開CONSTRUCT,系統也會自動於此變量中補入『1=1』
范例同上:
1、同上;
接收WHERE指令的變量最好使用STRING類型;
2、在cxrq005 _ui_dialog()函數中的DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)領域下自定義CONSTRUCT:
#add-point:construct段落 name="ui_dialog.construct" CONSTRUCT BY NAME g_input.xrsduc010 ON xrsduc010 ON ACTION controlp INFIELD xrsduc010 INITIALIZE g_qryparam.* TO NULL LET g_qryparam.state = 'c' LET g_qryparam.reqry = FALSE LET g_qryparam.default1 = g_input.xrsduc010 #給予default值 LET g_qryparam.arg1 = g_site CALL cq_pmab001_2() #呼叫開窗 DISPLAY g_qryparam.return1 TO xrsduc010 #將開窗取得的值回傳到變數 #DISPLAY g_qryparam.return2 TO xrsduc010_desc #DISPLAY g_qryparam.return3 TO xrsduc010_desc_1 NEXT FIELD xrsduc010 END CONSTRUCT #end add-point
①域名和變量名稱相同時: CONSTRUCT BY NAME char_variable ON column_list
反之:CONSTRUCT char_variable ON column_list FROM field_list
說明:
char_variable為接取用戶輸入數據的字符串變量(建議以STRING格式變量接取)
column_list為對應到表格(TABLE)的域名清單(逗號隔開)
field_list為畫面(WINDOW或是FORM)上的字段代碼清單(逗號隔開)
注:INPUT的數據輸入后,其值是分散於個變量中,若要以INPUT指令來接取用戶所輸入的查詢條件,則必需以一連串復雜的字符串組合指令來組出查詢指令所需要的WHERE條件。而CONSTRUCT的優點在:系統會自動判別用戶輸入條件並組合,后續只要將之與SELECT等指令組合即可,可降低設計的復雜度。