|
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 文章: 4211 來自: 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 文章: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|