1. 如果說 A 程式 呼叫 B 程式 完後,要再接續 A 程式 例如 接著執行 xxx_b_fill() 更新畫面資料,則要使用cl_cmdrun_wait() , 如使用cl_cmdrun() 則畫面的更新並不會成功。
2. 此外執行 cl_cmdrun_wait() , Client 端 Genero 版本少要更新到 2.32.17 以後 才行。

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

參考範例 :
   FOREACH r001_curs1 INTO l_ima01
      LET l_i = l_i + 1                      # Count
      LET la_ima[l_i].ima01 = l_ima01        # save var
   END FOREACH
   FOR i = 1 TO l_i   
       LET g_doc.column1 = "ima01"
       LET g_doc.value1 = la_ima[i].ima01

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

遇到月份的處理,可能會想到用 to_char(xxx,'YYYYMM') , 不過使用上述的前提,月份需要是二位數。如果不想要判斷長度小於2補零,
還有一個方法,比如說要取得 2013-01 ~ 2013-12 之間的資料 可以使用 to_date + last_day 轉換變數來完成。
  shb02 >= to_date('20131','yyyymm') and  shb02 <= last_day(to_date('201312','yyyymm'))

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

# CONSTRUCT+ SUM --> 取得特定某些單據上金額的總和 
LET g_sql + DECLARE xxx  CURSOR FROM g_sql + OPEN + FETCH + CLOSE
EX:       LET g_sql = "SELECT sum(tc_fad008) FROM tc_fad_file,tc_fac_file ",
                        "WHERE tc_fac001 = tc_fad001 AND ",g_wc
            DECLARE p400_cur_s_fad008 SCROLL CURSOR FROM g_sql
            OPEN p400_cur_s_fad008
            FETCH p400_cur_s_fad008 INTO g_sum
            CLOSE p400_cur_s_fad008

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

1. 一般如果是 INPUT BY NAME 可在之前 或  BEFORE INPUT 中,利用 LET tm.xxx = '1' 來給預設值。
2.  但如果是  CONSTRUCT BY NAME g_wc ON ..... , 則在 BEFORE CONSTRUCT 中,利用  DISPLAY  xxx  TO 欄位名稱  來給。

Genero 發表在 痞客邦 留言(2) 人氣()

1. 如果不需要顯示小數點. 定義數量變數的時候, 可 like type_file.num5
2. 利用 USING "<<<<<<<" 方式將數量變數與字串相連
EX :
LET g_img[g_cnt].ta_qcs03 = g_img[g_cnt].ta_qcs03 CLIPPED,' (',l_qcs01 USING"<<<<<" CLIPPED,'EA)'

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

如果說 因為一些小的改變想要把原本的程式(母程式) 複製一份出來修改,重新命名一個新的程式(子程式),但是程式使用的報表都是跟原程式一樣。
作法是先將 g_prog 改為原先的程式 (母程式). CALL cl_prt_cs3 後,再改為 新的程式(子程式).
如:
Let g_prog = 'cimr161'
CALL cl_prt_cs3('cimr161',g_rpt1,l_sql,g_str)
Let g_prog = 'cimr061'

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

匯入的檔案,一般如果只有簡單的英文和數字,並不會有太大問題,但是如果匯入的資料中,有包含以下狀況,則要注意 :
1. 逗號 (,)
2. 中文字 (內容或標題)
3. 特殊符號 ( Ø )
第一種  逗號 (,) 如果要資訊中含有 , 要分格欄位的字元就無法用 , 可能用EXCEL 新增欄位合併來取代 如 A1&"^"&B1&"^"&C1, 將欄位複製到 TXT UFT-8 檔案中。
第二種 中文字 中文字或特殊符號,轉入的文字檔記得需要改為 UTF-8 的文字檔才行 , ANSI 或是 Unicode的檔案 均無法支援 4GL 的 Load File .
第三種 特殊符號同中文字處理。
另外要注意的
1. Select 語法在區別時,除了第一列與最後一列外,其餘的寫法都比照新增即可。僅需注意最後一列寫法。
2. EXCEL 貼入文字檔時,亦不可整欄複製。要選取特定範圍複製。
範例如下 : 

Genero 發表在 痞客邦 留言(2) 人氣()

控制畫面欄位是否可作為查詢或是可編輯修改的寫法
 
1. 查詢 => 開放可作為查詢的欄位 => FUNCTION ixxx_b_askkey()
2. 修改 => 關閉不可修改的欄位   => ixxx_b() => INPUT ARRAY => BEFORE ROW =>
   IF g_rec_b>=l_ac THEN => LET p_cmd='u' => CALL ixxx_set_no_entry(p_cmd)
FUNCTION ixxx_set_no_entry(p_cmd)
   DEFINE p_cmd   LIKE type_file.chr1
  
   IF p_cmd = 'u' THEN         
        CALL cl_set_comp_entry("feb02,ta_feb001,ta_feb002,ta_feb003,ta_feb004",FALSE)
   END IF
END FUNCTION

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

# Prog. Version..: '5.00.05-08.03.11(00009)'     #
# Pattern name...: cxmp001.4gl
# Descriptions...: 開啟畫面 輸入QBE 條件,執行指定的作業
# Modify ........: By Uoc.Jack 12/05/08

DATABASE ds
GLOBALS "../../../tiptop/config/top.global"
DEFINE g_sql         string

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

1. 了解需求          (如: 需要有出貨單複製的功能)
2. 思考程式邏輯與執行畫面     (畫面可以輸入來源單號)
3. 測試主 SQL程式  (Insert into select )
4. Code 檢核條件   (來源單據需要符合的條件)
5. 找尋類似程式      (p_zz 程式編號  *p* + 原設計者)
6. 程式修改       
7. 測試

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

1
Blog Stats
⚠️

成人內容提醒

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

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