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

將繁體Crystal Report(*.RPT)檔轉成簡體問題

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
曹學琴



註冊時間: 2011-07-28
文章: 1


第 1 樓

發表發表於: 星期四 七月 28, 2011 2:13 pm    文章主題: 將繁體Crystal Report(*.RPT)檔轉成簡體問題 引言回覆

請問一下,我參考將繁體水晶報表轉呈簡體,我是想將報表內欄位的繁體中文轉為簡體,使用VFP 9.0,程式執行時
Local oCR As CRAXDRT.Application
Local oRpt As CRAXDRT.Report
會跳出錯誤訊息"必須為記憶體變數或陣列"
RegSvr32 載入craxdrt.dll後可找到CrystalRuntime.Application,到下一行又會出錯,錯誤訊息為:OLE IDispatch exception code 0 from Crystal report Active X Designer :INvalid TLV record...
再下一行出現ORPT is not an object,之後也會出現一些找不到物件、變數等等的錯誤訊息,想請教是出了什麼問題,如何修改呢?
我是參考這個文件:http://www.craigberntson.com/docs/integratingcr.pdf
希望大大們能幫忙解答,非常感謝 ~
代碼:
Set Safety Off
Set Exact On
If Rpl_unicode("D:\RPT\", "D:\RPTS\")
Messagebox("Transfer OK!!")
Endif
Set Safety On

Function Rpl_unicode
Para wic, wicnew

olebig=Createobject('Hokoy.WordKit')

*!* 函式名稱 參數形式 傳回值形式
*!* GBtoBig5 GB Big5
*!* BIG5toGB Big5 GB
*!* GBtoUnicode GB Unicode
*!* Big5toUnicode Big5 Unicode
*!* UnicodetoGB Unicode GB
*!* UnicodetoBig5 Unicode Big5
*!* SCtoTC Unicode簡體字 Unicode繁體字
*!* TCtoSC Unicode繁體字 Unicode簡體字

Local LLC,MTXT,CTMP, MRPL
Local oCR As CRAXDRT.Application
Local oRpt As CRAXDRT.Report

If Para()<>2
=Messagebox('error',48,'error of path!!')
Return .F.
Endif

getfilenum=Adir(getfiles,wic+'*.rpt')
For ii=1 To getfilenum
Wait Wind 'process Prog: '+getfiles[ii,1] At 8,35 Nowait
*-------------------
oCR = Createobject("CrystalRuntime.Application")
oRpt = oCR.OpenReport(wic+ getfiles[ii,1])
For jj=1 To oRpt.Areas.Count
For kk=1 To oRpt.Areas.Item(jj).Sections.Count
For ll=1 To oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Count
yy = oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Item(ll)
If yy.Kind=2 && text obj
v_objn =0
v_hasobj=.F. && has obj in text?
*---------------save text - obj to array --------------------
If yy.FieldElements.Count>0
v_objn=yy.FieldElements.Count
v_hasobj=.T.
Dimension txtobj(v_objn,3)
For pp=1 To v_objn
txtobj(pp,1)=yy.FieldElements.Item(pp).FieldDefinition
txtobj(pp,3)=yy.FieldElements.Item(pp).Font.bold && 儲存BOLD狀態
Endfor
Endif
*---------------save text - obj to array -------------------
m.MTXT=Alltrim(yy.Text)
m.MRPL=m.MTXT && for replace
If Len(m.MRPL) > 0 && 一次轉換繁體->簡體UNICODE
v_uncode = olebig.TCtoSC(m.MRPL)
m.MRPL = v_uncode
Endif
If v_hasobj
*---------------save text - obj to text --------------------
For pp=1 To v_objn
txtobj(pp,2)=Atcc('[]',m.MRPL,pp) && ?#93;為ADD用中文算字數所以用ATCC
Endfor
m.MRPL=Strtran(m.MRPL, '[]', '')
oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Item(ll).settext(m.MRPL)
For pp=1 To v_objn
yy.FieldElements.Add(txtobj(pp,2),txtobj(pp,1))
yy.FieldElements.Item(pp).Font.bold = txtobj(pp,3)
Endfor
*---------------save text - obj to text -------------------
Else
oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Item(ll).settext(m.MRPL)
Endif
oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Item(ll).Font.Name="SimSun"
If v_hasobj && bold 字型?#93;定後才有效
For pp=1 To v_objn
yy.FieldElements.Item(pp).Font.bold = txtobj(pp,3)
Endfor
Endif
Endif
If yy.Kind=1
oRpt.Areas.Item(jj).Sections.Item(kk).ReportObjects.Item(ll).Font.Name="SimSun"
Endif
Endfor
Endfor
Endfor
oRpt.Save(Trim(wicnew)+ Alltrim(getfiles[ii,1]))
Endfor
Return .T.
Endfunc
http://vfp.sunyear.com.tw/files/integratingcr_148.pdf

曹學琴 在 星期四 八月 04, 2011 10:23 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 2 樓

發表發表於: 星期五 七月 29, 2011 10:59 am    文章主題: 引言回覆

CRAXDRT.Application? 這怎麼來的
沒有其他的程式段了嗎
CRAXDRT到底有沒有Createobject???
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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