资源描述
按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,TIPTOP GP,教育訓練,報表作業程式,本教材以,TIPTOP GP 5.0,版為說明標準,1,學習目標,本章說明報表標準程式。,報表種類繁多,其複雜度也各不相同。,雖然如此,報表類程式的流程卻相當固定,:,包含使用者輸入條件及製作兩部分。,學習完本章後,你將可以了解以下部分,:,報表類格式如何撰寫。,2,報表類型,CR,報表,邏輯簡單,邏輯複雜,3,CR,報表製作報表流程圖,MAIN,tm(),xxxx(),xxxx(),開啟視窗,使用者輸入條件,組,sql,並抓取資料,與,Crystal Report,串接,外部程式串過來,background job,1.,在,xxxx(),組,sql,抓取資料,與,Crystal Report,串接,2.,新的,CR,報表不會有,rep(),這個,Function,4,程式畫面,5,CR,報表畫面,6,外部程式傳遞參數或,Background Job,時接受參數,tm(),xxxx(),rep(),MAIN,可接受參數,ARG_VAL(,序號,),判斷參數是否有傳入值來決定是否執行,Background Job,7,外部程式傳遞參數或,Background Job,時接受參數,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 tm.s =ARG_VAL(8),LET tm.t =ARG_VAL(9),LET tm.u =ARG_VAL(10),LET tm.a =ARG_VAL(11),LET tm.b =ARG_VAL(12),LET tm.c =ARG_VAL(13),LET g_rep_user=ARG_VAL(14),LET g_rep_clas=ARG_VAL(15),LET g_template=ARG_VAL(16),tm(),xxxx(),rep(),MAIN,8,外部程式傳遞參數或,Background Job,時接受參數,IF(NOT cl_user()THEN,EXIT PROGRAM,END IF,WHENEVER ERROR CALL cl_err_msg_log,IF(NOT cl_setup(AXM)THEN,EXIT PROGRAM,END IF,CALL cl_used(g_prog,g_time,1)RETURNING g_time,IF NOT cl_null(tm.wc)THEN,CALL r410(),ELSE,CALL r410_tm(0,0),END IF,CALL cl_used(g_prog,g_time,2)RETURNING g_time,tm(),xxxx(),rep(),MAIN,9,輸入條件,分為,construct,跟,input,部分,呼叫,cl_dynamic_locale,延後時間執行作業,(Background Job,設定,),tm(),xxxx(),rep(),MAIN,10,輸入條件,CONSTRUCT BY NAME,tm.wc ON,oea01,oea02,oea03,oea04,oea14,oea15,oea23,oea12,oeahold,END CONSTRUCT,IF g_action_choice=locale THEN,LET g_action_choice=,CALL cl_dynamic_locale(),CONTINUE WHILE,END IF,INPUT BY NAME,tm2.s1,tm2.s2,tm2.s3,tm2.t1,tm2.t2,tm2.t3,tm2.u1,tm2.u2,tm2.u3,tm.a,tm.b,tm.c,tm.more,WITHOUT DEFAULTS,END INPUT,tm(),xxxx(),rep(),MAIN,11,輸入條件,IF g_bgjob=Y THEN,SELECT zz08 INTO l_cmd FROM zz_file,WHERE zz01=axmr410,IF SQLCA.sqlcode OR l_cmd IS NULL THEN,CALL cl_err(axmr410,9031,1),ELSE,LET tm.wc=cl_replace_str(tm.wc,),LET l_cmd=l_cmd CLIPPED,g_pdate CLIPPED,g_towhom CLIPPED,CALL cl_cmdat(axmr410,g_time,l_cmd),END IF,CLOSE WINDOW r410_w,CALL cl_used(g_prog,g_time,2)RETURNING g_time,EXIT PROGRAM,END IF,tm(),xxxx(),rep(),MAIN,12,SQLCR,報表處理,邏輯簡單,可直接把,TIPTOP,所產生的,SQL,傳給,CR,CALL cl_prt_cs1(),報,表結果,CR,專屬,DB,的暫存檔,CR,報表處理,邏輯複雜,,無法由單一,SQL,產生報表結果。,此類型的報表由,TIPTOP GP,把複雜的邏輯先處理,再寫到,暫存檔,(,實體存在於,DB:ds_report),CALL cl_prt_cs3(),CR,報表類型,13,CR,報表,-,邏輯簡單,範例:,axmr110,14,報表結構,#,抓取資料,SQL,LET l_sql=SELECT obg01,obg02,ima02,ima021,“,“obg03,obg04,obg09,obg10,obg21,FROM obg_file,ima_file,WHERE,tm.wc,AND obg02=ima_file.ima01(+),ORDER BY obg02,#,與,Crystal Reports,串接,#CALL cl_prt_cs1(,程式代號,樣版代號,抓取資料,SQL,參數,),CALL cl_prt_cs1(axmr110,axmr110,l_sql,),tm(),xxxx(),MAIN,15,CR,報表,-,邏輯複雜,範例:,axmr310,16,產生,TempTable,CR(1),清除,TempTable,的資料,CR(2),將報表所需的資料寫到,TempTable,CR(3),與,Crystal Reports,串接,CR(4),程式修改部份,17,主程式,LET g_sql=oqa01.oqa_file.oqa01,oqa02.oqa_file.oqa02,.,-CR(1)-,#,建立報表暫存檔,LET l_table=cl_prt_temptable(axmr310,g_sql)CLIPPED,IF l_table=-1 THEN EXIT PROGRAM END IF,LET g_sql=INSERT INTO ds_report.,l_table CLIPPED,VALUES(?,?,?,?,?.)“,PREPARE insert_prep FROM g_sql,tm(),xxxx(),MAIN,18,報表結構,#,清除報表暫存檔資料,CALL cl_del_data(l_table),-CR(2)-,FOREACH,#,將資料寫入暫存檔,EXECUTE insert_prep USING,-CR(3)-,END FOREACH,#,與,Crystal Report,串接,#CALL cl_prt_cs3(,程式代號,樣版代號,抓取資料,SQL,參數,),CALL cl_prt_cs3(axmr310,axmr310,g_sql,g_str),-CR(4)-,tm(),xxxx(),MAIN,19,CR,報表樣,版,設計步驟,產生,XML,檔,(p_genxml),製作報表格式,(,編輯,Crystal Reports,樣版檔,),報表格式設定作業,(p_zaw),報表樣版、,XML,檔案存放至報表主機,20,產生,XML,檔,(p_genxml),CALL cs1(),21,產生,XML,檔,(p_genxml),4,1,2,3,輸入程式代碼,輸入,報表的,SQL,輸入報表的,sample data,下載,XML,到本機,C:tiptop,22,產生,XML,檔,(p_genxml),完成後的,XML,如此圖,23,產生,XML,檔,(p_genxml),CALL cs3(),24,產生,XML,檔,(p_genxml),4,1,2,3,輸入程式代碼,輸入,產生,TempTable,所傳的參數,輸入報表的,sample data,下載,XML,到本機,C:tiptop,25,產生,XML,檔,(p_genxml),如果不是從頭到尾改一支全新的,CR,報表,而是要在已存在的,CR,報表加欄位,那就直接用,WordPad,開啟舊的,XML,,將要加的欄位加上去即可,要加欄位,請從,別行,Copy,一行,,然後將欄位名,稱改掉,不要自,己打上去,這樣,出錯機率比較小,盡量打上,Sample,Date,,以便後面,編輯,rpt,檔案時可,以預覽,26,安裝,Microsoft XPS Document Writer,後續在編輯,CR,樣版檔時,因我們有規定了固定的幾種紙張格式。但其中幾種紙張由於太大,(A2,A1,A0),,所以必須安裝,Microsoft XPS Document Writer(,只有,XP,跟,2003,可裝,若非這兩種的,就請換裝,PDF Writer),後,才可選到這幾種紙張。,安裝步驟如下,(,需照此順序安裝,),:,(1),安裝,msxml6.msi,(2),安裝,XPSEP XP and Server 2003 32 bit.msi,27,安裝,Microsoft XPS Document Writer,安裝完後可在印表機裡看到,Microsoft XPS Document Writer,,然後需要設定,A2,A1,A0,三種紙張格式。,A0:,寬,84cm,,高,118.8cm,A1:,寬,59.4cm,,高,84cm,A2:,寬,42cm,,高,59.4cm(,若已有就不用再設定了,),28,製作報表格式,(,編輯,Crystal Reports,樣版檔,),29,1.,開啟,Crystal Reports,30,2.,透過,Crystal Reports,所提供的,標準報表精靈,來產生報表,31,3.,建立新連線,ADO.NET(XML),32,4.,選擇建立好的,XML,檔案路徑,完成,33,5.,選擇新增的,NewDataSet,,按下,來新增資料來源,34,6.,選擇顯示在報表上的欄位,35,7.,選擇群組欄位,36,8.,選擇摘要欄位,(,每個分組的小計,Total),37,9.,選擇只顯示出前五名的群組,38,10.,選擇分析圖表,39,11.,欄位篩選,40,12.,選擇報表範本,41,13.,報表樣版設定完成,42,14.,設定,報表樣版參數,(26,個,),title1-,公司名稱,title2-,報表名稱,date-,報表產生日期,time-,報表產生時間,user-,製表者,prog-TIPTOP,程式代號,p1p20,程式運用,Ps.,參數的順序一定要照左側,圖示的順序來編輯,參數,的型態皆為字串,43,15.,設定,報表樣版公式,(2,個,),location,動態,logo,用,printstatus,處理,(,結束,),、,(,接下頁,),用,44,製作報表樣版分為兩類,1.,在舊的,rpt,增加欄位,2.,寫一支新的,rpt,45,在舊的,rpt,增加欄位,要,aoou702,增加一個欄位,g09,,先將,XML,拿出來做修改,再開啟,aoou702.rpt,46,在舊的,rpt,增加欄位,47,寫一支新的,rpt,1.,開啟一支已經存在的,rpt,檔案,48,寫一支新的,rpt,2.,資料庫,-,資料庫專家,49,寫一支新的,rpt,3.,將這支,rpt,原來用的,DataSet,移除,50,寫一支新的,rpt,4.,建立新連接,ADO.NET(XML),51,寫一支新的,rpt,5.,選擇新增的,NewDataSet,,按下,來新增資料來源,52,寫一支新的,rpt,6.CR,會將原來那個,xml,的欄位移除,剩下一些跟舊,xml,無關的物件,53,寫一支新的,rpt,7.,檢視,-,欄位總管,-,資料庫欄位,-axmr340-,將欄位拖拉到欲放置的位置,54,Q:,為什麼要用舊的,rpt,來產生一支新的,rpt,?,因為我們的,CR,報表有一些固定要設定的參數、公式欄位、,logo,、隱藏方式,等等,如果每次編輯一個新的,rpt,都要從無到有,很容易會遺漏東西。用一支舊的來改,一些固定的參數、公式、,logo,等東西就不需再重新設定,對我們要產出報表所花的時間可以縮短很多。,55,報表格式設定作業,(p_zaw),56,CR,報表主機架構圖,安裝,目錄,正式區,topprod,測試區,toptest,標準區,topstd,tiptop,tiptop,tiptop,topcust,topcust,aim,aap,cim,cap,aimr100,aimr101,0,1,2,aimr100.xml,aimr100_0_std.rpt,aimr100_1_std.rpt,aimr100_2_std.rpt,57,報表樣版、,XML,檔案存放至報表主機,XML,檔案,CR Server-IIS,的預設網站,:topprod,的實際路徑,topcust,模組,程式代號,模組目錄設定為,小寫,例如,:,10.40.16.5topprodtopcustcxmcxmr213cxmr213.xml,報表樣版檔案,CR Server-IIS,的預設網站,:topprod,的實際路徑,topcust,模組,程式代號,語言別,例如,:,10.40.16.5topprodtopcustcxmcxmr2130cxmr213_0_std.rpt,58,CR,報表重要功能用法,59,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,60,1.,跳頁的處理有三種狀況:,(1),明細類報表若有設定群組,可依照不同群組做跳頁的動作,例:,aoou702,(2),憑證類報表通常是印完一張單據後就跳頁印別張單據,例:,axmr400,(3),依照畫面,INPUT,跳頁條件的勾選,才決定要不要跳頁,例:,aapr121,61,(1),明細類報表若有設定群組,可依照不同群組做跳頁的動作,(aoou702),62,(2),憑證類報表通常是印完一張單據後就跳頁印別張單據,(axmr400),63,(3),依照畫面,INPUT,跳頁條件的勾選,才決定要不要跳頁,(aapr121),64,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,65,2.,金額取位,可透過,Crystal Report,的公式設定,搭配,g_azi,變數,,進行格式處理。,(,以下,以,axmr551 Invoice,列印為例,單據單價,&,金額,依幣別進行,“,動態,”,取位。,),66,4gl,調整,(1),產生,temp table,段增加需要的欄位,67,4gl,調整,(2),抓取小數位數相關資料,(3),將取位資料寫入暫存檔,68,rpt,調整,(1),針對 單價 或 金額欄位,(,數字類型,),,按右鍵進行欄,位格式設定,進入數字自訂頁,進行小,數位數與進位設定的公式編輯器,69,rpt,調整,(2),點選小數位數的公式編輯器,指定使用的取位欄位,(3),點選進位的公式編輯器,指定使用的進位欄位,70,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,71,3.,動態,logo,(1),新增一個公式欄位:,location,(2),更改物件名稱為:,Picture1&,把,location,指定給,圖形位置,(3)LOGO,不要有超連結,72,(1),新增一個公式欄位:,location,73,(1),新增一個公式欄位:,location,74,(1),新增一個公式欄位:,location,75,(2),更改物件名稱為:,Picture1&,把,location,指定給圖形位置,76,(2),更改物件名稱為:,Picture1&,把,location,指定給圖形位置,77,(2),更改物件名稱為:,Picture1&,把,location,指定給圖形位置,78,(2),更改物件名稱為:,Picture1&,把,location,指定給圖形位置,79,(3)LOGO,不要有超連結,80,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,81,4.Word,套表,(1),先準備好要套印的,Word,檔案,(,以,abxr410,為例,),(2),開啟,rpt,,插入,OLE,物件,(3),在對應的位置上擺上欄位,82,(1),先準備好要套印的,Word,檔案,(,以,abxr410,為例,),83,(2),開啟,rpt,,插入,OLE,物件,1.,開啟,rpt,,選擇插入,,,OLE,物件,84,(2),開啟,rpt,,插入,OLE,物件,2.,選擇從檔案建立,瀏覽,找到編好的那個,Word,檔案,然後按下確定,85,(2),開啟,rpt,,插入,OLE,物件,3.,將插入的物件拖拉到欲放置的位置,86,(3),在對應的位置上擺上欄位,87,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,88,5.,虛擬欄位,表頭的欄位內容,若為代號,+,簡稱,為達到與舊報表,一樣有,Clipped,效果,使用公式設定,虛擬欄位,串接。,做法有二:,(1),定一個公式欄位,來組合,”,代號,”,跟,”,說明,”,的値,(2),拉一個空白的文字物件,將,”,代號,”,跟,”,說明,”,欄位,拖入空白文字物件中,89,做法,1,:,(1),定一個公式欄位,來組合,”,代號,”,跟,”,說明,”,的値,(,命名規則:要組合,oea15,與,gem02,,公式請命名成,oea15_gem02),90,做法,1,:,(2),設定相加公式,91,做法,2,:,拉一個空白的文字物件,將,”,代號,”,跟,”,說明,”,欄位,拖入空白文字物件中,92,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,93,6.Barcode,(1),要在報表裡列印,Barcode,,,CR,主機上需先安裝,Barcode,相關,程式,C39Tools_Setup.exe(,若有要編輯,CR,檔案的,Client,端,也請安裝此,exe,檔,),(2),將主機上多出來的這些,Barcode,字體安裝到各,Client,端,(3),開啟,rpt,後,先定義一個公式欄位來處理,Barcode,(4),使用,BarcodeC39ASCII(),函式來處理,Barcode,(5),將此公式欄位拖拉到樣版上欲放置的位置,改變字體為,Barcode,字體,ps.,目前系統裡已經有使用,Barcode,的共有三支程式,aimr800,asfr102,apmr920,94,(1),安裝,Barcode,相關程式,C39Tools_Setup.exe,95,(2),將主機上多出來的這些,Barcode,字體安裝到各,Client,端,96,(3),開啟,rpt,後,先定義一個公式欄位來處理,Barcode,97,(4),使用,BarcodeC39ASCII(),函式來處理,Barcode,BarcodeC39ASCII(,要印成,Barcode,的欄位,),98,(5),變更,Barcode,欄位字體為,Code39RegularD,,,將此公式欄位拖拉到樣版上欲放置的位置,99,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,100,7.,簽核欄位,(1),直接做在,rpt,檔頁尾,已不再使用設定檔,(2),預留三行空白以方便簽核書寫,(,含簽核行,),(3),盡量左右對齊,平均分配頁尾的版面,冒號請用,全型,(,:,),輸入,101,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,102,8.,動態排序,TIPTOP,報表,在畫面,INPUT,有排序選項,103,(1),在,4gl,裡用傳參數的方式將排序選項的值傳到,CR,,然後,,在,rpt,裡定義三個公式欄位,group1,group2,group3,來分別判,斷要用那個欄位當排序的主角,104,(2),設定好這三個公式欄位後,以這三個公式欄位去設定群組,105,(3),三個群組都設定好之後,,rpt,區段格式就會長的像下面這樣,106,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,107,9.,日期欄位設定,108,109,110,都設定好之後,,rpt,存檔,就完成日期的欄位設定,111,以下幾個功能各位必須了解在,CR,中如何設定:,1.,跳頁,2.,金額取位,3.,動態,logo,4.,Word,套表,5.,虛擬欄位,6.,Barcode,7.,簽核欄位,8.,動態排序,9.,日期欄位設定,112,Thanks for Your Join.,鼎新電腦,產品處,113,
展开阅读全文