【Tiptop ERP T】Tiptop GP CR報表如何列印圖片及依圖片長寬控制顯示

很多公司都需要在Tiptop GP 串的CR報表裏面列示資料庫裏面的圖片信息

如何處理呢?

這裡以列示料件的工程圖片為例說明如何在CR上列示圖片信息

在Tiptop GP ERP 裏面所有的圖片/文件/二進位數據....都是保存在gca_file 和gcb_file裱中

如果不清楚此2個Table的結構,請于此下載http://download.csdn.net/detail/yihuiworld/4284341,以查看結構說明

個人的測試demo:terry

terry.per 檔源碼

##-------------------------------------------------------------------------------- ## $Id: terry.per created Tue May 29 15:03:14 2012 ## File created from terry.4fd by Genero Studio 11401 ## Copyright (c) 2002-2007 Four J's Development Tools. All rights reserved. ##-------------------------------------------------------------------------------- ## WARNING! All changes made in this file will be lost! ##-------------------------------------------------------------------------------- SCHEMA ds LAYOUT( TEXT="terry") VBOX vb2 GRID gr1 { <G gb2 > material [aa0 ] < > } END -- GRID GRID gr2 { [aa1 ] } END -- GRID END -- VBOX END ATTRIBUTES GROUP gb2 : gb2, TEXT="QBE"; BUTTONEDIT aa0=FORMONLY.ima01 TYPE VARCHAR, ACTION=controlp, IMAGE="zoom", TABINDEX=1; CHECKBOX aa1=FORMONLY.more TYPE VARCHAR, TEXT="Other codition to print", NOT NULL, REQUIRED, VALUECHECKED="Y", VALUEUNCHECKED="N", TABINDEX=2; END

terry.4gl 檔源碼

# Prog. Version..: '5.10.16-10.10.14(00009)' # # Pattern name...: terry.4gl # Descriptions...: CR列示圖片 # Date & Author..: 2012/05/29 By terry DATABASE ds GLOBALS "../../config/top.global" DEFINE tm RECORD wc STRING, more LIKE type_file.chr1 END RECORD DEFINE l_table STRING DEFINE g_sql STRING DEFINE g_str STRING MAIN OPTIONS FORM LINE FIRST + 2, MESSAGE LINE LAST, PROMPT LINE LAST, INPUT NO WRAP DEFER INTERRUPT IF (NOT cl_user()) THEN EXIT PROGRAM END IF WHENEVER ERROR CALL cl_err_msg_log IF (NOT cl_setup("CZZ")) THEN EXIT PROGRAM END IF CALL cl_used(g_prog,g_time,1) RETURNING g_time LET g_pdate = 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 g_rep_user = ARG_VAL(8) LET g_rep_clas = ARG_VAL(9) LET g_template = ARG_VAL(10) LET g_rpt_name = ARG_VAL(11) LET g_sql = "ima01.ima_file.ima01,", #料號 "ima02.ima_file.ima02,", #品名 "ima021.ima_file.ima021,", #規格 "ima08.ima_file.ima08,", #來源碼 "gcb09.gcb_file.gcb09,", #料號圖片 "length.type_file.num5,", #圖片長度:利於CR列示處理 "width.type_file.num5" #圖片寬度:利於CR列示處理 LET l_table = cl_prt_temptable('terry',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' THEN CALL terry_tm(0,0) ELSE CALL terry() END IF CALL cl_used(g_prog,g_time,2) RETURNING g_time END MAIN FUNCTION terry_tm(p_row,p_col) DEFINE lc_qbe_sn LIKE gbm_file.gbm01 DEFINE p_row LIKE type_file.num5, p_col LIKE type_file.num5, l_cmd LIKE type_file.chr1000 LET p_row = 5 LET p_col = 16 OPEN WINDOW terry_w AT p_row,p_col WITH FORM "czz/42f/p_terry" ATTRIBUTE (STYLE = g_win_style CLIPPED) CALL cl_ui_init() CALL cl_opmsg('p') INITIALIZE tm.* TO NULL LET tm.more = 'N' LET g_pdate = g_today LET g_rlang = g_lang LET g_bgjob = 'N' LET g_copies = '1' WHILE TRUE CONSTRUCT BY NAME tm.wc ON ima01 BEFORE CONSTRUCT CALL cl_qbe_init() ON ACTION locale CALL cl_show_fld_cont() LET g_action_choice = "locale" EXIT CONSTRUCT ON IDLE g_idle_seconds CALL cl_on_idle() CONTINUE CONSTRUCT ON ACTION about CALL cl_about() ON ACTION help CALL cl_show_help() ON ACTION controlg CALL cl_cmdask() ON ACTION exit LET INT_FLAG = 1 EXIT CONSTRUCT ON ACTION qbe_select CALL cl_qbe_select() 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 OTHERWISE EXIT CASE END CASE END CONSTRUCT CALL ccl_translate_sql(tm.wc) RETURNING tm.wc 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 terry_w CALL cl_used(g_prog,g_time,2) RETURNING g_time EXIT PROGRAM END IF IF tm.wc=" 1=1 " THEN CALL cl_err(' ','9046',0) CONTINUE WHILE END IF DISPLAY BY NAME tm.more INPUT BY NAME tm.more WITHOUT DEFAULTS BEFORE INPUT CALL cl_qbe_display_condition(lc_qbe_sn) AFTER FIELD more IF cl_null(tm.more) OR tm.more NOT MATCHES'[YN]' THEN NEXT FIELD more END IF IF tm.more = 'Y' THEN CALL cl_repcon(0,0,g_pdate,g_towhom,g_rlang, g_bgjob,g_time,g_prtway,g_copies) RETURNING g_pdate,g_towhom,g_rlang, g_bgjob,g_time,g_prtway,g_copies 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 ON ACTION qbe_save CALL cl_qbe_save() END INPUT IF INT_FLAG THEN LET INT_FLAG = 0 CLOSE WINDOW cxcr706_w CALL cl_used(g_prog,g_time,2) RETURNING g_time EXIT PROGRAM END IF IF g_bgjob = 'Y' THEN SELECT zz08 INTO l_cmd FROM zz_file WHERE zz01='terry' IF SQLCA.sqlcode OR l_cmd IS NULL THEN CALL cl_err('terry','9031',1) ELSE LET tm.wc=cl_replace_str(tm.wc, "'", "\"") LET l_cmd = l_cmd CLIPPED, " '",g_pdate CLIPPED,"'", " '",g_towhom CLIPPED,"'", " '",g_rlang CLIPPED,"'", " '",g_bgjob CLIPPED,"'", " '",g_prtway CLIPPED,"'", " '",g_copies CLIPPED,"'", " '",tm.wc CLIPPED,"'", " '",g_rep_user CLIPPED,"'", " '",g_rep_clas CLIPPED,"'", " '",g_template CLIPPED,"'", " '",g_rpt_name CLIPPED,"'" CALL cl_cmdat('terry',g_time,l_cmd) END IF CLOSE WINDOW terry_w CALL cl_used(g_prog,g_time,2) RETURNING g_time EXIT PROGRAM END IF CALL cl_wait() CALL terry() ERROR "" END WHILE CLOSE WINDOW terry_w END FUNCTION FUNCTION terry() DEFINE l_sql STRING DEFINE sr RECORD ima01 LIKE ima_file.ima01, ima02 LIKE ima_file.ima02, ima021 LIKE ima_file.ima021, ima08 LIKE ima_file.ima08 END RECORD DEFINE l_ima01 LIKE type_file.chr50 DEFINE l_gcb09 LIKE gcb_file.gcb09, l_length LIKE type_file.num5, l_width LIKE type_file.num5 CALL cl_del_data(l_table) SELECT zo02 INTO g_company FROM zo_file WHERE zo01 = g_rlang IF g_priv2='4' THEN LET tm.wc = tm.wc CLIPPED," AND imauser = '",g_user,"'" END IF IF g_priv3='4' THEN LET tm.wc = tm.wc CLIPPED," AND imagrup MATCHES '",g_grup CLIPPED,"*'" END IF IF g_priv3 MATCHES "[5678]" THEN LET tm.wc = tm.wc CLIPPED," AND imagrup IN ",cl_chk_tgrup_list() END IF LET l_sql = "SELECT ima01,ima02,ima021,ima08 ", " FROM ima_file ", " WHERE ima1010 = '1' AND imaacti = 'Y'", " AND ",tm.wc CLIPPED PREPARE terry_prepare FROM l_sql IF SQLCA.sqlcode != 0 THEN CALL cl_err('prepare:',SQLCA.sqlcode,1) CALL cl_used(g_prog,g_time,2) RETURNING g_time EXIT PROGRAM END IF DECLARE terry_curs CURSOR FOR terry_prepare LOCATE l_gcb09 IN MEMORY #CLOB對象載入2進制內存區 FOREACH terry_curs INTO sr.* IF SQLCA.sqlcode != 0 THEN CALL cl_err('foreach:',SQLCA.sqlcode,1) EXIT FOREACH END IF #圖片CLOB LET l_ima01 = "ima01=",sr.ima01 CLIPPED SELECT gcb09 INTO l_gcb09 FROM gca_file,gcb_file WHERE gca01=l_ima01 AND gca08='FLD' AND gca07=gcb01 AND gca08=gcb02 AND gca09=gcb03 AND gca10=gcb04 #java程式處理圖片長寬信息 # LET l_cmd = "sh ",FGL_GETENV("DS4GL"),"/bin/javapic/javapic.sh ", # ," 2>/dev/null" # LET l_channel_cmd = base.Channel.Create() # CALL l_channel_cmd.openPipe(l_cmd,"r") EXECUTE insert_prep USING sr.*,l_gcb09,l_length,l_width INITIALIZE sr.*,l_length,l_width TO NULL END FOREACH FREE l_gcb09 #釋放CLOB對象佔據的內存區 LET g_sql="SELECT * FROM ",g_cr_db_str CLIPPED,l_table CLIPPED CALL cl_wcchp(tm.wc,'ima01') RETURNING tm.wc CALL cl_prt_cs3("terry",'terry',g_sql,g_str) END FUNCTION

注意:4GL裏面處理二進位對象需先LOCATE入二進位內存,用完后請FREE釋放該內存!

terry.xml 檔源碼

<?xml version="1.0" encoding="BIG5" standalone="yes"?> <NewDataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="terry"> <xs:complexType> <xs:sequence> <xs:element name="ima01" type="xs:string" minOccurs="0" /> <xs:element name="ima02" type="xs:string" minOccurs="0" /> <xs:element name="ima021" type="xs:string" minOccurs="0" /> <xs:element name="ima08" type="xs:string" minOccurs="0" /> <xs:element name="gcb09" type="xs:base64Binary" minOccurs="0" /><!--注意gcb09的形態為base64Binary--> <xs:element name="length" type="xs:decimal" minOccurs="0" /> <xs:element name="width" type="xs:decimal" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> </NewDataSet>

terry_0_std.rpt CR報表範本說明

terry程式 CR報表列示結果

尴尬相信大家都知道怎麼在CR報表中做圖片的列示了,這裡就介紹到這裡!

http://blog.csdn.net/yihuiworld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值