VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

報表列印技巧之3
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 1 樓

發表發表於: 星期一 三月 17, 2003 12:24 pm    文章主題: 報表列印技巧之3 引言回覆

如何計算總頁數,以實現“第?頁/總?頁”

在列印前根據細節區所列印的記錄條數,先進行計算,然後再列印,具體代碼:
PUBL mPAGE
SELE XXX   &&xxx=供列印的資料表
XX=10     &&XX=細節區所列印的記錄條數
mPAGE=IIF(RECCOUNT()%XX=0,INT(RECCOUNT()/XX),INT(RECCOUNT()/XX)+1)

mPAGE就是總頁數,這樣在需要總頁數的地方就可直接引用mPAGE變數了。
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 2 樓

發表發表於: 星期二 一月 13, 2009 8:32 pm    文章主題: Re: 報表列印技巧之3 引言回覆

Ruey 寫到:
如何計算總頁數,以實現“第?頁/總?頁”

在列印前根據細節區所列印的記錄條數,先進行計算,然後再列印,具體代碼:
PUBL mPAGE
SELE XXX   &&xxx=供列印的資料表
XX=10     &&XX=細節區所列印的記錄條數
mPAGE=IIF(RECCOUNT()%XX=0,INT(RECCOUNT()/XX),INT(RECCOUNT()/XX)+1)

mPAGE就是總頁數,這樣在需要總頁數的地方就可直接引用mPAGE變數了。

Ruey 仁兄: 您好!我常在網上看到您的大作,收獲豐富,謝謝您的慷慨.....
今天看到這技巧之3, mPAGE 的設定,在遇到恰好等於 0 時,有機會漏失資料
建議 mPage值恰好等於 0 時,要加1 ,就 OK 了,可以修改如下嗎?
mPAGE=INT(Reccount()/XX)+IIF(MOD(RECCOUNT(),XX)=>0, 1, 0)
再過幾天就 年來囉, 在此先向您 雙手一合 ....恭賀新禧!!!
回頂端
檢視會員個人資料 發送私人訊息
tigerlee39y



註冊時間: 2007-11-26
文章: 132
來自: taipei

第 3 樓

發表發表於: 星期三 一月 14, 2009 12:02 am    文章主題: 引言回覆

還有一種方式, 利用系統變數_pageno
nTotalPages=0
Report Form RPT_PRI_I noconsole &&虛作一遍,找出總頁數
nTotalPages=_pageno
*_pageno就是總頁數

_________________
各取所需 各盡所能
回頂端
檢視會員個人資料 發送私人訊息
janlih



註冊時間: 2003-11-04
文章: 69


第 4 樓

發表發表於: 星期三 一月 14, 2009 9:10 am    文章主題: 引言回覆

不同印表機,細節區所列印的筆數也不同
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 5 樓

發表發表於: 星期三 一月 14, 2009 11:45 am    文章主題: 引言回覆

tigerlee39y 寫到:
還有一種方式, 利用系統變數_pageno
nTotalPages=0
Report Form RPT_PRI_I noconsole &&虛作一遍,找出總頁數
nTotalPages=_pageno
*_pageno就是總頁數

利用虛印一遍方法找出總頁數 _Pageno,就是在最後一頁出問題,會拘留一些資料不印出,(因總數已到,列表機收工了,給你一張空白表單),惱人呵!
因此我設計一小模組,套在列印檔案之後完成印表工作:
************************************************
IF _Tally > 0
Select 0
SELECT Count(A1) AS nCustotal , Sum(B2) AS nChgtotal , Sum(C3) AS nPictotal From (列印檔案名) INTO CURSOR ASD
n_Page= 30 && 每頁長度
n_Custotal =Asd.nCustotal && 單項總計
n_Chgtotal =Asd.nChgtotal && 單項總計
n_Pictotal =Asd.nPictotal && 單項總計
n_Ptotal = INT( n_Custotal / n_Page) + IIF(MOD( n_Custotal , n_Page)=> 0, 1, 0 ) && 總頁數
SELECT (列印檔案名)
GO Top
SET Relation TO cccccc Into aaaaaa
SET Relation TO dddddd Into bbbbbb Additive
Title_01= "( 報 表 名 稱 ) "
Report Form Reportss.frx Noconsole Preview
ENDIF
****************************************************
在報表內設變數 4 ,初設值=0;
nChgtotal=nChgtotal+(欄位名稱) &&變數的多少依你需要而增減
nChgtotal=nChgtotal+(欄位名稱)
nChgtotal=nChgtotal+(欄位名稱)
以上是每頁的累計數
nNo =nNo+1 (這是每列編號)
****************************************************
當在 Preview 視窗內就能知道 n_page=? 是一頁的長度而就可以更正
以上程式碼僅供參考,至於各數值的位置,在報表上則由您來發揮吧! (假如有興趣的話)
回頂端
檢視會員個人資料 發送私人訊息
chilin



註冊時間: 2003-10-01
文章: 79
來自: Taipei,Taiwan

第 6 樓

發表發表於: 星期三 一月 14, 2009 1:07 pm    文章主題: 引言回覆

VFP8.0 已有此變數 _PAGETOTAL
_________________
一個喜愛Latte的男人
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
區榮熾



註冊時間: 2005-11-14
文章: 191


第 7 樓

發表發表於: 星期三 一月 14, 2009 8:06 pm    文章主題: 引言回覆

chilin 寫到:
VFP8.0 已有此變數 _PAGETOTAL


不知該變數有否作到我提到的缺失修正(+1),才能將最後資料印出 。
回頂端
檢視會員個人資料 發送私人訊息
tigerlee39y



註冊時間: 2007-11-26
文章: 132
來自: taipei

第 8 樓

發表發表於: 星期四 一月 15, 2009 5:06 am    文章主題: 引言回覆

不就是在報表的form裡面放一個變數欄位吧,為啥最後一頁印不出? 不懂
ALLTRIM(STR(_PAGENO))+" / "+alltrim(str(nTotalPages))+" 頁"

_________________
各取所需 各盡所能
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 9 樓

發表發表於: 星期四 一月 15, 2009 7:15 am    文章主題: 引言回覆

tigerlee39y 寫到:
不就是在報表的form裡面放一個變數欄位吧,為啥最後一頁印不出? 不懂
ALLTRIM(STR(_PAGENO))+" / "+alltrim(str(nTotalPages))+" 頁"


那種情形是這樣的;
頁的長度剛好等於0時,在最後的一頁就會產生缺失,這是VF6的狀況,所以我寫總頁數n_Ptotal時,當mod(reccount(), n_page) =>0, 1, 0),加上1以解決之,這是實作發生的狀況,特提出說明而已....
而你用 VF8的函數,我就不知道會不會.......也許經改善過了吧!
回頂端
檢視會員個人資料 發送私人訊息
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 10 樓

發表發表於: 星期五 三月 20, 2009 8:51 pm    文章主題: Re: 報表列印技巧之3 引言回覆

Ruey 寫到:
如何計算總頁數,以實現“第?頁/總?頁”

在列印前根據細節區所列印的記錄條數,先進行計算,然後再列印,具體代碼:
PUBL mPAGE
SELE XXX   &&xxx=供列印的資料表
XX=10     &&XX=細節區所列印的記錄條數
mPAGE=IIF(RECCOUNT()%XX=0,INT(RECCOUNT()/XX),INT(RECCOUNT()/XX)+1)

mPAGE就是總頁數,這樣在需要總頁數的地方就可直接引用mPAGE變數了。



VFP 9 有一個 叫 _PAGETOTAL 的變數, 非常好用
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
ericklin



註冊時間: 2007-11-14
文章: 107
來自: 台中市

第 11 樓

發表發表於: 星期三 三月 25, 2009 2:59 am    文章主題: 引言回覆

>>>>VFP 9 有一個 叫 _PAGETOTAL 的變數, 非常好用
在報表分組時 沒作用 ,當一個報表 _PAGETOTAL有20頁
但 A組共5頁 應該顯示 1/5 但 結果確顯示 1/20。
這是我的使用經驗 覺得vFP9.0 的 _PAGETOTAL 超級難用
水晶報表的 PAGETOTAL 就沒有這個問題---------供大家參考 或者有那位先進 能克服vFP9.0 的 _PAGETOTAL的使用缺點
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 12 樓

發表發表於: 星期五 三月 27, 2009 11:50 pm    文章主題: 引言回覆

ericklin 寫到:
>>>>VFP 9 有一個 叫 _PAGETOTAL 的變數, 非常好用
在報表分組時 沒作用 ,當一個報表 _PAGETOTAL有20頁
但 A組共5頁 應該顯示 1/5 但 結果確顯示 1/20。
這是我的使用經驗 覺得vFP9.0 的 _PAGETOTAL 超級難用
水晶報表的 PAGETOTAL 就沒有這個問題---------供大家參考 或者有那位先進 能克服vFP9.0 的 _PAGETOTAL的使用缺點


嗯, 如果多個 _gruoppagetotal 可能就很完美了吧
不過正常來說, 大多看總頁數吧
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 13 樓

發表發表於: 星期六 三月 28, 2009 9:15 am    文章主題: 引言回覆

_gruoppagetotal 的作法,可利用 VFP9 的 [二次計算] 的報表處理概念,有關資料可參考 VFP 的說明檔,但如何用看各人領悟了
_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
ericklin



註冊時間: 2007-11-14
文章: 107
來自: 台中市

第 14 樓

發表發表於: 星期五 十一月 19, 2010 5:05 pm    文章主題: 引言回覆

[二次計算] 的報表處理概念 ???
VFP 的說明檔 TwoPassProcess Property 有看沒有懂

有沒有人寫出 範例 可供參考
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
foxy



註冊時間: 2007-08-16
文章: 231
來自: 泰國

第 15 樓

發表發表於: 星期日 十一月 21, 2010 3:29 pm    文章主題: 引言回覆

ericklin 寫到:
>>>>VFP 9 有一個 叫 _PAGETOTAL 的變數, 非常好用
在報表分組時 沒作用 ,當一個報表 _PAGETOTAL有20頁
但 A組共5頁 應該顯示 1/5 但 結果確顯示 1/20。
這是我的使用經驗 覺得vFP9.0 的 _PAGETOTAL 超級難用
水晶報表的 PAGETOTAL 就沒有這個問題---------供大家參考 或者有那位先進 能克服vFP9.0 的 _PAGETOTAL的使用缺點


可以先把資料分組,再逐個印出, _PAGETOTAL就正常了. 例如:
SELECT DISTINCT customerCode from mytbl INTO CURSOR mydummy
SCAN
m.lcCode=customerCode
SELECT * FROM mytbl where customerCode=lcCode INTO CURSOR myGroup
REPORT FORM myFrx to Printer
ENSCAN

_________________
進銷存+生產製造+會計+員工薪資+CRM+POS零售+餐廳手機app+電商手機app+電商網站,物流系統. 正/簡體中文,英,日,泰,緬甸文. MS SQL Server + 前台 VFP + PHP 網站 + Flutter 手機 App, 都共享 MS SQL Server的資料. www.foxacc.com LINE: mike-lm
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作