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

報表格式設定(中一刀設定)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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
文章: 4211
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期三 九月 27, 2006 12:44 pm    文章主題: 引言回覆

可是我 VFP 3.0 就這樣用了說. ^_^|||
連什麼 SYS(1037)也不需要耶~~

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
popolon



註冊時間: 2003-09-20
文章: 9


第 3 樓

發表發表於: 星期三 九月 27, 2006 4:51 pm    文章主題: 引言回覆

syntech大大
別這樣嗎!
這可是小弟我好不容易想出來的
想說分享給大家一下啦
給點鼓勵啦^^
還有您說不需要用SYS(1037)
那怎麼把印表設定環境存起來阿
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: 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. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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