全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1020
推到 Plurk!
推到 Facebook!

EEP報表解決方案-WordPlate元件

 
t0922610976
一般會員


發表:11
回覆:16
積分:15
註冊:2003-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-14 13:34:43 IP:61.220.xxx.xxx 未訂閱
報表解決方案-WordPlate元件 【前言】 WORD的功能強大,界面親和,在排版、表格、格式、圖形及列印輸出的處理上,表現不錯。利用Word的優點,來當作報表輸出的方式,具有下列幾個好處: 1. 設計報表比較容易:可以讓使用者先行設計好格式,再由程式人員定義資料欄位。 2. 豐富的報表呈現:利用WORD的多樣功能,可以設計較複雜的報表格式。 3. 可動態變更格式,而不需要重新編譯程式。 4. 文件列印輸出的格式,不會因更換印表機,而無法正常輸出。 【用途】 WORDPLATE元件的用途非常廣泛,只要適合用WORD來呈現的報表, 都可以使用,用途大致如下: 1. 一般基本報表:屬於一筆資料一頁的資料卡或是表格,例如產品基本資料卡、客戶資料卡及服務記錄卡。 2. 套表單據:屬於MASTER/DETAIL的方式,例如訂購單、報價單及貿易文件。 3. 複雜綜合性文件:此種文件為一個多頁的RTF(DOC)整理性或綜合性的報表,資料來源有多個或多筆,此情形極為複雜,但在WORDPLATE中,只要將報表於WORD中設計好,留下套表的欄位即可快速設計,例如會計師所用的財報稅報資料都極為複雜,在WORDPLATE應可以輕鬆應付。 4. 報表設計方式簡單:可將WordPlate元件放於現有的Report或直接於Form輸出。使用的方式很簡單,先將WORDPLATE貼於Report Form中,放置一個輸出至Word的按鈕以及製作範本檔。當報表輸出時是採用Word的方式,而不必依賴使用任何Report的設定。 5. 與EMAIL結合:任何對外對內輸出到WORD的檔案,皆可以用WordPlate來定義直接輸出到EMAIL上當附件,並可以定義收件者的EMAIL地址與EMAIL主題。 【原理】 1. 要設計WORDPLATE之前,必須先在WORD中來設計表格,設計時完全以WORD為主,不管是字型還是格式都是依照WORD傳統習慣,留下要套入資料的空格,是以 $CDS(ROW,COLUMN)的格式來設定。 A. $ 為此套表標誌(TAG)的前置符號。 B. CDS則代表資料表的名稱。 C. ROW則代表要CDS的第幾筆資料。 D. COLUMN則代表CDS中第幾個欄位。 2. WORD中必須將其存成RTF檔案格式,才能讓WORDPLATE元件來處理,因為WORDPLATE是會先開啟TF檔,並去更換$CDS(ROW,COLUMN)為實際的資料,此更換方式是以字串更換的方式進行,速度與效能將比OLE或ACTIVE-X的方式快上多倍以上。 3. 在Report或Form中貼入WORDPLATE,設定RTF檔案中各個TAG與CDS資料表真正的對應關係,如果其$CDS(ROW,COLUMN)的CDS名稱與COLUMN次序與表單內的CDS是允合的話,可以用一個「AutoMatch」即可自動對應其關係,即RTF檔內的每一個TAG格式要替換成那一個CDS的那一欄位資料,透過Report或Form的WordPlate的元件將CDS的資料套到RTF檔案上,再從WordPlate將RTF檔案轉成DOC檔案.。 【屬性說明】 屬性 說明 Active(啟動) 此屬性設為True時,才能讓WORDPLATE正常運作,主要是為了配合報表輸出到WORD時,是否要使用WORD套表的方式 Dataset(資料表) 指輸出到WORD的主檔,如果其RTF表格為ASTER/DETAIL的資料時,此資料表則代表MASTER. BodyDocDatas(套表欄位定義) 套表的欄位定義,屬性如下:1. RTFFile(格式來源檔案): 指RTF檔案名稱, 此檔名並沒有PATH,PATH定義於OutPutPath中,輸出時會以此檔做為套表基本表格。2. RTFTags(欄位定義): 為一個集合,如下的欄位定義,一般是在WORDPLATE中Double Click以物件編輯器來設定之。3. DataField(欄位名稱): 每個TAG所對應的欄位名稱,自動對應時是以COLUMN的次序做為取得欄位名稱的原則。4. Pict(定位格式): 輸出時可以用此屬性來設定輸出的格式.。 MasterKeyFields(主鍵欄位) 當輸出到WORD時有用到MASTER/DETAIL的關係時,就必須定義此MASTER的主鍵欄位,好讓系統可以處理MASTER/DETAIL的關係 OutputPath(輸出路徑) 選擇要輸出的DOC路徑,來源RTF檔也是須以此路徑來讀取RTF檔案 OutPutFileName(輸出檔名) 是否要指定輸出DOC檔案的名稱,此僅適用於NeedSingleDoc=True時,因為如果輸出為多檔,則會以DefaultFileHead來命名DOC檔案名稱,沒有定義時,會自動 依日期時間來編出檔名,以防止重複 NeedSingleDoc(合併成一個檔案) 是否將所有輸出的多個DOC合成一個DOC檔案,原本Dataset印滿一個RTF檔案後,即會再新增另一個DOC輸出下一筆DataSet,所以有可能輸出成多個DOC AutoVersion(自動版本管理) 預設為True,當Client端沒有此RTFFile或RTFFile比Server舊時,會自動向Server下載. Name(名稱) WordPlate元件名稱 DefaultFileHead(檔案命名開頭) 當NeedSingleDoc=False時,可能會產生多個DOC檔案,其命名原則即以此做為檔名的開頭,如"INVO",即會編出 "INVO001.DOC" "INVO002.DOC"等檔名 OutPutMode(輸出模式) 1. NONE(僅輸出到DOC檔不打開)2. LaunchWord(輸出並打開DOC檔),3. EMail(輸出到DOC,並作為附件以E-MAIL發送),此模式可以在Report或WORDPLATE.OUTPUT(1)時,可以讓User自行選擇 EmailAddress(EMAIL地址) 當USER選擇EMAIL當附件傳送此DOC時,可以在此設定要傳送的E-MAIL地址. EmailTitle(EMAIL主題) 當USER選擇EMAIL當附件傳送此DOC時,可以在此設定要傳送的E-MAIL主題 PageNumber(頁次號碼) 此為WORDPLATE的頁次號碼,當每一個DOC產生時,會自動加一 OUTPUT(Mode-N) WORDPLATE的一個METHOD,用來輸出CDS資料到WordPlate所指定的RTF檔案中。1. Mode-N為0代表不會出現讓USER選擇輸出到那裡的交談畫面。2. Mode-N為1代表會出現此交談畫面供User來選擇與操作,此最適合於FORM表單中的輸出報表,不必設計Report模組,而直接以WORDPLATE來輸出到WORD中。 【實例一-客戶資料卡】 1. 先以WORD製作一個表格, 抬頭為'客戶資料卡', 分別設計下列TAG 客戶編號 $CDS0(1,1) 建檔日期 $CDS0(1,13) 客戶名稱 $CDS0(1,2) 連絡人 $CDS0(1,3) 職稱 $CDS0(1,4) 電話 $CDS0(1,7) 傳真 $CDS0(1,8) EMAIL $CDS0(1,10) 客戶地址 $CDS0(1,5) 發票地址 $CDS0(1,6) 備註 $CDS0(1,12) 2. 將此檔另存新檔為CUST.RTF。 3. 在原來已設計好的客戶資料報表中,假設為 CUSTREP,利用已經完成的客戶資料表來設計「客戶資料卡」的套表,在CUSTREP的Form中貼上WORDPLATE, 將資料表設為'CDS0', (原來CUSTREP已經有CDS0,就是CUSTREP的資料表對象)。 4. 在WORDPLATE上Double Click,呼叫出物件編輯器,選擇RTF來源檔為CUST.RTF,此時系統會自動將所有TAG自動列出,因為TAG NAME的CDS名稱剛好與Form中的CDS名稱相同,且每個TAG的欄位次序也是正確的, 所以我們直接用「自動對應欄位」功能,自動決定其TAG所真正對應的欄位名稱,最後按下存檔按鈕。 5. 再來設定ACTIVE為True,OutPutPaht預設為'DOC',NeedSingleDoc也為True不必更動, OutPutFileName我們設為'CUSTLIST.DOC',代表輸出的檔名。 6. 貼上一個按鈕,撰寫程式: WordPlate1.Output(1); 【實例二-出貨單】 1. 先以WORD製作一個表格,抬頭為'出貨單',分別設計下列TAG。 出貨單編號 $CDS0(1,1) 出貨日期 $CDS0(1,18) 客戶名稱 $CDS0(1,20) 連絡人 $CDS0(1,22) 電話 $CDS0(1,23) 送貨地址 $CDS0(1,17) 發票地址 $CDS0(1,24) 付款方式 $CDS0(1,6) 總金額 $CDS0(1,14) 稅金 $CDS0(1,15) 含稅金額 $CDS0(1,16) 備註 $CDS0(1,12) 其中, 後面四個TAG在表尾處, 中間預留表格給DETAIL使用 2. 中間的位置以GRID來設計DETAIL的部份,如出貨單每張可以列印10個ITEM, 因此我們畫了一個11列的表格,因為第一個列為表頭, COLUMN則分別為 '品號','品名','數量','單位','單價','小計'等,在WORDPLATE中, DETAIL的定義必須每個 ROW都要定義,所以必須在WORD的GRID中填滿資料,如下: 品號 品名 數量 單位 單價 小計 $CDS1(1,2) $CDS1(1,3) $CDS1(1,4) $CDS1(1,5) $CDS1(1,6) $CDS1(1,7) $CDS1(2,2) $CDS1(2,3) $CDS1(2,4) $CDS1(2,5) $CDS1(2,6) $CDS1(2,7) $CDS1(3,2) $CDS1(3,3) $CDS1(3,4) $CDS1(3,5) $CDS1(3,6) $CDS1(3,7) $CDS1(4,2) $CDS1(4,3) $CDS1(4,4) $CDS1(4,5) $CDS1(4,6) $CDS1(4,7) $CDS1(5,2) $CDS1(5,3) $CDS1(5,4) $CDS1(5,5) $CDS1(5,6) $CDS1(5,7) $CDS1(6,2) $CDS1(6,3) $CDS1(6,4) $CDS1(6,5) $CDS1(6,6) $CDS1(6,7) $CDS1(7,2) $CDS1(7,3) $CDS1(7,4) $CDS1(7,5) $CDS1(7,6) $CDS1(7,7) $CDS1(8,2) $CDS1(8,3) $CDS1(8,4) $CDS1(8,5) $CDS1(8,6) $CDS1(8,7) $CDS1(9,2) $CDS1(9,3) $CDS1(9,4) $CDS1(9,5) $CDS1(9,6) $CDS1(9,7) $CDS1(10,2) $CDS1(10,3) $CDS1(10,4) $CDS1(10,5) $CDS1(10,6) $CDS1(10,7) 3. 將此檔另存新檔為INVO.RTF。 4. 在原來已設計好的出貨單表單中,假設為 INVO, 我們將直接以出貨表單來直接輸出到WORD中,因此在INVO的表單中貼上WORDPLATE,將資料表設為'CDS0'(為出貨單中的MASTER資料表)。 5. 在WORDPLATE上Double Click,呼叫出物件編輯器,選擇RTF來源檔為INVO.RTF, 此時系統會自動將所有TAG自動列出,會列出很多的TAG NAME,不過因為DETAIL的Row很多,但大多是重複的,因為TAG NAME的CDS名稱剛好與FORM的CDS名稱相同,假設每個TAG的欄位次序也是正確的,所以我們直接用'自動對應欄位'功能,自動決定其TAG所真的對應的欄位名稱,最後按下存檔按鈕。 6. 設定ACTIVE=True, 讓WordPlate可以真正作用, OutPutPaht預設為'DOC', NeedSingleDoc也為True不必更動,OutPutFileName設為'INVO.DOC',代表輸出的檔名。 7. 此為MASTER/DETAIL的套表,所以必須定義其MasterkeyFields為'TRN_NO'代表DETAIL是以此欄位作為不同MASTER的分別。 8. 貼上一個按鈕,撰寫程式: WordPlate1.Output(1);
系統時間:2024-05-16 5:16:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!