|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
johnnytw
註冊時間: 2013-07-28 文章: 21
第 1 樓
|
發表於: 星期四 十二月 21, 2017 4:40 pm 文章主題: 請教:如何在VFP9的報表中將數字轉大寫 |
|
|
查看之前的文章有人討論到數字轉大寫的資料,但跟我要的不同
我想在報表裡將數字轉成有"萬""仟""佰""拾"的數字
不知程式碼要怎麼寫,要放在報表的哪個位置
我的資料表欄位名稱是table.金額,要在報表裡將這個欄位在列印時轉成大寫
我的數字最多不會超過6位數
有試過用 CHRTRANC()的方式,但轉出來的不會有"萬""仟""佰""拾"
還有什麼函數可以用嗎?
我的報表有二個部份,一個是總表,一個是個別的申請表
如果不行的話,我大概會用笨方法,寫一個程式去轉換,然後一筆一筆填在資料表的另一個欄位裡 |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2158
第 2 樓
|
發表於: 星期四 十二月 21, 2017 6:28 pm 文章主題: |
|
|
把報表裡原來的欄位改成一個函數
tranbig( 你的欄位 ) 即可.
代碼: |
func tranbig
lpara mm
MM=chrtranc(tran(mm) , '0123456789' , '零壹貳參肆伍陸柒捌玖' )
LOCAL mpos,mret
mret="XX萬XX仟XX佰XX拾XX"
DO WHILE .t.
mpos = RAT('XX' , mret)
IF mpos>0
IF LEN(mm)>0
mret = STUFF(mret,mpos,2,RIGHT(mm,2))
mm = LEFT(mm,LEN(mm)-2)
else
mret = STUFF(mret,mpos,2,' ')
ENDIF
ELSE
exit
endif
ENDDO
RETURN mret
|
_________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
johnnytw
註冊時間: 2013-07-28 文章: 21
第 3 樓
|
發表於: 星期四 十二月 21, 2017 10:48 pm 文章主題: |
|
|
謝謝您的回答
我明天到公司試試
目前我的作法是寫一個程式一筆一筆去改
然後填到一個欄位裡
問一個笨問題,您的這段程式碼我要放在報表的哪一個區塊? |
|
回頂端 |
|
|
garfield Site Admin
註冊時間: 2003-01-30 文章: 2158
第 4 樓
|
發表於: 星期四 十二月 21, 2017 11:23 pm 文章主題: |
|
|
放在你的主程式裡或set proc to ??? 裡
也可以單獨建一個檔名為tranbig.prg
裡面內容就是代碼裡的內容,不過你要在去掉func tranbig 這一行才行. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
|
johnnytw
註冊時間: 2013-07-28 文章: 21
第 5 樓
|
發表於: 星期一 十二月 25, 2017 2:15 pm 文章主題: |
|
|
了解,謝謝,我試看看,有問題再跟您請教. |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|