線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:17470
推到 Plurk!
推到 Facebook!

如何列印 A4 一半大小的報表

尚未結案
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-08 16:19:15 IP:211.21.xxx.xxx 未訂閱
如題,目前我要的報表版面剛好是 A4 的一半 列印時不想(能)動到印表機格式(印表機仍是 A4 格式直印) 但又不想每頁 A4 只列印上半部就跳到下一面,而讓A4下半部空白 是否有什麼物件方法可以讓我的報表版面是 一頁 A4 印上下兩頁而列表機的版面仍是 A4 ... 發表人 - bruce0211 於 2004/03/08 17:07:47
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-11 12:50:35 IP:220.139.xxx.xxx 未訂閱
如果印表機本身有支援兩頁合併一頁的功能,那只需要設定印表機的預設參數,即可達到。 如果印表機本身不支援兩頁合併一頁的功能,則可以使用 fineprinter 之類的產品,同樣,只需設定好 fineprinter 即可達到想要的功能。 http://www.fineprint.com/    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-11 13:52:45 IP:211.21.xxx.xxx 未訂閱
我以為這個問題不難 只要有經驗的人點一下即可 沒想到這個問題原來不簡單... 由於還有其他數十支報表都同樣是 A4 Size 所以無法臨時切換 Size 換來換去 另外由於系統開發限制,也不能使用 3'rd 元件 我得好好來想個辦法了 >_<~~~~~
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-11 14:10:31 IP:211.21.xxx.xxx 未訂閱
對了,我剛想到 由於報表 Size 固定為 A4 就算使用 fineprinter , 他也是等比例縮小  也就是說我還是要先解決 A4 版面的問題 如果我無法解決 A4 上下半面的問題 印出來只有 A4 的一半,下一頁面印到第二頁的 A4 去 如此透過 fineprinter 縮小為兩頁合併 看到的還是兩個下半部都空白的 A4 合併在一起  
 
┌──────────────────┐
│┌───────┐┌───────┐│
││              ││              ││
││              ││              ││
││              ││              ││
│├───────┤├───────┤│
││              ││              ││
││    空白      ││     空白     ││
││              ││              ││
││              ││              ││
│└───────┘└───────┘│
└──────────────────┘
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-11 14:45:44 IP:61.221.xxx.xxx 未訂閱
請問 使用A5不行嗎 如是 點陣中一刀的 記的是選像中 的 8/11 紙張 (不太記的QR的選項) 不過 這紙張是 28/21 cm (一般的進貨單) 如果 是雷射印象機 就沒這問題 因為 只要事先紙張先請人裁定A4一半 另一方式 採用 繪圖工具程式 如adobe Photshop 巨集指令 紙張輸出 或 offiec的word 如adobe Photshop 巨集指令 紙張輸出 應用於 大頭貼 等影像輸出可鑑 但這些是 噴墨A3印表機 有A5 點陣的 就不太知道 目前 這2者較準 但印表機咬紙設定 仍A4咬紙 所以可能要事先裁紙 如 AUTO CAD 紙張好像也沒 自訂 圖框是有 準確度0.後8碼 有些是 印表機不支援的 可能就沒有辦法了 發表人 - conundrum 於 2004/03/11 14:56:09
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-11 14:55:01 IP:211.21.xxx.xxx 未訂閱
討厭就討厭在客戶拿 A4 噴墨來列印 ...
 
客戶的需求
┌───────┐ 
│              │ 
│   第一頁     │
│              │  
├───────┤
│              │
│   第二頁     │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第三頁     │
│              │  
├───────┤
│              │
│   第四頁     │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第五頁     │
│              │  
├───────┤
│              │
│   第六頁     │
│              │
└───────┘
(以此類推)    而非
┌───────┐ 
│              │ 
│   第一頁     │
│              │  
├───────┤
│              │
│    空白      │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第二頁     │
│              │  
├───────┤
│              │
│    空白      │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第三頁     │
│              │  
├───────┤
│              │
│    空白      │
│              │
└───────┘
(以此類推)    
發表人 - bruce0211 於 2004/03/11 14:58:23
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-11 14:59:56 IP:61.221.xxx.xxx 未訂閱
bruce0211 兄 這可說 是亂說的 你可以試試 使用html 由於html會有自動跳格的問題 你可以一次載2個html模板 試看看 是否可以 在將此2個模版使用DC值 類似螢幕快照 轉圖放大A4列印 不過 資料過多部份 當然可能無法顯示 控制上以一點麻煩 發表人 - conundrum 於 2004/03/11 15:01:17
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-11 15:25:57 IP:211.21.xxx.xxx 未訂閱
如果是能夠自行控制 我就算用 TPrint 類別自己寫 或像 DOS 程式先轉成文字檔在列印 早就可把他搞定 問題就在這支報表是數十支報表中的一支 所有風格都是統一的 全部使用 A4 Size , 全部都要有預覽介面 總不能特別做出一支跟其他支不一樣的報表吧 ...
cxh17895
初階會員


發表:13
回覆:37
積分:25
註冊:2003-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-12 07:53:51 IP:210.68.xxx.xxx 未訂閱
大大你好! 你應該是點陣印表機吧!才會有A4印一半(中一刀)格式吧!前陣子也是為了 中一刀格式在大亂!但經過一番試驗,有成功過哦!心得是,全部是驅動程式問題 我的印表機是 LQ-670C, 裝WINDOWS 內建的,不行,會印LETTER一整張,(印一半) 裝WINDOWS內建的 570C ,可以,印的很好, 裝EPSON原廠提供的 LQ-670C 程式,可以,不過頭尾會被砍掉一點 QRP VER 3.62 DELPHI 6.0 WINDOWS XP PRO 在OS內,再新增一台A4中一刀專用的印表機,要印時,再點選它! 你試試看,以上我近期心得!
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-12 08:41:52 IP:211.21.xxx.xxx 未訂閱
感謝長官提供的方式 不過我前面說過 1.客戶的報表全部噴墨 A4 來列印,其它的印表機驅動就不再考慮 2.客戶的確是由 DOS(UNIX)模式轉到Windows 平台,所以才有這種報表格式 3.此報表只是客戶數十支報表中的一個特例,其它的報表用 QuickReport 沒什麼大問題 4.全部的報表不管任何格式,全部統一風格(A4 Size 紙張,預覽方式,同一台印表機) 5.我有想到方法,等測試成功再貼到本版,不過有經驗的長官還是可提供高明的方法
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-12 13:02:05 IP:220.139.xxx.xxx 未訂閱
如果只有此模組的程式是您自己可以控制的,那就把此模組輸出的格式改變就好了,原本一頁只輸出 N 筆半頁 A4 格式,那就改成一頁輸出 2xN 筆整頁 A4 格式,這樣就是只改你的部分就好,別的模組維持原狀不必修改。    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-12 15:24:44 IP:211.21.xxx.xxx 未訂閱
感謝各位長官提供的方法, 這個報表還有其他我未提到的困難部分 1.每頁(A4半面)都有自己的Page Header / Page Footer  
  完整的一張A4
┌───────┐ 
│(Page Header) │ 
│              │ 
│    第一頁    │
│              │ 
│(Page Footer) │  
├───────┤
│(Page Header) │ 
│              │ 
│    第二頁    │
│              │ 
│(Page Footer) │  
└───────┘
 
2.每頁中的資料是群組式的 所以假設每頁(A4半面)資料最多 20 行 有可能中間有不足行的資料 例如第一頁20 行,第二頁13 行,第三頁又是印滿20 行 但不能因為第二頁資料比較少,第三頁就縮到前面來 永遠都是
 
┌───────┐ 
│              │ 
│   第一頁     │
│              │  
├───────┤
│              │
│   第二頁     │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第三頁     │
│              │  
├───────┤
│              │
│   第四頁     │
│              │
└───────┘
┌───────┐ 
│              │ 
│   第五頁     │
│              │  
├───────┤
│              │
│   第六頁     │
│              │
└───────┘
(以此類推)
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-13 08:44:58 IP:211.21.xxx.xxx 未訂閱
公佈我測試成功的答案(如果有更"使馬特"(SMART)的做法還請繼續告知)    1.其實這張報表列印的內容是傳票列印 2.我不知會計法是否有規定每筆傳票只能有20筆資料,但客戶的要求就是每張傳票只有20筆資料,每20筆編一個傳票流水號;不能因為換平台使用A4來列印,就把它一張傳票印40筆資料 3.從整個交易紀錄檔抓出的交易紀錄,應稅/免稅的資料要分別列印,同一群組者 (同為應稅或同為免稅)每20筆編一個傳票號碼(也就是列印在同一張傳票上) 4.假設我今天從交易資料抓出來的應稅資料有 41 筆,免稅資料有25筆,我要的報表輸出為 第一頁20筆應稅 + 第二頁20筆應稅 + 第三頁1筆應稅 + 第四頁20筆免稅 + 第五頁5筆免稅 , 也就是 20+20+1+20+5 (應/免稅不能混在一起,所以第三頁的1筆應稅要獨立一頁) 5.QUICK REPORT 的設計中我只有放的 BAND 如下 : GROUP HEADER + DETAIL + GROUP FOOTER , 其中沒有 PAGE HEADER 跟 PAGE FOOTER , 用 GROUP HEAD + GRPUP FOOTER 來代替 PAGE HEADER 跟 PAGE FOOTER  6.由於每頁都要補滿20筆資料,才不會有的頁面大有的頁面小,而乖乖的每張A4都有工整的上下兩半面傳票頁面,所以勢必要建一個 TAMP 的 TABLE 7.先將應稅資料 query 出來放到 temp table , 檢查資料數是否為 20 的倍數,否則補滿只有傳票號的空資料,本例應稅有41筆,所以要再補19筆空的應稅紀錄,同樣再 QUERY 出 25 筆的免稅資料並補滿15筆空的免稅資料,這樣 TEMP TABLE 就有 100 筆資料,其中有60筆應稅(41筆應稅+19筆應稅空資料)+40筆免稅(25筆免稅加15筆免稅空白資料) 8.QUICK REPORT 的 DATA SET 指到 TEMP TABLE ,以傳票號碼當 GROUP 條件,傳票表頭的資料就印在GROUP HEADER 中,每張傳票的表尾合計就印在GROUP FOOTER 中,這樣倒出來的報表就是工工整整的5頁(100/20=5) 傳票資料,每張傳票頁面佔去半張 A4,也就是共印了兩張半的 A4 報表  
┌───────┐ 
│              │ 
│   第一頁     │
│              │ 傳票一, 20 筆應稅 
├───────┤
│              │
│   第二頁     │
│              │ 傳票二, 20 筆應稅
└───────┘
┌───────┐ 
│              │ 
│   第三頁     │
│              │ 傳票三, 20 筆應稅 (1 筆應稅   19 筆應稅空白資料) 
├───────┤
│              │
│   第四頁     │
│              │ 傳票四, 20 筆免稅
└───────┘
┌───────┐ 
│              │ 
│   第五頁     │
│              │ 傳票五, 20 筆免稅 (5 筆免稅    15 筆免稅空白資料)
├───────┤
│              │
│   (空白)    │
│              │
└───────┘
 
發表人 - bruce0211 於 2004/03/13 11:29:07
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-03-13 13:23:14 IP:211.76.xxx.xxx 未訂閱
這樣的作法應該就是最 SMART 的了吧  <>沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-03-13 16:51:27 IP:211.21.xxx.xxx 未訂閱
我花了兩個禮拜才想出這種以為是最笨的方法(完全沒技巧可言,見招拆招) 既然 dllee 長官如是說 , 我只好....先結案了
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-03-15 12:38:37 IP:210.65.xxx.xxx 未訂閱
Hi bruce0211、dllee 版大    早上試了一個新的 Solution 供你參考    http://delphi.ktop.com.tw/loadfile.php?TOPICID=14558895&CC=325605 1.建立兩個 QuickReport QuickRep1 與 QuickRep2 2.第一個 QuickRep2 為傳票之正常 Report,Size 為 A5 3.第二個 QuickRep1 僅放一個 DetailBand 與 QRImage,Size 為 A4,其中 DetailBand 與 QRImage 的 Height 與 QuickRep1 相同 4.進行 QuickRep2.Prepare,後進行 QuickRep1.PreView; 5.QuickRep1.OnNeedData 自行控制是否繼續,並將 QuickRep2.QRPrinter.Page Assign 給 QuickRep1.QRImage1
procedure TForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
    Inc(CurrentPage);
    MoreData := (CurrentPage <= TotalPage);
    IF MoreData THEN
        BEGIN
            TRY
                QuickRep2.QRPrinter.PageNumber := CurrentPage;
                QRImage1.Picture.Assign(QuickRep2.QRPrinter.Page);
            EXCEPT
            END;
        END;
end;
發表人 -
------
Fishman
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-03-15 14:18:32 IP:211.21.xxx.xxx 未訂閱
感謝 Fishman 長官熱心的提供新方法 有空我會試試 , 暫時先將其收藏以為日後參考
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-03-16 08:14:52 IP:61.222.xxx.xxx 未訂閱
我想到的是從資料來源動手腳...
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-03-16 11:37:49 IP:211.21.xxx.xxx 未訂閱
引言: 我想到的是從資料來源動手腳...
1.由於每頁要 20 筆(本例)才剛好能印 A4 半頁 2.但每個群組 Query 出的資料不可能都恰好20 的倍數 3.所以要想辦法補差額讓 RECORDCOUNT 成為 20 x N 筆 4.我不知如何讓原始的資料庫生出虛擬的紀錄筆數 5.只好將資料到到另一個 temp table , 在擴增虛擬紀錄數 6.QuickReport 指到這個 temp table 7.不知 hahalin 長官指的方法不就是我所用的方法嗎 ?
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-03-16 13:07:45 IP:61.222.xxx.xxx 未訂閱
布乳思長官所規劃的也是小弟所想到的 也是一種不錯的撒路訓
系統時間:2024-04-19 7:14:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!