  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		popolon
 
 
  註冊時間: 2003-09-20 文章: 9
 
  第 1 樓
  | 
		
			
				 發表於: 星期三 九月 27, 2006 11:47 am    文章主題: 報表格式設定(中一刀設定) | 
				     | 
			 
			
				
  | 
			 
			
				中一刀設定是每個人的痛,每當換一台電腦或作業系統時之前所設定的報表格式就會跑掉,小弟我最近發現一各函數sys(1037)並加以利用設計後,完成了解決此問題,方式如下
 
1.此方式建議使用VFP 9.0版本
 
2.報表檔不可一併加入Porject中進行Bulid,須獨立出來
 
3.新增一空白之報表暫存檔Temp.frx  , Temp.frt 
 
   此暫存檔是用來設定報表格式互相設定用
 
4.新增一個Table來記錄各報表之資訊,檔名為RepprtList.dbf格式如下
 
   Name                  Type              Width        說明
 
 -------------------------------------------------------------
 
  ReportName         Character       10            報表檔名
 
  ReportFormat       Character       10            報表格式
 
 ********************************************
 
  建立完成後則將每個報表檔的檔名與格式輸入此Table中
 
   例如: 
 
  Sales1  中一刀
 
  Sales2  A5
 
  ********
 
5.請自行設計一個Form用來設定報表格式,內容可為
 
   Combo Box  >> 報表格式
 
   Command Button  >> 確定按鈕
 
6.當使用者選定報表格式後按下確定按鈕後之程式
 
    (1).至RepprtList.dbf中篩選出符合所選取的報表格式
 
           select RepprtList.* from RepprtList where alltrim(RepprtList.ReportFormat) = alltrim(Combo Box.displayvalue) into cursor RepFor_Temp
 
    (2).判斷是否有符合之資料ㄝ,若符合則執行之
 
           select RepFor_Temp
 
           if _tally > 0
 
         select 0
 
         use temp.frx exclusive
 
         format_no = sys(1037,1)
 
         = format_no
 
         if format_no = '1'  
 
            select temp
 
            go top
 
            select 0
 
            create cursor report_temp (expr1 m(10),tag1 m(10),tag2 m(10))
 
            select  report_temp 
 
            append blank
 
            replace report_temp.expr1 with temp.expr
 
            replace report_temp.tag1 with temp.tag
 
            replace report_temp.tag2  with temp.tag2
 
            select temp
 
            use
 
            select RepFor_Temp
 
            go top
 
            do while !eof()
 
                 ReportFileName = alltrim(RepFor_Temp.ReportName)
 
                 if file(ReportFileName + '.frx') = .T.
 
                    try
 
                        select 0
 
                        use ReportFileName + '.frx' exclusive
 
                        go top
 
                        replace &ReportFileName..expr with report_temp.expr
 
                        replace &ReportFileName..tag with report_temp.tag
 
                        replace &ReportFileName..tag2 with report_temp.tag2
 
                        select &ReportFileName
 
                        use
 
                     catch 
 
                            =messagebox('報表已被開啟,請關閉使用中之報表後再做格式設定!',0+64,'提示訊息視窗')
 
                     endtry
 
                 endif
 
                 select RepFor_Temp
 
                 skip
 
            enddo
 
         endif
 
      endif
 
********
 
7.報表檔之.frx可用use開啟,由其中較重要的欄位為 
 
    expr M 10 表達式
 
    tag M 10 (當該記錄為記錄環境的記錄時,該字段儲存打印信息等;記錄數据庫時,儲存數据庫名稱)
 
   tag2 M 10 當該記錄為記錄環境的記錄時,該字段儲存打印控制等  
 
**************
 
以上是小弟所以想出來的辦法,而且已經過驗證的確可行(本公司已在使用此方法),若有需要的朋友請自行參考研究,謝謝 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 2 樓
  | 
		
			
				 發表於: 星期三 九月 27, 2006 12:44 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				可是我 VFP 3.0 就這樣用了說.  ^_^|||
 
連什麼 SYS(1037)也不需要耶~~ _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		popolon
 
 
  註冊時間: 2003-09-20 文章: 9
 
  第 3 樓
  | 
		
			
				 發表於: 星期三 九月 27, 2006 4:51 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				syntech大大
 
別這樣嗎!
 
這可是小弟我好不容易想出來的
 
想說分享給大家一下啦
 
給點鼓勵啦^^
 
還有您說不需要用SYS(1037)
 
那怎麼把印表設定環境存起來阿 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		syntech
 
 
  註冊時間: 2003-05-16 文章: 4252 來自: Taipei,Taiwan
  第 4 樓
  | 
		
			
				 發表於: 星期四 九月 28, 2006 10:45 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				因為 vfp 8 以前的 SYS(1037) 本身就是一個 bug !!  XD
 
明明說是 "Page dialog box "
 
結果叫出來是"Print dialog box "  Orz
 
VFP 9 叫出來才是"Page dialog box "  
 
 
請使用者把半張設成預設紙張,
 
然後利用 PRTINFO() 的傳回值寫到 EXPR 欄位.
 
 
這樣做從VFP3~VFP9通通都可以.  (^_^)=b _________________ 如果公司有下列困擾:
 
1. 找不到便宜,快速,簡易的 生產排程軟體
 
2. 不知道如何快速排定 採購計劃
 
3. 成本抓不準,自己算比軟體算有用
 
4. 想學習系統規劃,想找系統架構的顧問
 
 
請聯絡我們,也許我們幫得上忙 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |