  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		chuander
 
 
  註冊時間: 2003-08-25 文章: 16
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 五月 12, 2005 4:28 pm    文章主題: 如何在分組列印時印總頁 | 
				     | 
			 
			
				
  | 
			 
			
				要列印二張進貨單
 
第一張進貨單明細有5筆
 
第二張進貨單明細有15筆。
 
 
列印紙張是中一刀,明細只能容納10筆。
 
 
問題來了
 
列印第一張進貨單時,第一頁(只有一頁)如何顯示頁數是【共1頁,第1頁】張。
 
 
列印第二張進貨單時,第一頁如何顯示頁數是【共2頁,第1頁】張。
 
列印第二張進貨單時,第二頁如何顯示頁數是【共2頁,第2頁】張。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		bin1x
 
 
  註冊時間: 2004-08-27 文章: 462
 
  第 2 樓
  | 
		
			
				 發表於: 星期四 五月 12, 2005 4:57 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我的作法
 
在彙集資料時可能彙成這樣
 
進貨單號,明細序號,進貨品名,數量,.........
 
使用report 依單號分組,不同單號跳頁 還是可用_pageno,_pepage
 
至於第二張進貨單寫個自訂函數在明細段結尾判定
 
是否大於10,送個eject 的命令(不知是否可行)
 
自訂函數是會執行啦,eject 沒使用過不知道
 
要我的話,我可能就這麼做了 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 3 樓
  | 
		
			
				 發表於: 星期四 五月 12, 2005 5:37 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				有3個方式可以知道總頁數
 
1.已知道一張單據可印10行, 目前要印的有15行, 所以 
 
public mtotalpage
 
mtotalpage = ceiling( 15 / 10 )
 
在 report 檔裡, 印出頁數資料    '【共'+ltrim(str(mtotalpage))+'頁,第'+ltrim(str(_pageno))+'頁】
 
 
2.執行一次report , 但不列印 , 記住 mtotalpage=_pageno , 這樣也可以知道總頁數.
 
3. 搜尋 總頁數 , 也有很多答案. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		chuander
 
 
  註冊時間: 2003-08-25 文章: 16
 
  第 4 樓
  | 
		
			
				 發表於: 星期五 五月 13, 2005 8:36 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				感謝bin1x與garfield兩位大大的回應。
 
 
不過兩位的做法是指只列印一張進貨單。在只列印一張情況下,
 
計算總頁數可以使用garfield兄的第2種作法。
 
 
但是我的意思是指連續列印二張進貨單。也就是在預覽的時候可以看見兩張進貨單(共三張)
 
 
在列印第一張進貨單時,總頁數為:1,目前頁數:1
 
如果使用garfield兄的第2種作法,那麼總頁數就不是我要的。
 
至於第1種作法不適合於我的報表 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 5 樓
  | 
		
			
				 發表於: 星期五 五月 13, 2005 8:48 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				爛方法:
 
step 1. SELECT 進貨單號碼,CEILING(COUNT(*)/10) AS TOL_PAGE FROM 進貨單 INTO CURSOR 進貨單頁數 GROUP BY 進貨單號碼
 
step 2. SET RELATION TO 進貨單號碼 INTO 進貨單頁數
 
step 3. 可以在報上拉一個 進貨單頁數.tol_page 當每張進貨單的總頁數.
 
 
這種方法是garfield 兄方法的變形,
 
一樣,有隱藏的限制條件,
 
等著被解答. _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		bin1x
 
 
  註冊時間: 2004-08-27 文章: 462
 
  第 6 樓
  | 
		
			
				 發表於: 星期五 五月 13, 2005 9:25 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				明細項目中可放1個row 或是多個row?
 
我是只放一個啦
 
換單號可由群組設定來解決
 
如果發生了一張單據超出一頁10筆的情況,怎麼做?
 
我是會寫個自訂函數當一個欄位(擺在最末端)來使用,用來判別以上情況
 
但實務我沒用過eject 所以不清楚,如果是dos的話
 
我就送個chr(12),絕對可行
 
至於中一刀的問題,就交給印表機紙張設定來解決 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		abcyei
 
 
  註冊時間: 2004-01-01 文章: 48
 
  第 7 樓
  | 
		
			
				 發表於: 星期三 五月 18, 2005 2:45 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我在製作一些比較特殊的報表時,都先將要印的資料(包含標題、頁數、小計、總計......)用程式寫到.dbf中,
 
再把這個.dbf印出來,這總做法有時候可能麻煩點,不過卻可以解決這些特殊的需求。 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		CPS0204
 
 
  註冊時間: 2014-08-24 文章: 482
 
  第 8 樓
  | 
		
			
				 發表於: 星期六 五月 28, 2016 8:36 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				上述先將5張的出貨單,每張先 除10,得到每張的頁數.....這不可行,因為,如果換印表機或電腦做業系統不同(win7,win10..等)都會差一點點,不一定是10筆!
 
我的做法是先用迴圈讓vfp自己算出就是本台電腦,接此印表機的每張總頁數,存在另一dbf.而不是固定除10筆!,雖會慢一點,但是每張出貨單總頁數會是準確的!
 
 
 
	 SELECT 0
 
      crea cursor head0 (v_no c(10),thispagetot n(4))
 
index on v_no tag od1
 
         **將要印的5張放入此head0 (省略不寫)
 
 
	DEFINE WINDOW WIN1 FROM 0,0 TO 5,60 COLOR G+
 
	MOVE WINDOW WIN1 CENTER
 
	ACTIVATE WINDOW WIN1
 
************
 
	SCAN
 
		VNO1=V_NO  &&出貨單號
 
		@1,5 SAY '計算總頁次中:'+M.VNO1 COLOR GR+
 
		SELECT TEMP11
 
		REPORT FORM  myreport1 FOR VNO1=V_NO  NOWAIT IN WINDOW WIN1
 
		P01=_PAGETOTAL
 
		SELECT HEAD0
 
		REPLACE thispagetot WITH P01
 
	ENDSCAN
 
***************
 
	DEACTIVATE WINDOW WWIN1
 
	RELEASE WINDOW WIN1
 
 
 
	
 
	SELECT  my_out  &&真正的出貨單檔
 
	SET RELA TO V_NO INTO  HEAD0   ADDI
 
 	GO TOP
 
	REPORT FORM myreport1  PREV | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		CCB2000
 
 
  註冊時間: 2009-03-25 文章: 97
 
  第 9 樓
  | 
		
			
				 發表於: 星期一 五月 30, 2016 8:59 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				通常,我都會先把報錶數據準備好,
 
然后report form ...,
 
報錶的設計盡可能簡單。
 
 
例如復雜的頁碼問題,
 
可以增加一個字段vpage N(10,0),
 
在運行報錶之前先填好vpage字段,
 
報錶中把vpage顯示齣來就可以。 _________________ VFP C++編譯軟件 (VFP C++ Compiler): http://www.baiyujia.com/vfpcompiler | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |